commit bash-20040728 snapshot
authorChet Ramey <chet.ramey@case.edu>
Sat, 3 Dec 2011 18:33:39 +0000 (13:33 -0500)
committerChet Ramey <chet.ramey@case.edu>
Sat, 3 Dec 2011 18:33:39 +0000 (13:33 -0500)
81 files changed:
CWRU/CWRU.chlog
CWRU/changelog [changed from file to symlink]
CWRU/old/set.def.save [new file with mode: 0644]
CWRU/save/unwind_prot.h.save [new file with mode: 0644]
MANIFEST
array.c
autom4te.cache/output.0
autom4te.cache/requests
autom4te.cache/traces.0
bashline.c
builtins/evalfile.c
builtins/reserved.def
doc/FAQ-2.05b [new file with mode: 0644]
doc/FAQ.orig [new file with mode: 0644]
doc/FAQ.save [new file with mode: 0644]
doc/bash.1.orig [new file with mode: 0644]
doc/bash.html
doc/bash.pdf
doc/bash.ps
doc/bashref.dvi
doc/bashref.html
doc/bashref.log
doc/bashref.pdf
doc/bashref.ps
doc/bashref.texi.orig [new file with mode: 0644]
doc/builtins.0
doc/builtins.ps
doc/mkinstall-tmp [new file with mode: 0755]
doc/rbash.0
doc/rbash.ps
doc/texinfo.tex [changed from file to symlink]
examples/scripts/adventure.sh.save1 [new file with mode: 0755]
externs.h
general.c
include/memalloc.h.save [new file with mode: 0644]
lib/malloc/malloc.c.save [new file with mode: 0644]
lib/readline/ansi_stdlib.h [changed from file to symlink]
lib/readline/display.c
lib/readline/display.c.orig [new file with mode: 0644]
lib/readline/doc/fdl.texi [changed from file to symlink]
lib/readline/doc/history.dvi
lib/readline/doc/history.html
lib/readline/doc/history.info
lib/readline/doc/history.log
lib/readline/doc/history.ps
lib/readline/doc/readline.dvi
lib/readline/doc/readline.html
lib/readline/doc/readline.info
lib/readline/doc/readline.ps
lib/readline/doc/rlman.aux
lib/readline/doc/rlman.cp
lib/readline/doc/rlman.cps
lib/readline/doc/rlman.fn
lib/readline/doc/rlman.fns
lib/readline/doc/rlman.log
lib/readline/doc/rlman.toc
lib/readline/doc/rluserman.dvi
lib/readline/doc/rluserman.fn
lib/readline/doc/rluserman.fns
lib/readline/doc/rluserman.html
lib/readline/doc/rluserman.info
lib/readline/doc/rluserman.log
lib/readline/doc/rluserman.ps
lib/readline/posixdir.h [changed from file to symlink]
lib/readline/posixjmp.h [changed from file to symlink]
lib/readline/posixstat.h [changed from file to symlink]
lib/readline/tilde.c [changed from file to symlink]
lib/readline/tilde.h [changed from file to symlink]
make_cmd.c
pathnames.h [deleted file]
po/bash.po.orig [new file with mode: 0644]
subst.c.orig [new file with mode: 0644]
support/mkconffiles [changed mode: 0755->0644]
support/mkversion.sh [changed mode: 0755->0644]
support/rlvers.sh [changed mode: 0755->0644]
tests/? [deleted file]
tests/cprint.right.save1 [new file with mode: 0644]
tests/history.tests.save [new file with mode: 0644]
tests/misc/regress/log.orig [new file with mode: 0644]
tests/misc/regress/shx.orig [new file with mode: 0644]
tests/run-histexpand.debug [new file with mode: 0644]

index f6ce0b9..3268ef2 100644 (file)
@@ -9638,3 +9638,40 @@ flags.c
          error messages
 
 [bash-3.0 frozen]
+
+                                  7/27
+                                  ----
+doc/Makefile.in
+       - small fixes
+
+[bash-3.0-released]
+
+                                  7/28
+                                  ----
+array.c
+       - in array_insert(), make sure the value to be added is non-NULL before
+         calling savestring() on it
+
+builtins/reserved.def
+       - fix description of `CDPATH'
+
+lib/readline/display.c
+       - when expanding a prompt that spans multiple lines with embedded
+         newlines, set prompt_physical_chars from the portion after the
+         final newline, not the preceding portion.  Bug reported by
+         "Ralf S. Engelschall" <rse@engelschall.com>
+
+make_cmd.c
+       - explicitly declare `lineno' in function prologue for make_case_command
+
+builtins/evalfile.c
+       - include `trap.h' for declaration for run_return_trap
+
+bashline.c
+       - fix a `return' without a value in enable_hostname_completion
+
+general.c
+       - include test.h for extern declaration for test_eaccess
+
+externs.h
+       - add declaration for zcatfd
deleted file mode 100644 (file)
index f6ce0b9249489168ed2535b1871725f97477eb5a..0000000000000000000000000000000000000000
+++ /dev/null
-                                4/9/2001
-                                --------
-[bash-2.05 released]
-
-                                  4/10
-                                  ----
-redir.c
-       - check return value of fclose() in write_here_document() for error
-         returns; don't just rely on fwrite() failing
-
-support/bashbug.sh
-       - set TMPDIR to /tmp if it's null or unset
-       - use $TMPDIR in the TEMP tempfile name template
-       - fixed the call to `mktemp', if it exists, to make it more portable
-
-jobs.c
-       - if WCONTINUED is not defined, define it to 0 and add a define for
-         WIFCONTINUED(wstatus) which expands to 0
-       - add WCONTINUED to the flags passed to waitpid(2) in waitchld()
-       - don't increment children_exited if waitpid's status is WIFCONTINUED,
-         since we don't want to call a SIGCHLD trap handler in this case
-       - in waitchld(), we set child->running to 1 if WIFCONTINUED(status)
-         is non-zero
-       - make sure pretty_print_job doesn't check for the core dump bit if
-         the process has been continued; it's only valid if the job is dead
-       - in set_job_status_and_cleanup, set the job to JRUNNING if job_state
-         is non-zero and the job was previously marked as JSTOPPED
-
-configure.in
-       - add -DBROKEN_DIRENT_D_INO to interix LOCAL_CFLAGS
-
-lib/glob/glob.c
-       - if BROKEN_DIRENT_D_INO is defined, define REAL_DIR_ENTRY to 1
-
-jobs.c
-       - in kill_pid, we only need to block and unblock SIGCHLD if the
-         `group' argument is non-zero, since otherwise we just call `kill'
-         on the pid argument
-
-version.c
-       - update copyright date to 2001
-
-bashline.c
-       - prog_complete_return needs to take a `const char *' as its first
-         argument
-       - history_completion_generator needs to take a `const char *' as
-         its first argument, and `text' needs to be a `const char *'
-
-                                  4/11
-                                  ----
-redir.c
-       - fixed a weird typo in redir_special_open, case RF_DEVFD, added
-         call to all_digits before call to legal_number
-       - fixed do_redirection_internal to call legal_number instead of atol(3)
-         when translating r_duplicating_{in,out}put_word, so it handles
-         overflow better
-       - produce an error message in redirection_error for out-of-range
-         file descriptors
-       - change allocation strategy in redirection_error so we don't have to
-         malloc scratch memory if redirection_expand() fails
-
-jobs.h
-       - added defines for `running' member of a struct process
-
-general.c
-       - fix legal_number to return 0 when strtol(3) reports overflow or
-         underflow
-
-parse.y
-       - changed read_token_word to call legal_number instead of atoi(3)
-
-input.c
-       - return -1/EBADF from close_buffered_fd if fd is < 0
-
-command.h
-       - fixed bogus comment about IS_DESCRIPTOR in description of the
-         REDIRECTEE struct
-
-print_cmd.c
-       - change cprintf's 'd' modifier code to display negative numbers as
-         an out-of-range value.  We can do this only because the only use
-         of %d is to output file descriptor numbers in redirections
-
-support/mksignames.c
-       - need to include config.h to get a possible value for
-         UNUSABLE_RT_SIGNALS
-
-                                  4/16
-                                  ----
-lib/readline/doc/rluser.texinfo
-       - corrected a small error in one description of M-DEL
-
-                                  4/17
-                                  ----
-stringlib.c
-       - need to initialize `ind' before calls to RESIZE_MALLOCED_BUFFER
-         in strcreplace()
-
-support/bashversion.c
-       - new file, prints bash version information
-
-Makefile.in
-       - rules for building bashversion and linking it to version.o
-
-                                  4/24
-                                  ----
-conftypes.h
-       - new file with HOSTTYPE, OSTYPE, MACHTYPE, etc. defines from
-         variables.h
-
-variables.h, version.c
-       - include conftypes.h
-
-patchlevel.h
-       - new file, contains define for PATCHLEVEL.  Doing away with the old
-         scheme of having the information in configure.in
-
-version.c
-       - include patchlevel.h
-
-Makefile.in
-       - run bashversion -p to find patch level rather than have configure
-         substitute in a value
-       - pass -S ${top_srcdir} to support/mkversion.sh
-
-support/mkversion.sh
-       - don't put PATCHLEVEL define into version.h, but accept and ignore
-         a -p option
-       - take a new -S srcdir option
-       - find the patch level by parsing it out of patchlevel.h
-
-configure.in
-       - hard-code BASHVERS assignment instead of reading it from a file
-       - remove BASHPATCH; don't substitute it
-
-_distribution,_patchlevel
-       - removed
-
-                                  4/26
-                                  ----
-shell.c
-       - call init_noninteractive() in open_shell_script if forced_interactive
-         is non-zero (the shell was started with -i) and fd_is_tty is 0
-         (the script file is a real file, not something like /dev/stdin),
-         since it wasn't done earlier
-
-builtins/printf.def
-       - change for POSIX.2 compliance when conversion errors are encountered
-         when processing %d, %u, and floating point conversion operators
-         (print a warning message, return the value accumulated at the time
-         of the error -- which is always 0 -- and exit with a non-zero status)
-
-command.h
-       - added CMD_COMMAND_BUILTIN for use by the `command' builtin and the
-         code in execute_cmd.c
-
-builtins/command.def
-       - add CMD_COMMAND_BUILTIN to the created command's flags
-
-                                   5/1
-                                   ---
-configure.in
-       - add call to AC_C_CONST to test `const' compiler behavior
-       - add call to AC_C_INLINE to test `inline' compiler behavior
-       - add call to AC_C_STRINGIZE to test cpp #x stringizing operator
-
-config.h.in
-       - add `#undef const' for configure to substitute
-       - add `#undef inline' for configure to substitute
-       - add `#undef HAVE_STRINGIZE' for configure to substitute
-
-include/stdc.h
-       - remove code that defines or undefines `const' and `inline'
-       - change the __STRING macro to be defined depending on the value
-         of HAVE_STRINGIZE
-
-lib/malloc/malloc.c
-       - change the __STRING macro to be defined depending on the value
-         of HAVE_STRINGIZE
-
-lib/readline/{readline,rlprivate}.h
-       - moved rl_get_termcap to readline.h, making it a public function
-
-lib/readline/readline.h
-       - new #define, RL_READLINE_VERSION, hex-encoded library version
-         number, currently set to 0x0402
-       - new public int variable, rl_readline_version
-
-lib/readline/readline.c
-       - #define RL_READLINE_VERSION if it is not already defined (which it
-         should be in readline.h)
-       - initialize rl_readline_version to RL_READLINE_VERSION
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_get_termcap
-       - documented rl_readline_version
-
-jobs.c
-       - job_exit_status should return an int, not a WAIT (undetected
-         before because on most POSIX-like systems a WAIT is really an int)
-
-builtins/evalfile.c
-       - added FEVAL_REGFILE (file must be a regular file) to accepted
-          _evalfile flags
-       - fc_execute_file() adds FEVAL_REGFILE to _evalfile flags.  This
-         means that startup files and files read with `.' no longer need
-         to be regular files
-
-                                   5/2
-                                   ---
-
-lib/termcap/Makefile.in
-       - fix target for installed termcap library (normally unused)
-
-lib/tilde/Makefile.in
-       - fix install target to install in $(libdir) (normally unused)
-
-Makefile.in
-       - don't make $(man3dir) since there's nothing installed there
-
-Makefile.in,doc/Makefile.in
-       - change `man1ext' to `.1', `man3ext' to `.3'
-       - change appropriate install targets to use new values of man[13]ext
-       - use `test ...' instead of `[...]'
-       - add support for DESTDIR root installation prefix, for package
-         building (installdirs, install, install-strip, uninstall targets)
-
-builtins/common.c
-       - new function int get_exitstat(WORD_LIST *list) returns an eight-bit
-         exit status value for use in return, exit, logout builtins
-
-builtins/common.h
-       - extern declaration for get_exitstat()
-
-builtins/{exit,return}.def
-       - call get_exitstat where appropriate
-
-builtins/printf.def
-       - add support for "'" flag character as posix 1003.2-200x d6 says
-       - fix core dump when user-supplied field width or precision is 0
-       - fix to printstr() to handle zero-length precision with `%b' format
-         specifier (printf '%.0b-%.0s\n' foo bar)
-       - fix to printstr() to treat a negative field width as a positive
-         field width with left-justification
-       - fix to mklong to avoid static buffers, which can always be overrun
-         by someone sufficiently motivated
-
-bashline.c
-       - change var in add_host_name to type `size_t' for passing to xrealloc
-
-                                   5/3
-                                   ---
-execute_cmd.c
-       - change restore_signal_mask to accept a sigset_t *, since a sigset_t
-         may not fit into a pointer, change call
-
-unwind_prot.c
-       - use a union UWP in restore_variable when restoring a variable whose
-         size is the same as sizeof(int), the reverse of the method used to
-         store it in unwind_protect_int
-
-builtins/printf.def
-       - use a #define LENMODS containing the length modifiers instead of
-         testing against each possible modifier character, save any mod
-         character found
-       - add support for ISO C99 length specifiers `j', `t', and `z'
-       - if `L' modifier is supplied with a floating point conversion char,
-         pass a `long double' to printf if HAVE_LONG_DOUBLE is defined
-
-configure.in,config.h.in
-       - call AC_C_LONG_DOUBLE to check for `long double'; define
-         HAVE_LONG_DOUBLE if supported
-
-bashline.c
-       - fix an inadvertantly-unclosed comment in attempt_shell_completion
-       - make set_saved_history return a value
-       - make dynamic_complete_history return a useful value
-
-{make_cmd,execute_cmd,shell,subst,trap,variables,input,unwind_prot,test,
-pcomplete}.c
-       - removed some declared-but-unused variables
-
-builtins/{cd,enable,fc,set,setattr,type,umask,printf,complete}.def
-       - removed some declared-but-unused variables
-
-lib/sh/{zread,netopen}.c
-       - removed some declared-but-unused variables
-
-execute_cmd.c
-       - in execute_arith_command, use a long variable to hold the result
-         of evalexp(), since that's what it returns
-
-builtins/evalstring.c
-       - make cat_file return -1 on a read or write error
-
-lib/sh/stringlib.c
-       - make merge_stringlists() return the right value
-
-                                   5/7
-                                   ---
-pcomplete.c
-       - remove typo that caused empty declaration (;;)
-
-parse.y
-       - fix yyerror() to accept a single string argument; fix callers
-
-trap.c
-       - cast pointer to long instead of int when printing message with
-         internal_warning() in run_pending_traps()
-
-subst.c
-       - fix process_substitute to handle stdin being closed
-
-test.c
-       - change `while' to `if' in and() and or(), since the loop isn't
-         actually performed -- there's an unconditional `return' in the
-         loop body
-       - check for integer overflow of arguments to `-t'
-
-lib/sh/netopen.c
-       - change _getserv() to reject negative port/service numbers
-
-expr.c
-       - fix strlong() to not convert the base specification from long to
-         int before checking for overflow, since truncation on machines
-         where sizeof(int) != sizeof(long) may mask errors
-
-builtins/{jobs,kill,wait}.def
-       - use legal_number instead of atoi when converting strings to pid_t;
-         check for numeric overflow
-
-input.c
-       - fix for cygwin in b_fill_buffer -- off-by-one error when checking
-         buffer for \r\n termination
-
-general.h
-       - new #define INT_STRLEN_BOUND(t), computes max length of string
-         representing integer value of type T, possibly including a sign
-         character
-       - include <limits.h> if it's present
-
-{execute_cmd,findcmd,test}.c
-       - don't include <limits.h>, since general.h does it now
-
-{execute_cmd,lib/sh/itos,pcomplete,print_cmd,subst,variables}.c
-       - use INT_STRLEN_BOUND instead of static array sizes when converting
-         various strings to integer values
-
-shell.h
-       - struct fd_bitmap now uses an `int' size, since it's bounded by
-         the number of file descriptors, which must fit into an `int'
-
-execute_cmd.c
-       - FD_BITMAP_DEFAULT_SIZE is now 32, not 32L
-       - new_fd_bitmap takes an `int' size parameter, not a `long'
-
-execute_cmd.h
-       - change prototype for new_fd_bitmap()
-
-test.c
-       - fix test_stat to check for overflow when parsing the integer file
-         descriptor number; return ENOENT instead of EBADF for files that
-         are not open
-
-hashlib.c
-       - don't discard the upper 32 bits of the random value, if present
-
-lib/readline/shell.c
-       - use the same INT_STRLEN_BOUND mechanism to decide how much space to
-         allocated in sh_set_lines_and_columns
-
-                                   5/8
-                                   ---
-aclocal.m4
-       - add check for libtinfo (termcap-specific portion of ncurses-5.2) to
-         BASH_CHECK_LIB_TERMCAP
-       - new macro, RL_LIB_READLINE_VERSION, checks version of installed
-         readline library and (optionally) writes version #defines to
-         config.h.  Bash doesn't use the version defines
-
-configure.in
-       - call RL_LIB_READLINE_VERSION instead of support/rlvers.sh
-
-execute_cmd.c
-       - fix execute_shell_script and the WHITECHAR and STRINGCHAR macros
-         to check array bounds before indexing into the sample string
-
-unwind_prot.[ch]
-       - import new versions submitted by Paul Eggert <eggert@twinsun.com>
-         with a couple of changes for backwards compatibility, so the rest
-         of the source doesn't need to be changed yet
-
-jobs.c
-       - use unwind_protect_var on last_made_pid in run_sigchld_trap
-
-builtins/bind.def
-       - use unwind_protect_var on rl_outstream
-
-general.c
-       - rework print_rlimtype to use INT_STRLEN_BOUND and handle the
-         most negative number correctly
-
-expr.c
-       - `tokval' should have been a `long', since all arithmetic is done
-         as longs
-
-builtins/history.def
-       - consolidate tests for valid history position in one block to
-         avoid duplicate code and strings
-
-builtins/ulimit.def
-       - fix check for overflow when setting limit to work when int is 32
-         bits and RLIMTYPE is 64
-
-lib/sh/tmpfile.c
-       - don't truncate the result of time(3) to int; just use time_t,
-         since it's being assigned to an `unsigned long'
-
-mailcheck.c
-       - use legal_number instead of atoi in time_to_check_mail() to catch
-         more numeric errors; consolidate error checking in one block
-       - last_time_mail_checked should be a time_t
-
-                                   5/9
-                                   ---
-builtins/set.def
-       - recognize `set [-+]o nolog' if HISTORY is defined
-
-bashline.c
-       - new variable `dont_save_function_defs', set by `set -o nolog';
-         currently ignored
-
-command.h
-       - the `dest' member of a REDIRECTEE is now an `int'
-
-parse.y,redir.c
-       - changed uses of `redir.test' (where redir is a REDIRECTEE) since
-         it's now an int
-
-lib/readline/rlstdc.h
-       - don't mess around with `const', rely on configure to supply a
-         proper definition if the compiler doesn't support it
-
-lib/tilde/tilde.h
-       - include <config.h> if HAVE_CONFIG_H is defined
-       - don't mess around with `const', rely on configure
-
-builtins/shopt.def
-       - new read-only `shopt' option, login_shell, non-zero if shell is a
-         login shell (as decided by shell.c)
-       - new function set_login_shell(), sets shopt private value of
-         login_shell
-
-builtins/common.h
-       - new extern declaration for set_login_shell
-
-shell.c
-       - call set_login_shell after setting value of login_shell (in
-         main() and set_shell_name())
-
-parse.y
-       - added new `\A' prompt string escape sequence:  time in 24-hour
-         HH:MM format
-
-configure.in, config.h.in
-       - check for <grp.h>, define HAVE_GRP_H if found
-
-builtins/complete.def
-       - add new `-A group/-g' option to complete group names
-
-pcomplete.h
-       - new define for CA_GROUP, used with group name completion
-
-pcomplete.c
-       - add code to support CA_GROUP group name completion
-
-bashline.c
-       - new function, bash_groupname_completion_function(), supports
-         programmable completion of group names
-
-bashline.h
-       - extern declaration for bash_groupname_completion_function
-
-lib/readline/bind.c
-       - new inputrc variable, `match-hidden-files', controls completion
-         matching files beginning with a `.' (on Unix)
-
-lib/readline/complete.c
-       - new variable, _rl_match_hidden_files, mirrors `match-hidden-files'
-         inputrc variable
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_match_hidden_files
-
-builtins/hash.def
-       - new `-t' option to list hash values for each filename argument
-
-builtins/read.def
-       - alarm(3) takes an `unsigned int' argument, not int
-       - check for arithmetic overflow with -t and -n options
-
-input.c
-       - check for read error before doing \r\n translation on cygwin in
-         b_fill_buffer
-       - reset bp->b_used to 0 instead of leaving it at -1 on read error
-         in b_fill_buffer
-
-builtins/shopt.def
-       - new functions, shopt_setopt(name, mode) and
-         shopt_listopt(name, mode) to give the rest of the shell an easy
-         interface
-
-builtins/common.h
-       - extern declarations for shopt_setopt and shopt_listopt
-
-shell.c
-       - new invocation options -O and +O, to list or set/unset shopt
-         options like +o/-o sets and unsets `set -o' options
-
-doc/{bash.1,bashref.texi}
-       - document `set -o nolog'
-       - document `login_shell' shopt option
-       - document new `\A' prompt string escape sequence
-       - document new `-t' option to `hash'
-       - document new `[+-]O' invocation option
-
-doc/bashref.texi
-       - add text to `Invoking Bash' section defining a login shell; text
-         taken from man page
-
-doc/bash.1, lib/readline/doc/rluser.texinfo
-       - documented new complete/compgen `-A group/-g' option
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
-       - documented new `match-hidden-files' inputrc variable
-
-                                  5/10
-                                  ----
-configure.in
-       - fix AC_CHECK_PROG(ar, ...)
-       - add AC_CHECK_TYPE for ssize_t
-
-config.h.in
-       - new #undef for ssize_t
-
-lib/sh/zread.c
-       - int -> ssize_t fixes to mirror modern declarations of read and write
-       - the `off' variable in zsyncfd should be an off_t since it computes
-         a file offset
-       - the local buffer `lbuf' is now char, since it's not nice to pass
-         unsigned char * to read(2), and the values from it are assigned to
-         a char anyway
-       - lind and lused are now size_t, since they index into a buffer
-       - set lused to 0 on read error
-
-lib/sh/zwrite.c
-       - change second argument to type `char *', since ISO C says you have
-         to pass a `char *' to `write'
-
-externs.h
-       - fix extern declarations of zread, zread1, zreadc, and zwrite
-       - prototype extern declaration of qsort_string_compare
-       - add extern declaration for history_delimiting_chars() from parse.y
-
-input.h
-       - b_used and b_inputp members ofr struct BSTREAM are now size_t
-
-builtins/evalstring.c
-       - the number of chars read with zread in cat_file should be assigned
-         to a variable of type ssize_t
-
-input.c
-       - the number of chars read with zread in b_fill_buffer should be
-         assigned to a variable of type ssize_t
-       - `localbuf' is now type char[], since POSIX says you shouldn't pass
-         unsigned char * to read(2)
-       - in getc_with_restart(), use a variable of type unsigned char to
-         get a value from the local buffer and return it
-       - in ungetc_with_restart, explicitly return the character arg passed
-         to avoid relying on localbuf being unsigned char
-
-subst.c
-       - the number of chars read with zread in read_comsub should be
-         assigned to a variable of type ssize_t
-
-mksyntax.c
-       - instead of casting to unsigned char * in addcstr, use a variable
-         of type unsigned char and let the compiler do the work
-
-parse.y
-       - instead of casting to unsigned char * in yy_readline_get, use a
-         variable of type unsigned char and let the compiler do the work
-       - ditto for yy_string_get and shell_getc (cast to unsigned char)
-
-subst.c
-       - instead of casting to unsigned char when assigning to ifscmap in
-         expand_word_internal, use a variable of type unsigned char and
-         let the compiler do the work
-
-lib/sh/strtrans.c
-       - instead of casting to unsigned char in ansic_quote, use a variable
-         of type unsigned char and let the compiler do the work
-
-builtins/evalstring.c
-       - remove extern declarations for zwrite and run_trap_cleanup; they're
-         in externs.h
-       - prototype cat_file forward declaration
-
-Makefile.in
-       - remove -I$(includedir) from INCLUDES and SUBDIR_INCLUDES
-
-aclocal.m4
-       - change RL_LIB_READLINE_VERSION to set RL_PREFIX, RL_LIBDIR,
-         and RL_INCLUDEDIR to what it used to test the installed readline
-         library version for use by the caller
-       - change RL_LIB_READLINE_VERSION to not compute ac_cv_rl_prefix if
-         the caller has already assigned it a value
-       - rename _rl_prefix -> ac_cv_rl_prefix, _rl_libdir -> ac_cv_rl_libdir,
-         _rl_includedir -> ac_cv_rl_includedir
-
-configure.in
-       - change testing of whether to use the value of
-         $opt_with_installed_readline to be != no, to allow the user to
-         specify a prefix where the installed readline library may be found
-       - if --with-installed-readline=PREFIX is supplied, set ac_cv_rl_prefix
-         to PREFIX before calling RL_LIB_READLINE_VERSION
-       - if --with-installed-readline[=PREFIX] is supplied, don't set
-         RL_LIBDIR and RL_INCLUDEDIR; let RL_LIB_READLINE_VERSION take care
-         of it, set RL_INCLUDE=-I${RL_INCLUDEDIR}
-       - if --with-installed-readline[=PREFIX] is supplied, and we're
-         linking with the history library, assign $RL_LIBDIR to HIST_LIBDIR
-         so we use the same version of the installed readline and history
-         libraries
-
-Makefile.in, builtins/Makefile.in
-       - have configure substitute RL_INCLUDEDIR, set RL_INCLUDEDIR variable
-
-doc/bashref.texi
-       - updated description of --with-installed-readline configure option 
-
-general.c
-       - moved QSFUNC typedef here from builtins/common.c
-
-{alias,bashline,variables,lib/sh/stringvec}.c
-       - cast fourth argument to qsort to (QSFUNC *)
-
-alias.c
-       - prototype forward declaration of qsort_alias_compare
-
-bashhist.c
-       - include <glob/glob.h> for extern declaration of glob_pattern_p
-       - remove extern declaration of history_delimiting_chars; it's now
-         in externs.h
-       - prototype forward declarations of histignore_item_func,
-         maybe_add_history, and bash_add_history
-
-bracecomp.c
-       - remove extern declaration for sh_backslash_quote; it's in externs.h
-
-braces.c
-       - remove extern declaration for extract_command_subst; it's in subst.h
-       - prototype forward declarations for expand_amble, array_concat, and
-         brace_gobbler
-
-error.c
-       - prototype extern declaration of give_terminal_to, fix bad call
-
-{execute_cmd,expr,findcmd,jobs,mailcheck,nojobs,pcomplete,print_cmd,redir,
-shell}.c
-       - prototype all static forward function declarations
-
-pcomplete.c
-       - changed some function parameters to `const char *' to avoid discarding
-         const qualifier
-
-make_cmd.c
-       - make_bare_word, make_word_flags, and make_word now take a
-         `const char *' string argument
-
-make_cmd.h
-       - changed extern declarations for make_bare_word and make_word
-
-print_cmd.c
-       - cprintf now takes a `const char *' as its first argument, like
-         xprintf and printf
-       - the conditional define for xprintf should have been HAVE_VPRINTF,
-         not HAVE_VFPRINTF
-
-shell.c
-       - in isnetconn(), the return value of sizeof() is size_t
-
-aclocal.m4
-       - add inclusion of stddef.h if STDC_HEADERS is defined to 1 in
-         BASH_CHECK_TYPE
-
-configure.in
-       - add a call to BASH_CHECK_TYPE for socklen_t (type of third argument
-         to getpeername(2))
-
-                                  5/11
-                                  ----
-lib/readline/bind.c
-       - make `useq' a char array to pass to rl_macro_bind in
-         rl_parse_and_bind
-
-lib/readline/{{bind,isearch}.c,rlprivate.h}
-       - _rl_isearch_terminators is now a char *, not unsigned char *
-
-{subst,variables,lib/sh/tmpfile}.c
-       - dollar_dollar_pid is now a `pid_t' instead of `int'
-
-variables.c
-       - sbrand() now takes an `unsigned long' to set the seed value
-       - changed last_random_value to type int, since it's always between
-         0 and 32767
-       - use strtoul to convert the value in assign_random instead of atoi
-       - take out casts in any arguments to sbrand()
-       - take out cast to int in call to inttostr in set_ppid()
-
-subst.c
-       - don't cast last_asynchronous_pid when passing to itos()
-
-{sig,subst}.c
-       - prototype all static forward function declarations
-
-                                  5/14
-                                  ----
-{test,trap,variables}.c
-       - prototype all static forward function declarations
-
-variables.c
-       - free_variable_hash_data() now takes a PTR_T, a `generic pointer'
-
-builtins/{alias,bind,break,cd,complete,declare,enable,exit,fc,fg_bg,help,
-history,jobs,pushd,read,set,trap,umask,
-       - prototype all static forward function declarations
-
-builtins/read.def
-       - reset_eol_delim now takes a `char *' arg, since that's what the
-         unwind_protect functions pass it, and it ignores its arguments
-         anyway
-
-lib/readline/{histsearch,input,kill,rltty,search,vi_mode}.c
-       - prototype all static forward function declarations
-
-lib/tilde/tilde.c
-       - prototype all static forward function declarations
-       - tilde_find_prefix, tilde_find_suffix, isolate_tilde_prefix, and
-         glue_prefix_and_suffix now take `const char *' arguments where
-         appropriate
-
-configure.in,config.h.in
-       - check for vsnprintf, define HAVE_VSNPRINTF if found
-
-lib/readline/display.c
-       - use vsnprintf() in rl_message if it's available; if we don't, at
-         least set the last character in msg_buf to 0 to avoid overrun --
-         we really can't do anything about overflow at this point.  if it's
-         available, this fixes buffer overflow problems in rl_message
-
-                                  5/15
-                                  ----
-lib/readline/histexpand.c
-       - in get_history_word_specifier, allow any character to terminate
-         a `:first-' modifier, not just `:' and null.  This is what csh
-         appears to do.  This allows things like `!:0- xyzzy' to replace the
-         last argument with xyzzy
-
-                                  5/18
-                                  ----
-configure.in, config.h.in
-       - check for <stdint.h>, define HAVE_STDINT_H if found
-       - check for intmax_t in <stdint.h>, define intmax_t as long if not
-         found
-
-                                  5/21
-                                  ----
-builtins/kill.def
-       - change to use strerror() for error message when kill(2) fails
-
-aclocal.m4
-       - new macro, BASH_C_LONG_LONG, check for `long long'
-
-configure.in, config.h.in
-       - call BASH_C_LONG_LONG, define HAVE_LONG_LONG if found
-
-lib/sh/snprintf.c
-       - new file, with implementations of snprintf, vsnprintf, asprintf,
-         and vasprintf, derived from inetutils version
-
-Makefile.in, lib/sh/Makefile.in
-       - add snprintf.c/snprintf.o
-
-configure.in, config.h.in
-       - add checks for snprintf, asprintf, vasprintf, with appropriate
-         cpp defines
-
-lib/readline/{rldefs,xmalloc}.h, lib/readline/xmalloc.c
-       - xmalloc and xrealloc now take `size_t' arguments, like their bash
-         counterparts
-
-externs.h,lib/sh/itos.c
-       - inttostr and itos now take `long' arguments
-       - inttostr takes a `size_t' argument for the buffer size
-
-{expr,lib/malloc/malloc,variables,general}.c
-       - fixed calls to itos() by removing casts, etc.
-
-subst.[ch]
-       - get_dollar_var_value now takes a long, not an int
-       - sub_append_number now takes a long, not an int
-
-subst.c
-       - in parameter_brace_expand_word, use a long and legal_number to
-         translate ${N}, to avoid overflow
-       - in parameter_brace_expand_length, use a long and legal_number to
-         translate ${#N}, to avoid overflow
-       - in do_array_element_assignment, array_expand_index,
-         array_value_internal, use arrayind_t instead of int
-       - let verify_substring_values take long * arguments for the return
-         value of evalexp()
-       - pass long * arguments to verify_substring_values in
-         parameter_brace_substring
-       - parameter_brace_expand_length now returns `long'
-       - parameter_brace_expand now uses a long variable for the return
-         value of parameter_brace_expand_length
-       - param_expand now uses a long variable for the return value from
-         evalexp
-       - array_length reference now returns an `arrayind_t', since it can
-         return the num_elements member of an array, which is of type
-         arrayind_t
-
-subst.h
-       - array_expand_index now returns an `arrayind_t'
-
-array.[ch]
-       - array_subrange now takes arrayind_t arguments, not `int'
-       - dup_array_subrange now uses arrayind_t local variable to do
-         array indexing
-       - use long to print array indices in print_element
-
-variables.c
-       - null_array_assign, assign_dirstack, bind_array_variable
-         now take arrayind_t arguments as array indices
-       - assign_array_var_from_word_list, assign_array_var_from_string,
-         unbind_array_element now use arrayind_t local variables for
-         array indexing
-
-variables.h
-       - change extern declaration of bind_array_variable
-
-builtins/common.[ch]
-       - get_numeric_arg now returns a `long', since it usually returns
-         the value of legal_number()
-
-builtins/{shift,break}.def
-       - use long variables for the return value of get_numeric_arg
-
-builtins/history.def
-       - convert string argument to int only if it's in range
-
-builtins/pushd.def
-       - set_dirstack_element and get_dirstack_element now take `long'
-         index arguments
-       - get_dirstack_index now takes a `long' index argument, since it's
-         passed the converted value from legal_number
-
-lib/sh/timeval.c
-       - in print_timeval, don't assume that the number of minutes fits into
-         an int, since it's just seconds/60.
-
-lib/sh/clock.c
-       - ditto for print_clock_t
-
-                                  5/22
-                                  ----
-shell.c
-       - since the -O option settings may possibly be overridden by the
-         normal shell initialization or posix initialization, save the
-         invocation options on an alist (with add_shopt_to_alist) and
-         process them after basic initialization (with run_shopt_alist)
-
-                                  5/23
-                                  ----
-trap.h
-       - new define, BASH_NSIG, all system signals plus special bash traps
-
-trap.c, builtins/trap.def
-       - use BASH_NSIG for array bounds and loops where appropriate
-
-trap.c
-       - change decode_signal to disallow numeric signal numbers above
-         NSIG -- this means you can only reference special traps like
-         DEBUG by name
-       - new SPECIAL_TRAP(s) macro to test whether s is one of the special
-         bash traps (currently DEBUG and EXIT)
-       - change reset_or_restore_signal_handlers so command substitution
-         doesn't inherit the debug trap (like ksh93), and child processes
-         don't have to rely on initialize_traps being run to get rid of
-         any debug trap
-
-support/mksignames.c
-       - add extra "ERR" signal name, value NSIG+1, allocate space for it
-         and write it out in signal_names[]
-
-trap.h
-       - new define: ERROR_TRAP == NSIG+1, change BASH_NSIG to NSIG+2
-       - extern declarations for set_error_trap, run_error_trap
-       - new define: TRAP_STRING(s), expands to trap_list[s] if signal S
-         is trapped and not ignored, NULL otherwise
-
-trap.c
-       - add ERROR_TRAP to SPECIAL_TRAPS define
-       - initialize ERROR_TRAP stuff in initialize_traps
-       - new function: set_error_trap(command), sets the ERR trap string
-       - new function: run_error_trap(command), runs the ERR trap string
-       - set trap string for ERROR_TRAP to NULL in free_trap_strings
-       - change reset_or_restore_signal_handlers so child processes don't
-         inherit the ERR trap
-       - add case to call run_error_trap in maybe_call_trap_handler
-
-execute_cmd.c
-       - in execute_command_internal, keep track of ERR trap and call it if
-         necessary
-       - use TRAP_STRING to get the value of debug and error traps
-       - in execute_function, arrange things so the ERR trap is not inherited
-         by shell functions, and is saved and restored like the DEBUG trap
-
-doc/{bash.1,bashref.texi}
-       - documented new ERR trap
-
-tests/{trap.{tests,right},trap2.sub,trap2a.sub}
-       - added ERR trap tests
-
-subst.c
-       - on machines without /dev/fd, change the named pipe fifo list to a
-         list of structs containing pathname and proc information
-       - change unlink_fifo_list to kill the proc in the fifo list with
-         signal 0 and not remove the fifo if the proc is still alive.  This
-         should fix the problem on those backward systems without /dev/fd
-         where fifos were removed when a job using process substitution was
-         suspended
-
-                                  5/24
-                                  ----
-examples/loadables/getconf.h
-       - new file, with basic defines needed to make getconf work minimally
-         on POSIX systems without the necessary definitions
-
-examples/loadables/getconf.c
-       - replacement functions for confstr, sysconf, pathconf for systems
-         that lack them, providing a minimal posix interface
-       - heavily augmented getconf, now supports all POSIX.1-200x,
-         POSIX.2-200x, Solaris 7, AIX 4.2 getconf variables
-
-                                  5/29
-                                  ----
-builtins/setattr.def
-       - make `readonly', `export', and `declare' print `invisible' variables
-         as just a command and variable name, without a value, when listing
-         all variables (as POSIX.2-200x d6 requires)
-
-                                  5/30
-                                  ----
-
-configure.in
-       - upgraded to autoconf-2.50 on main development machine, so require
-         autoconf-2.50 in preparation for using some if its new features
-       - call AC_C_PROTOTYPES
-       - remove call to AC_EXEEXT, which now does the wrong thing
-       - changed AC_INIT to new flavor
-       - added call to AC_CONFIG_SRCDIR
-       - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS
-       - AC_RETSIGTYPE -> AC_TYPE_SIGNAL
-
-configure.in, aclocal.m4, config.h.in
-       - removed call to BASH_LARGE_FILE_SUPPORT, use AC_SYS_LARGEFILE
-         standard support, with new macros _FILE_OFFSET_BITS and
-         _LARGE_FILES
-       - removed definition of BASH_LARGE_FILE_SUPPORT
-
-doc/bashref.texi
-       - document new `--enable-largefile' configure option
-
-lib/readline/readline.c
-       - change rl_set_prompt to call rl_expand_prompt unconditionally, so
-         local_prompt and local_prompt_prefix get set correctly
-
-                                   6/6
-                                   ---
-lib/readline/complete.c
-       - don't append `/' or ` ' to a match when completing a symlink that
-         resolves to a directory, unless the match doesn't add anything
-         to the word.  This means that a tab will complete the word up to
-         the full name, but not add anything, and a subsequent tab will add
-         a slash.  Change to append_to_match; callers changed
-
-hashlib.c
-       - new function, hash_table_nentries (table), returns the number of
-         items in TABLE
-
-hashlib.h
-       - extern declaration for hash_table_nentries
-
-configure.in
-       - configure without bash malloc on openbsd; they claim it needs
-         eight-bit alignment (which the bash malloc provides, but...)
-
-                                   7/2
-                                   ---
-stringlib.c
-       - only call RESIZE_MALLOCED_BUFFER from strsub() if the replacement
-         string length is > 0, avoid possible hangs if replacement is null
-
-subst.c
-       - don't include input.h; no longer needed
-
-configure.in
-       - remove calls to AC_SYS_RESTARTABLE_SYSCALLS and
-         BASH_SYS_RESTARTABLE_SYSCALLS; the results are no longer used
-
-config.h.in
-       - remove define for HAVE_RESTARTABLE_SYSCALLS
-
-aclocal.m4
-       - removed definition of BASH_SYS_RESTARTABLE_SYSCALLS; no longer used
-
-execute_cmd.c
-       - changed select command so `return' no longer terminates the select
-         command, so it can be used to return from an enclosing function.
-         This is as ksh (88 and 93) does it
-
-lib/readline/vi_mode.c
-       - fix trivial typo in declaration of vi_motion; `t' appears twice;
-         the second instance should be `T'
-
-                                   7/3
-                                   ---
-configure.in
-       - don't add -static to LDFLAGS on Solaris 2.x.  This means that the
-         auxiliary programs will be built as dynamic executables, but that
-         should do no harm
-
-                                   7/5
-                                   ---
-lib/glob/fnmatch.c
-       - fix the code that processes **(pattern) to short-circuit if the
-         pattern is ill-formed or lacks a trailing `)'  -- this fixes the
-         segfault on **(/*)
-
-Makefile.in, builtins/Makefile.in
-       - split CCFLAGS into CCFLAGS_FOR_BUILD and CFLAGS, to aid in
-         cross-compilation
-       - build programs that use $(CC_FOR_BUILD) using $(CCFLAGS_FOR_BUILD)
-
-configure.in, config.h.in
-       - check for getaddrinfo(3), define HAVE_GETADDRINFO if found
-
-lib/sh/netopen.c
-       - implemented a version of _netopen (_netopen6) that uses
-         getaddrinfo(3) if available, use if HAVE_GETADDRINFO is defined.
-         old _netopen is _netopen4; _netopen now calls either _netopen6
-         or _netopen4 as appropriate
-
-                                   7/9
-                                   ---
-builtins/exit.def
-       - don't source ~/.bash_logout if subshell_environment is non-zero
-
-execute_command.c
-       - in execute_until_or_while, handle the case where `breaking' is
-         set in the loop test (e.g., by the job control code when a job
-         is stopped with SIGTSTP), but the return value from the test is
-         something that would cause the loop to break.  Need to decrement
-         `breaking' in this case
-
-                                  7/10
-                                  ----
-execute_cmd.c
-       - in execute_in_subshell, make sure a command of type cm_subshell
-         inherits its `enclosing' command's CMD_IGNORE_RETURN flag
-
-variables.c
-       - in maybe_make_export_env, don't allow restricted shells to put
-         exported functions in the export environment
-
-                                  7/11
-                                  ----
-lib/glob/strmatch.h
-       - renamed old fnmatch.h
-       - changed guard #ifdef to _STRMATCH_H
-       - include system <fnmatch.h> if HAVE_LIBC_FNM_EXTMATCH is defined
-
-lib/glob/strmatch.c
-       - renamed old fnmatch.c
-       - include "strmatch.h"
-       - if HAVE_LIBC_FNM_EXTMATCH is defined, define a dummy version of
-         strmatch() that just calls fnmatch(3)
-
-lib/glob/glob.c
-       - include "strmatch.h"
-       - fnmatch -> strmatch
-
-Makefile.in, lib/glob/Makefile.in
-       - fnmatch -> strmatch
-
-{bashhist,execute_cmd,pathexp,pcomplete,shell,stringlib,subst,test}.c,
-pathexp.h,builtins/help.def
-       - include <glob/strmatch.h>
-       - fnmatch -> strmatch
-
-execute_cmd.c
-       - broke the code that parses the interpreter name from a #! line
-         out from execute_shell_script to a new function, getinterp()
-       - call getinterp from execute_shell_script
-       - use return value from getinterp in error message about bad
-         #! interpreter in shell_execve
-
-                                  7/12
-                                  ----
-lib/readline/isearch.c
-       - the last isearch string is now remembered in a new static variable,
-         last_isearch_string
-       - if ^R^R is typed, readline now searches for the remembered isearch
-         string, if one exists
-
-                                  7/24
-                                  ----
-pcomplete.h
-       - extern declaration for completions_to_stringlist()
-
-                                  7/25
-                                  ----
-builtins/complete.def
-       - make compgen handle -o default option
-       - make compgen return success only if sl->list_len is non-zero,
-         indicating that there are items on the list
-
-                                  7/31
-                                  ----
-execute_cmd.c
-       - in execute_connection, force stdin to /dev/null for asynchronous
-         commands if job control is not active, not just if the shell is
-         running a shell script (since you can run `set -m' in a script)
-
-lib/readline/rltty.c
-       - make sure _rl_tty_restore_signals resets `tty_sigs_disabled' on
-         successful restoration of the terminal modes
-       - make sure _rl_tty_disable_signals turns off IXON so that ^S and
-         ^Q can be read by rl_quoted_insert
-
-                                   8/1
-                                   ---
-aclocal.m4
-       - new check for FNM_EXTMATCH being defined in <fnmatch.h>, as Ullrich
-         Drepper intends to do for new versions of GNU libc
-
-config.h.in
-       - new definition for HAVE_LIBC_FNM_EXTMATCH
-
-configure.in
-       - check for fnmatch, but don't define anything in config.h
-       - call BASH_FUNC_FNMATCH_EXTMATCH to check for FNM_EXTMATCH
-
-                                   8/2
-                                   ---
-alias.h
-       - remove bogus extern declaration for xmalloc()
-       - include "stdc.h"
-       - add prototype declarations for all extern function declarations
-
-xmalloc.c,lib/readline/xmalloc.c
-       - fix xmalloc to return a PTR_T
-       - fix xrealloc to return a PTR_T and take a PTR_T as first argument
-
-include/ansi_stdlib.h
-       - extern declarations for malloc and realloc have them return PTR_T
-
-xmalloc.h
-       - new file, with extern declarations for functions in xmalloc.c
-
-general.h
-       - removed extern declarations for functions in xmalloc.c
-       - include xmalloc.h
-
-Makefile.in,builtins/Makefile.in
-       - update dependencies to include xmalloc.h
-
-parse.y,{alias,array,bashline,bracecomp,execute_cmd,findcmd,flags,general,
-hashcmd,locale,mailcheck,make_cmd,pathexp,pcomplete,print_cmd,stringlib,
-subst,unwind_prot,variables}.c
-builtins/{common,evalfile}.c
-builtins/{cd,command,enable,exec,printf,read,set}.def
-lib/sh/{makepath,netopen,pathphys,setlinebuf,shquote,snprintf,stringlist,
-strtrans,tmpfile}.c
-lib/readline/{util,terminal,shell,readline,macro,kill,isearch,input,
-histfile,histexpand,display,complete,bind}.c
-       - make sure all calls to xmalloc are cast to the right return value
-
-siglist.c
-       - include xmalloc.h
-
-parse.y,{alias,bashline,bracecomp,expr,make_cmd,nojobs,print_cmd,subst}.c
-builtins/{fc,printf,read}.def
-lib/sh/snprintf.c, lib/tilde/tilde.c
-lib/readline/{bind,display,histexpand,isearch,macro,util,vi_mode}.c
-       - make sure all calls to xrealloc are cast to the right return value
-
-lib/sh/{netopen,setlinebuf,shquote,snprintf}.c, lib/tilde/tilde.c
-       - include xmalloc.h, remove extern declaration of xmalloc
-
-lib/readline/xmalloc.h
-       - xmalloc and xrealloc should return PTR_T
-
-lib/readline/rldefs.h
-       - don't include an extern declaration for xmalloc
-
-                                   8/7
-                                   ---
-support/shobj-conf
-       - fixed up commented-out stanzas for HP's unbundled C compiler on
-         HP/UX
-
-support/bashbug.sh
-       - force the subject to be changed from the default
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
-       - document that transpose-words swaps the last two words on the line
-         if point is at the end of the line
-
-                                   8/9
-                                   ---
-stringlib.c
-       - fix possible infinite recursion problem with null pattern in
-         strsub()
-
-hashlib.c
-       - new function copy_hash_table to copy a hash table using a caller-
-         supplied function to copy item data (defaults to savestring())
-
-hashlib.h
-       - new extern declaration for copy_hash_table
-
-builtins/declare.def
-       - changes so that declare [-a] var=value assigns `value' to element 0
-         of array variable `var' like ksh93
-       - change so that declare [-a] var[N]=value assigns `value' to element
-         N of array variable `var' like ksh93
-
-                                  8/13
-                                  ----
-arrayfunc.c
-       - new file, for miscellaneous array functions
-
-arrayfunc.h
-       - new file, extern declarations for functions in arrayfunc.c
-
-variables.c
-       - move convert_var_to_array, bind_array_variable,
-         assign_array_from_string, assign_array_var_from_word_list,
-         assign_array_var_from_string, quote_array_assignment_chars,
-         skipsubscript, unbind_array_element, print_array_assignment
-         to arrayfunc.c
-
-shell.h
-       - include arrayfunc.h after variables.h
-
-variables.h
-       - remove above extern function declarations moved to arrayfunc.h
-       - add extern declaration for var_lookup
-
-Makefile.in
-       - add arrayfunc.c, arrayfunc.h in appropriate places
-       - add arrayfunc.h to dependencies
-
-subst.c
-       - move valid_array_reference, array_expand_index, array_variable_part,
-         array_value_internal, array_value (now global), get_array_value,
-         do_array_element_assignment to arrayfunc.c
-
-subst.h
-       - extern declarations for functions above moved to arrayfunc.h
-
-arrayfunc.h
-       - extern declarations for above functions from subst.c
-
-subst.[ch]
-       - string_list_dollar_star and string_list_dollar_at are now global
-         functions
-       - quote_escapes is now a global function
-
-subst.c
-       - maybe_expand_string -> expand_string_if_necessary
-       - expand_string_to_string -> expand_string_to_string_internal
-       - new functions: expand_string_to_string and
-         expand_string_unsplit_to_string, which call
-         expand_string_to_string_internal with expand_string and
-         expand_string_unsplit as the FUNC arguments, respectively
-
-arrayfunc.c
-       - change array_expand_index to call expand_string_to_string instead
-         of maybe_expand_string
-
-                                  8/14
-                                  ----
-shell.c
-       - in execute_env_file, call expand_string_unsplit_to_string
-
-mailcheck.c
-       - in check_mail, call expand_string_to_string
-
-variables.c
-       - in assign_in_env, call expand_string_unsplit_to_string
-
-arrayfunc.c
-       - new function, array_variable_name, splits an array reference into
-         a name (which is returned as a new string) and subscript
-       - change array_variable_part to just call array_variable_name and
-         look up the string returned with find_variable
-       - new function, find_or_make_array_variable (name, flags) which will
-         look up an array variable and convert a string variable to an
-         array if necessary.  The FLAGS argument, if non-zero, says to
-         check the readonly and noassign attributes and fail if either is set
-
-builtins/read.def
-       - make `read -a aname' honor any readonly status of `aname'
-       - read -a now calls find_or_make_array_variable with FLAGS value 1
-
-arrayfunc.[ch], subst.c, builtins/{declare,read}.def
-       - do_array_element_assignment -> assign_array_element
-
-                                  8/20
-                                  ----
-parse.y
-       - changed `for' command grammar to allow missing word list after `IN'
-         token, like latest POSIX drafts require
-
-lib/sh/tmpfile.c
-       - in sh_mktmpname(), check for filenum == 0 and init to non-zero number
-         in this case.  it can happen on arithmetic overflow
-
-support/mkversion.sh
-       - added `[0-9].[0-9][0-9][a-z]' as an acceptable value for a
-         distribution to allow for intermediate versions, like 2.05a
-
-support/config.guess
-       - removed the addition of the output of `/usr/bin/objformat' when
-         creating the canonical name on FreeBSD machines, so the canonical
-         name is once again `freebsd4.2' instead of `freebsdelf4.2'
-
-                                  8/22
-                                  ----
-lib/readline/{rlstdc,history,keymaps,readline,rldefs,rlprivate,rlshell,
-rltypedefs,xmalloc}.h
-lib/readline/{bind,compat,complete,display,funmap,histexpand,histsearch,
-input,isearch,kill,nls,parens,readline,rltty,search,shell,signals,vi_mode
-       - changed __P to PARAMS
-
-lib/tilde/tilde.[ch]
-       - changed __P to PARAMS
-
-{Makefile,configure}.in
-       - changed the version number to 2.05a
-       - changed the release status to `alpha1'
-
-                                  8/23
-                                  ----
-support/shobj-conf
-       - support for building shared libraries on Darwin/MacOS X
-
-siglist.h
-       - extern declaration for strsignal() to compensate for lack of
-         a definition in some system include files
-
-jobs.c
-       - remove casts from strsignal() calls
-
-[bash-2.05a-alpha1 frozen]
-
-                                  8/27
-                                  ----
-[bash-2.05a-alpha1 released]
-
-                                  8/27
-                                  ----
-execute_cmd.c
-       - fix eval_arith_for_expr to handle the case where the expanded
-         word list is NULL, returning 0 in this case
-
-print_cmd.c
-       - in print_function_def, make sure that func_redirects is assigned
-         a value before being used
-
-                                  8/28
-                                  ----
-alias.c
-       - include <ctype.h> for definition of isalpha()
-
-bashhist.h
-       - add prototypes for extern function declarations
-
-flags.c
-       - include bashhist.h for extern function declarations
-
-mksyntax.c
-       - include <unistd.h> if HAVE_UNISTD_H is defined in config.h
-
-parse.y
-       - include test.h for extern function declarations
-
-externs.h
-       - change extern declaration for setlinebuf to sh_setlinebuf
-
-stringlib.c
-       - include <glob/glob.h> for extern function declarations
-
-variables.h
-       - add function prototypes for all of the sv_* functions
-
-builtins/common.h
-       - add extern declarations for set_shellopts() and parse_shellopts()
-         from builtins/set.def
-
-variables.c
-       - include "hashcmd.h" for extern declaration for flush_hashed_filenames
-       - include "pathexp.h" for extern declaration for setup_glob_ignore
-
-lib/malloc/malloc.c
-       - cast to `long' instead of `int' in memalign for 64-bit machines
-
-{pcomplete,trap}.c
-       - changed printf escape sequences used to print pointers to %p
-
-lib/readline/undo.c
-       - include "xmalloc.h" for extern function declaration
-
-input.h
-       - add function prototypes to extern declarations for getc_with_restart
-         and ungetc_with_restart
-
-variables.[ch]
-       - changed type of `function' member of `struct name_and_function' to
-         `sv_func_t', which is defined and prototyped in variables.h
-       - map_over now takes an `sh_var_map_func_t *'
-
-shell.h
-       - start of a set of function pointer typedefs like those in
-         lib/readline/rltypedefs.h
-
-hashlib.[ch]
-       - second paramter to flush_hash_table is now an `sh_free_func_t *'
-
-trap.c
-       - parameter to reset_or_restore_signal_handlers is now an
-         `sh_resetsig_func_t *'
-
-pcomplete.h, pcomplib.c
-       - function pointer argument to print_all_compspecs is now an
-         `sh_csprint_func_t *'
-       - function pointer `list_getter' element of an `ITEMLIST' is now
-         prototyped with __P((...)) instead of using `Function *'
-
-jobs.[ch]
-       - `j_cleanup' member of a JOB is now an `sh_vptrfunc_t *'
-
-alias.c
-       - map_over_aliases now takes an `sh_alias_map_func_t *'
-       - free_alias_data now takes a `PTR_T'
-
-pathexp.c
-       - function pointer argument to ignore_globbed_names is now an
-         `sh_ignore_func_t *' 
-
-bashline.c
-       - function pointer argument to _ignore_completion_names is now an
-         `sh_ignore_func_t *' 
-
-pathexp.h,{bashhist,bashline.c
-       - `item_func' member of a `struct ignorevar' is now an
-         `sh_iv_item_func_t *'
-
-builtins/evalfile.c
-       - `errfunc' is now an `sh_vmsg_func_t *'
-
-jobs.c
-       - map_over_job now takes an `sh_job_map_func_t *' as its first argument
-
-array.[ch]
-       - function pointer argument to array_walk is now an
-         `sh_ae_map_func_t *'
-
-general.c
-       - tilde_expansion_preexpansion_hook has type `tilde_hook_func_t *',
-         and so the assignment in tilde_initialize doesn't need a cast
-
-list.c
-       - map_over_words now takes an `sh_icpfunc_t *' as its second argument
-
-input.h
-       - the `getter' and `ungetter' function pointer members of a
-         BASH_INPUT are now of types `sh_cget_func_t *' and
-         `sh_cunget_func_t *' respectively
-       - init_yy_io now takes an `sh_cget_func_t *' as its first argument and
-         an `sh_cunget_func_t *' as its second
-
-parse.y
-       - init_yy_io now takes an `sh_cget_func_t *' as its first argument and
-         an `sh_cunget_func_t *' as its second
-       - initialize_bash_input casts bash_input.getter and bash_input.ungetter
-         appropriately
-
-builtins/mkbuiltins.c
-       - make the extern function definitions written to builtext.h have
-         prototypes with __P((...))
-       - include "stdc.h"
-       - change Function to mk_handler_func_t
-       - fixed comment_handler to take the right number of args
-       - prototyped all the handler functions with __P((...))
-
-builtins.h
-       - the `function' member of a struct builtin is now of type
-         `sh_builtin_func_t *'
-
-builtins/common.[ch]
-       - last_shell_builtin, this_shell_builtin are now of type
-         `sh_builtin_func_t *'
-       - find_shell_builtin, builtin_address, find_special_builtin now return
-         `sh_builtin_func_t *'
-
-builtins/exit.def, {execute_cmd,jobs,nojobs,variables}.c, parse.y
-       - changed all declarations of last_shell_builtin and this_shell_builtin
-
-execute_cmd.c
-       - execute_builtin, execute_builtin_or_function,
-         execute_subshell_builtin_or_function now take an
-         `sh_builtin_func_t *' instead of a `Function *' for argument
-       - changed appropriate variables from `Function *' to
-         `sh_builtin_func_t *'
-
-builtins/{bind,builtin,enable,read,setattr}.def
-       - replaced uses of `Function *' in variable declarations with
-         appropriate types (sh_builtin_func_t * or rl_command_func_t *)
-
-builtins/set.def
-       - set_func and get_func members of binary_o_options are now of types
-         `setopt_set_func_t *' and `setopt_get_func_t *', which are
-         prototyped
-
-builtins/shopt.def
-       - set_func member of shopt_vars is now of type `shopt_set_func_t *'
-
-bashline.c
-       - enable_hostname_completion now returns `int' (the old value of
-         perform_hostname_completion)
-
-[The only use of Function and VFunction now is for unwind-protects]
-
-                                   9/4
-                                   ---
-lib/sh/getcwd.c
-       - use const define from config.h rather than `CONST'
-       - use PTR_T define from xmalloc.h rather than `PTR'
-       - include xmalloc.h for PTR_T
-       - remove PATH_MAX define, rely on value from maxpath.h
-
-{general,mailcheck}.c, lib/sh/{pathcanon,pathphys}.c
-       - don't include maxpath.h directly; it's already included by shell.h
-
-lib/sh/mailstat.c
-       - new `mailstat()' implementation, to stat a mailbox file for
-         mail checking.  handles maildir-style mail directories with one
-         file per message and creates a dummy stat struct from them
-
-lib/sh/Makefile.in
-       - add mailstat.c and mailstat.o in the appropriate places
-
-lib/malloc/malloc.c
-       - augmented implementation with wrapper functions that pass in file
-         and line number information from cpp.  currently unused, but a
-         placeholder for future debugging and use tracking
-
-lib/malloc/shmalloc.h
-       - new file, extern declarations for allocation wrapper functions for
-         use by the shell (and others, I guess)
-
-xmalloc.[ch]
-       - wrapper functions for xmalloc, xfree, xrealloc (sh_ prefixed) that
-         pass cpp line number information through to the malloc functions,
-         if USING_BASH_MALLOC is defined
-
-                                   9/5
-                                   ---
-lib/malloc/gmalloc.c
-       - removed; no longer part of distribution
-
-lib/malloc/Makefile.in
-       - removed references to gmalloc.[co]
-
-configure.in, doc/bashref.texi
-       - removed references to `--with-glibc-malloc' configure option
-
-{configure,Makefile}.in
-       - changed the way bash malloc is configured into the Makefile, making
-         it more like how readline is configured.  If the bash malloc is
-         not configured in, nothing in lib/malloc will be built
-
-                                   9/6
-                                   ---
-lib/malloc/imalloc.h
-       - new file, some internal malloc definitions
-
-lib/malloc/mstats.h
-       - new file, definitions for malloc statistics structs and functions
-
-lib/malloc/trace.c
-       - new file, malloc tracing functions (currently just print messages
-         to stderr), code is #ifdef MALLOC_TRACE
-
-lib/malloc/stats.c
-       - new file, moved malloc stats code from malloc.c to here
-
-lib/malloc/malloc.c
-       - moved some definitions to imalloc.h
-       - moved stats code to stats.c
-       - malloc tracing calls added to internal_{malloc,realloc,free}, all
-         #ifdef MALLOC_TRACE
-
-lib/malloc/Makefile.in, Makefile.in
-       - added {imalloc,mstats}.h, {trace,stats}.c
-
-parse.y
-       - changed decode_prompt_string to save and restore $?
-         (last_command_exit_value) around calls to expand_prompt_string(),
-         so command substitutions in PS1, etc. don't change $?
-
-{array,subst}.c
-       - a couple more arrayind_t fixes from Paul Eggert
-
-configure.in
-       - remove redundant check for wait3(2)
-
-redir.h
-       - fixed a typo (stdin_redirs -> stdin_redirects)
-
-                                  9/10
-                                  ----
-execute_cmd.c
-       - remove check for \n and \r from WHITESPACE macro, since those
-         chars are not whitespace as returned by the whitespace(c) macro
-       - getinterp now takes a `char *' as first arg, not unsigned char *
-       - execute_shell_script now takes a `char *' as first arg, not
-         unsigned char *
-       - fix typo in forward declaration for `initialize_subshell'
-       
-general.[ch]
-       - check_binary_file now takes a (char *) argument, not unsigned char *
-       - pass unsigned char to isspace and isprint because of ISO C fuckup
-       - bash_tilde_expand now takes a `const char *' as its argument
-
-builtins/evalfile.c, shell.c
-       - buffer passed to check_binary_file is char, not unsigned char
-
-parse.y
-       - fix extern declaration for yyerror()
-       - yyerror now takes a `const char *' as first arg
-
-{error,jobs}.c
-       - fixes to printf-style functions to handle pids wider than an int
-
-lib/readline/{isearch,vi_mode}.c
-       - fix call to rl_message in rl_display_search (remove extra arg)
-
-variables.c
-       - fix missing argument to builtin_error in make_local_variable
-
-builtins/getopts.def
-       - since getopts takes no options, change while loop calling
-         internal_getopts to a simple `if' check
-
-builtins/printf.def
-       - since printf takes no options, change while loop calling
-         internal_getopts to a simple `if' check
-
-lib/readline/bind.c
-       - remove _SET_BELL macro, expand code inline
-
-lib/readline/input.c
-       - change _rl_input_available to use either select or FIONREAD,
-         but not both
-
-lib/readline/readline.c
-       - fix rl_digit_loop to remove unreachable code at end of loop
-
-{bashhist,bashline,expr,jobs,redir,shell}.c, builtins/fc.def, lib/sh/snprintf.c
-       - bracket unused functions with #ifdef INCLUDE_UNUSED/#endif
-       - remove some unused variables
-
-execute_cmd.c
-       - remove #ifdef'd code that allowed `return' to terminate a select
-         statement
-
-expr.c
-       - remove some extraneous tests from strlong()
-
-array.h
-       - arrayind_t is now a long, since shell arithmetic is performed as
-         longs
-       - remove second declaration of new_array_element
-
-builtins/printf.def
-       - in mklong, xrealloc cannot return NULL, so don't check for it
-       - remove some #if 0 code
-       - fix core dump triggered by a format specification with more than
-         one `*'
-       - remove `foundmod', since its value mirrors `modchar != 0'
-       - include "common.h" for builtin_{error,usage} declarations
-
-Makefile.in,builtins/Makefile.in
-       - updated some dependencies due to new include files
-
-pcomplete.c
-       - include "execute_cmd.h" for declaration of execute_shell_function
-
-arrayfunc.c
-       - include <stdio.h> for printf
-       - include "builtins/common.h" for builtin_error declaration
-
-builtins/evalstring.c
-       - include "../trap.h" for run_trap_cleanup declaration
-
-builtins/help.def
-       - include "common.h" instead of locally declaring builtin_error
-         and builtin_usage
-
-error.h
-       - add extern declaration for itrace()
-       - add prototype to extern declaration of get_name_for_error
-       - file_error now takes a `const char *' as first argument
-
-externs.h
-       - added prototype for sh_setlinebuf declaration, bracketed with
-         NEED_SH_SETLINEBUF_DECL so we don't need stdio.h everywhere
-       - add extern declaration for parse.y:return_EOF()
-
-shell.c
-       - add NEED_SH_SETLINEBUF_DECL before including shell.h
-
-lib/readline/callback.c
-       - include <stdlib.h> or "ansi_stdlib.h" for abort declaration
-
-quit.h
-       - remove declaration of throw_to_top_level
-
-subst.c
-       - remove unused extern declaration for getopts_reset
-
-lib/sh/netopen.c
-       - include <shell.h> for legal_number, etc.
-       - add prototype for inet_aton extern declaration
-
-lib/sh/clock.c
-       - include <stdc.h> for __P declaration
-       - add extern declaration for get_clk_tck
-
-support/mkversion.sh
-       - changed so that extern function declarations for functions in
-         version.c (moved from externs.h) are in the generated version.h
-
-shell.h
-       - include version.h
-
-version.c
-       - various `char *' version variables are now `const char *'
-
-general.h
-       - add prototype for same_file, bracketed with _POSIXSTAT_H
-         #ifdef, since that's what include/posixstat.h defines
-
-builtins/common.[ch]
-       - _evalfile, maybe_execute_file, source_file, and fc_execute_file
-         now take a `const char *' as their first argument
-
-eval.c
-       - removed extern declaration of yyparse; it's in externs.h
-
-parse.y
-       - added prototypes to static forward function declarations
-       - changed local `all_digits' variable in read_token_word () to
-         all_digit_token to avoid clash with all_digits() function in
-         general.c
-
-{bashhist,copy_cmd,make_cmd,hashlib,mailcheck}.c
-       - added prototypes for static function declarations
-
-shell.h
-       - add extern declarations for interactive, interactive_shell,
-         changed c files with extern declarations
-
-pcomplete.c
-       - changed it_init_aliases to avoid shadowing global variable
-         `aliases'
-
-bashline.c,pathexp.c,general.h
-       - sh_ignore_func_t is now a pointer to a function taking a
-         `const char *'; users changed
-
-configure.in
-       - test for <strings.h>
-
-config.h.in
-       - add #undef HAVE_STRINGS_H
-
-bashansi.h
-       - change like recommended in autoconf manual
-
-                                  9/11
-                                  ----
-[a date which will live in infamy.  prayers for the victims.]
-
-execute_cmd.c
-       - don't use an absolute index into abuf in mkfmt, use
-         sizeof(abuf) to compute last index
-
-builtins/common.c
-       - fix read_octal to do a better job of detecting overflow while
-         iterating through the string
-
-builtins/umask.def
-       - change octal-print mode to print 4 digits, like other shells
-       - cast umask to unsigned long to avoid problems on systems where
-         it's wider than an int (POSIX doesn't guarantee that mode_t is
-         no wider than an int, but real-world systems use int)
-
-builtins/printf.def
-       - mklong can never return NULL (it uses xrealloc), so the mainline
-         doesn't need to check for NULL returns
-       - new function, getldouble (long double *), to get long doubles
-       - mklong now takes a `char *' as its second argument, the modifier(s)
-         to use
-       - changed use of `modchar' to handle more than a single modifier
-         character
-       - changed to handle `long double' and `L' formats better, rather
-         than discarding long double information
-       - since printf now follows the POSIX.2 rules for conversion errors,
-         we can dispense with the status returns from the get* functions
-       - make the get* functions as similar in structure as possible,
-         removing type casts, etc.
-
-lib/sh/timeval.c,execute_cmd.c
-       - change some instances of `long' to `time_t', for systems where
-         a time_t is bigger than a long
-
-jobs.c
-       - include "posixtime.h" instead of <sys/time.h>
-
-config.h.in
-       - add defines for HAVE_DECL_CONFSTR, HAVE_DECL_STRTOLD,
-         HAVE_DECL_SBRK, HAVE_DECL_PRINTF
-       - remove defines for SBRK_DECLARED and PRINTF_DECLARED
-       - add _GNU_SOURCE define
-
-configure.in
-       - add AC_CHECK_DECLS for strtold, confstr, sbrk, printf
-       - remove call to BASH_FUNC_SBRK_DECLARED
-       - remove call to BASH_FUNC_PRINTF
-
-xmalloc.c, lib/malloc/malloc.c
-       - change check of SBRK_DECLARED to HAVE_SBRK_DECL
-
-print_cmd.c
-       - change PRINTF_DECLARED to HAVE_DECL_PRINTF
-
-builtins/evalstring.c, builtins/common.h
-       - parse_and_execute now takes a `const char *' as its second argument
-
-input.h,parse.y
-       - with_input_from_* functions now take a `const char *' as their
-         second argument
-       - init_yy_io now takes a `const char *' as its fourth argument
-
-parse.y,externs.h
-       - parse_string_to_word_list now takes a `const char *' as its second
-         argument
-
-tests/builtins.right
-       - change output to account for extra digit in umask output
-
-pcomplib.c
-       - free_progcomp now takes a PTR_T argument
-
-builtins/bashgetopt.h
-       - include <stdc.h>
-       - add prototypes to extern declarations
-
-builtins/shopt.def
-       - add prototypes to static function declarations
-
-builtins/{fc,umask,wait}.def, builtins/{bashgetopt,common}.c
-       - include <ctype.h> for isdigit macro (referenced by `digit(x)')
-
-lib/readline/complete.c
-       - added more static function declarations with prototypes
-
-                                  9/12
-                                  ----
-lib/sh/tmpfile.c
-       - use `^' instead of `*' in sh_mktmpname to make filenames a bit
-         more random
-
-include/stdc.h,lib/readline/rldstdc.h
-       - add __attribute__ definition 
-
-builtins/common.h
-       - add printf __attribute__ to declaration of builtin_error
-
-error.h
-       - add printf __attribute__ to declaration of programming_error,
-         report_error, parser_error, fatal_error, sys_error, internal_error,
-         internal_warning
-
-lib/readline/readline.h
-       - add printf __attribute__ to declaration of rl_message
-
-pcomplete.c
-       - add printf __attribute__ to declaration of debug_printf
-
-print_cmd.c
-       - add printf __attribute__ to declarations of cprintf, xprintf
-
-include/chartypes.h
-       - new file, includes <ctype.h> and defines macros that check for
-         safe (ascii) arguments before calling the regular ctype macros
-
-{alias,bashline,execute_cmd,expr,findcmd,general,locale,mksyntax,stringlib,subst,variables}.c
-parse.y
-builtins/{bashgetopt,common}.c
-builtins/{fc,printf,umask,wait}.def
-lib/glob/strmatch.c
-lib/sh/{oslib,pathcanon,pathphys,snprintf,strcasecmp,strindex,stringvec,strtod,strtol,strtrans}.c
-examples/loadables/{head,sleep}.c
-       - include "chartypes.h" or <chartypes.h> instead of <ctype.h>
-
-Makefile.in,{builtins,lib/{glob,sh}}/Makefile.in
-       - update dependencies to include chartypes.h
-
-lib/sh/inet_aton.c
-       - use `unsigned char' instead of `char' to pass to ctype.h functions
-
-lib/sh/netopen.c
-       - check for '0' <= host[0] <= '9' in _getaddr instead of using
-         isdigit
-
-subst.c,lib/sh/shquote.c
-       - change array subscripts into sh_syntaxtab from `char' to
-         `unsigned char'
-
-{alias,bashline,execute_cmd,expr,general,subst}.c, parse.y
-builtins/{fc,printf,umask,wait}.def builtins/{bashgetopt,common}.c
-lib/sh/{pathcanon,pathphys,snprintf,strcasecmp,strindex,strtod,strtol,strtrans}.c
-examples/loadables/{head,sleep}.c
-       - change to use some of the new macros in chartypes.h
-       - remove old local macro definitions now provided by chartypes.h
-
-general.h
-       - remove definition of isletter, ISOCTAL, digit, digit_value
-       - change legal_variable_starter and legal_variable_char to use
-         chartypes.h macros
-       - change ABSPATH to use chartypes.h macros
-
-lib/readline/util.c
-       - change to use Paul Eggert's FUNCTION_FOR_MACRO define to define
-         function replacements for macros in chardefs.h
-
-lib/readline/chardefs.h
-       - added some of the same macros as in chartypes.h
-       - change _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p,
-         _rl_to_upper, _rl_to_lower to use new IS* macros
-       - added _rl_isident macro from vi_mode.c:isident
-
-lib/readline/{bind,complete,nls}.c
-       - change to use some of the new macros from chardefs.h
-
-lib/readline/vi_mode.c
-       - isident -> _rl_isident
-       - remove local defines of macros in chardefs.h
-
-lib/sh/strtol.c
-       - updated to new version, modified from glibc 2.2.4 and sh-utils-2.0.
-         This one can do strtoll and strtoull, if necessary
-
-                                  9/13
-                                  ----
-builtins/ulimit.def
-       - changed get_limit so it retrieves both hard and soft limits
-         instead of one or the other
-       - changed callers of get_limit
-       - changed getmaxvm to take soft limit, hard limit as arguments
-       - changed getmaxuprc to just take a single argument, the value
-       - changed calls to printone() to pass soft limit or hard limit
-         depending on `mode' instead of using old current_limit variable
-       - moved check for out-of-range limits in ulimit_internal into the
-         block that converts a string argument to a value of type rlim_t
-       - changed RESOURCE_LIMITS struct to break the description into a
-         description string and separate scale factor string
-       - changed print_all_limits to print a single error message if
-         get_limit fails, including limits[i].description now that the
-         scale factor has been removed from the description string
-       - removed DESCFMT define, since it's now used only in printone()
-       - changed printone to print the option character associated with a
-         particular limit if we're printing multiple limits
-       - changed calls to builtin_error to print the description associated
-         with a limit if setting or getting the limit fails
-       - added support for new POSIX 1003.1-200x rlim_t values:
-         RLIM_SAVED_CUR and RLIM_SAVED_MAX, which expand to the current
-         soft and hard limits, whatever they are
-       - changed printone to print `hard' or `soft' if the current limit is
-         RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively
-       - changed ulimit_internal to handle new `hard' and `soft' arguments
-       - changed help text do describe the special limit arguments `hard',
-         `soft', and `unlimited'
-
-doc/{bash.1,bashref.texi}
-       - documented new `hard' and `soft' limit arguments to `ulimit'
-
-hashlib.[ch]
-       - find_hash_item now takes a `const char *' is its first argument
-       - hash_string now takes a `const char *' is its first argument
-       - remove_hash_item now takes a `const char *' as its first argument
-
-pcomplib.c
-       - removed cast from first argument to find_hash_item in find_compspec
-
-general.[ch]
-       - absolute_program now takes a `const char *' as its argument
-       - absolute_pathname now takes a `const char *' as its argument
-
-lib/glob/glob.[ch]
-       - glob_pattern_p now takes a `const char *' as its argument
-
-bashline.c
-       - removed cast from first argument to absolute_program in
-         command_word_completion_function
-       - removed cast from first argument to glob_pattern_p in
-         attempt_shell_completion
-
-findcmd.[ch]
-       - find_absolute_program, find_user_command, find_path_file,
-         search_for_command, user_command_matches now take a
-         `const char *' as their first argument
-       - file_status, executable_file, is_directory, executable_or_directory
-         now take a `const char *' as their argument
-       - _find_user_command_internal, find_user_command_internal,
-         find_user_command_in_path 
-
-lib/sh/makepath.c, externs.h
-       - changed sh_makepath so it takes `const char *' for its first
-         two arguments
-
-hashcmd.[ch]
-       - find_hashed_filename now takes a `const char *' as its first arg
-       - remove_hashed_filename now takes a `const char *' as its first arg
-
-variables.[ch]
-       - new_shell_variable, var_lookup, shell_var_from_env_string,
-         find_name_in_env_array, bind_function, makunbound,
-         bind_name_in_env_array, bind_tempenv_variable, bind_variable
-         now take a `const char *' as their first arg
-       - find_function, make_new_variable, find_tempenv_variable,
-         find_variable_internal, find_variable, set_func_read_only,
-         set_func_auto_export, all_variables_matching_prefix, assign_in_env,
-         assignment, kill_local_variable, make_local_variable, unbind_variable
-         now take a `const char *' as their arg
-       - mk_env_string now takes `const char *' arguments
-
-arrayfunc.[ch]
-       - skipsubscript now takes a `const char *' as its argument
-
-                                  9/17
-                                  ----
-lib/readline/complete.c
-       - attempt to preserve case of what the user typed in
-         compute_lcd_of_matches if we're ignoring case in completion
-
-builtins/{let,pushd}.def,{execute_cmd,expr}.c
-       - change some 0L constants to 0 and let the compiler sort it out
-
-                                  9/18
-                                  ----
-lib/malloc/alloca.c
-       - alloca now takes a `size_t' argument
-
-include/memalloc.h
-       - if we're providing an extern function declaration for alloca,
-         use `void *' and prototype if __STDC__ is defined
-       - if HAVE_ALLOCA_H is defined, but C_ALLOCA is defined, don't
-         define HAVE_ALLOCA
-
-                                  9/19
-                                  ----
-subst.c
-       - do_assignment_internal, do_assignment, and do_assignment_no_expand
-         now take a `const char *' as their first argument
-
-general.h
-       - a `sh_assign_func_t' is now a function taking a `const char *' and
-         returning int
-
-hashcmd.c
-       - free_filename_data now takes a `PTR_T' argument to agree with the
-         typedef for `sh_free_func_t'
-
-lib/sh/snprintf.c
-       - use TYPE_MAXIMUM define like strtol.c instead of huge constants
-
-                                  9/20
-                                  ----
-lib/sh/snprintf.c
-       - don't bother to compile the bulk of the body unless HAVE_SNPRINTF
-         or HAVE_ASPRINTF is not defined
-
-                                  9/24
-                                  ----
-flags.c
-       - ignore `set -n' if the shell was started interactively
-
-lib/readline/readline.c
-       - initialize readline_echoing_p to 0; let the terminal-specific code
-         in rltty.c set it appropriately
-
-lib/malloc/malloc.c
-       - changed internal_memalign() slightly to avoid compiler warnings about
-         negating an unsigned variable (-alignment -> (~alignment + 1))
-
-                                  9/27
-                                  ----
-lib/readline/readline.c
-       - changed rl_newline to set _rl_history_saved_point appropriately
-         for the {previous,next}_history code
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_history_preserve_point
-
-lib/readline/bind.c
-       - new bindable variable, `history-preserve-point', sets value of
-         _rl_history_preserve_point
-
-                                  10/1
-                                  ----
-lib/malloc/table.c
-       - new file, with a map of allocated (and freed) memory for debugging
-         multiple frees, etc.  Indexed by hash on values returned by
-         malloc(); holds size, file and line number info for last alloc or
-         free and a couple of statistics pointers
-
-lib/malloc/malloc.c
-       - a few cleanups; added calls for registering allocations and frees
-         if MALLOC_REGISTER is defined
-       - replaced MALLOC_RETURN with explicit MALLOC_NOTRACE define
-       - reordered fields in `struct...minfo' in `union mhead' to restore
-         eight-byte alignment
-       - added explicit checks for underflow in free and realloc since
-         checking mh_magic2 is not sufficient to detect everything (it's
-         no longer the last field in the struct, and thus not the bytes
-         immediately preceding what's returned to the user)
-       - new function, xbotch, for printing file and line number info for
-         the failed assertion before calling botch() (programming_error())
-
-configure.in
-       - replaced call to BASH_C_LONG_LONG with call to
-         AC_CHECK_TYPES([long long])
-       - moved the C compiler tests before the tests for various
-         system types, so we can know whether we have `long long'
-         before testing for 64-bit types
-       - if we have `long long', check for sizeof(long long) and save value
-
-aclocal.m4
-       - changed BASH_TYPE_BITS64_T to check `long long' before `long', but
-         after `double'
-
-                                  10/2
-                                  ----
-lib/malloc/malloc.c
-       - made malloc and realloc both agree on the rounding for a request of
-         size N (round up to nearest multiple of 8 after adjusting for
-         malloc overhead); uses new ALLOCATED_BYTES macro
-       - realloc and free now use new IN_BUCKET macro for underflow checks
-
-execute_cmd.c
-       - fixed time_command() to use `time_t' instead of `long' to hold
-         time stamps
-
-lib/sh/clock.c
-       - clock_t_to_secs now takes a `time_t *' second argument
-       - fixed print_clock_t to call clock_t_to_secs with right arguments
-
-lib/sh/timeval.c
-       - fixed print_timeval to make `minutes' a `long' and make its
-         structure identical to print_clock_t
-
-redir.c
-       - changed redirection_error to check for EBADF and use the file
-         descriptor being redirected from in the error message if it
-         is >= 0
-
-Makefile.in
-       - changed release status to `beta1'
-
-lib/glob/collsyms.h
-       - added a few ASCII symbols to the posix_collsyms array
-
-                                  10/3
-                                  ----
-aclocal.m4
-       - fixed typo in BASH_TYPE_BITS64_T
-
-configure.in
-       - added check for unsigned chars with AC_C_CHAR_UNSIGNED
-
-config.h.in
-       - added PROTOTYPES and __CHAR_UNSIGNED__ #defines
-
-general.h
-       - if CHAR_MAX is not define by <limits.h>, provide a definition
-
-builtins/printf.def
-       - change tescape() to mask \0 and \x escape sequences with 0xFF
-       - change tescape() to process at most two hex digits after a `\x'
-
-lib/sh/strtrans.c
-       - change strtrans() to mask \0 and \x escape sequences with 0xFF
-       - change strtrans() to process at most two hex digits after a `\x'.
-         This affects `echo -e' and $'...' processing
-
-lib/readline/bind.c
-       - changed rl_translate_keyseq() to process at most two hex digits
-         after a `\x'
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
-       - changed documentation for key binding escape sequences to specify
-         that at most two hex digits after \x are translated
-       - changed documentation for key binding to specify that the result
-         of \nnn or \xhh escapes is an eight-bit value, not just ASCII
-
-doc/{bash.1,bashref.texi}
-       - changed documentation of $'...' to specify that at most two hex
-         digits after \x are translated
-       - changed `echo' documentation to specify that at most two hex
-         digits after \x are translated
-       - changed documentation for `echo' and $'...' to specify that the
-         result of \nnn or \xhh escapes is an eight-bit value, not just ASCII
-
-                                  10/4
-                                  ----
-lib/malloc/malloc.c
-       - changed interface for xbotch to pass memory address and error code
-         as two additional arguments
-       - call mregister_describe_mem from xbotch to get the last allocation
-         or free before the botch
-
-configure.in
-       - call AC_CHECK_DECLS([strsignal])
-
-config.h.in
-       - add HAVE_DECL_STRSIGNAL
-
-siglist.h
-       - make declaration of strsignal() dependent on !HAVE_DECL_STRSIGNAL
-
-                                  10/5
-                                  ----
-support/texi2html
-       - upgraded to version 1.64
-
-                                  10/9
-                                  ----
-aclocal.m4
-       - added check for `long long' to BASH_TYPE_PTRDIFF_T
-
-configure.in
-       - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ
-
-aclocal.m4
-       - replaced body of BASH_STRUCT_TERMIOS_LDISC with call to
-         AC_CHECK_MEMBER(struct termios.c_line, ...)
-       - replaced body of BASH_STRUCT_TERMIO_LDISC with call to
-         AC_CHECK_MEMBER(struct termios.c_line, ...)
-
-[bash-2.05a-beta1 frozen]
-
-                                  10/10
-                                  -----
-lib/sh/snprintf.c
-       - fixed exponent() to not smash the trailing zeros in the fraction
-         when using %g or %G with an `alternate form'
-       - fixed exponent() to handle the optional precision with %g and %G
-         correctly (number of significant digits before the exponent)
-
-                                  10/11
-                                  -----
-expr.c
-       - fixed strlong() to correct the values of `@' and `_' when
-         translating base-64 constants (64#@ == 62 and 64#_ == 64), for
-         compatibility with ksh
-
-lib/sh/itos.c
-       - added a slightly more flexible fmtlong() function that takes a
-         base argument and flags (for future use)
-       - rewrote itos and inttostr in terms of fmtlong
-
-lib/sh/fmtulong.c
-       - new file, converts unsigned long to string.  hooks for `unsigned
-         long long' in the future.  unused as yet
-
-                                  10/15
-                                  -----
-lib/readline/rltty.c
-       - change the SET_SPECIAL macro to avoid possible (but highly
-         unlikely) negative array subscripts
-
-error.h
-       - add __attribute__ to extern declaration of itrace (even though the
-         function isn't defined in released versions of bash)
-
-bashansi.h
-       - include <strings.h> if HAVE_STRINGS_H is defined, to get any extra
-         function declarations provided therein
-
-copy_cmd.c
-       - fix typo in forward declaration for copy_arith_for_command
-
-lib/malloc/stats.c
-       - make the accumulators in _print_malloc_stats be `unsigned long'
-         instead of `int'
-
-externs.h, sig.h
-       - add `__noreturn__' gcc attribute to exit_shell and jump_to_top_level
-         declarations
-
-lib/sh/mailstat.c, support/bashversion.c
-       - include <bashansi.h> for some string function declarations
-
-lib/malloc/shmalloc.h
-       - added extern declarations of functions that do malloc debugging
-
-lib/readline/{isearch,readline,vi_mode}.c
-       - make sure we index into _rl_keymap with a non-negative index
-
-parse.y
-       - make sure we index into sh_syntaxtab with a non-negative index
-
-lib/readline/vi_mode.c
-       - bound the vi_mark_chars array with the number of characters between
-         'a' and 'z' rather than using a fixed amount
-       - don't use _rl_lowercase_p when deciding whether the char read by
-         rl_vi_set_mark is a valid mark; just use 'a' <= char <= 'z'
-
-lib/readline/chardefs.h
-       - conditionally include memory.h and strings.h as in general.h
-       - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
-       - add defines for ISPRINT(c), ISLOWER(c) and ISUPPER(c)
-       - fix defines for _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p,
-         _rl_pure_alphabetic, ALPHABETIC, _rl_to_upper, _rl_to_lower,
-         and _rl_isident to work on systems with signed chars
-
-include/chartypes.h
-       - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
-
-lib/sh/{strcasecmp,strtod,strtol}.c
-       - don't pass possibly-negative characters to tolower() or toupper()
-
-lib/glob/strmatch.c
-       - don't bother testing for isupper in FOLD; rely on TOLOWER macro
-         from <chartypes.h> to do it
-       - don't use local definitions of isblank, et al.; rely on macros
-         from <chartypes.h>
-
-lib/readline/{display,readline}.c, mksyntax.c
-       - use new ISPRINT macro instead of isprint()
-
-builtins/{kill.def,mkbuiltins.c},{error,execute_cmd,jobs,nojobs,subst}.c
-       - don't assume that a pid_t fits into an int for printing and other
-         uses
-
-variables.[ch]
-       - the unused put_gnu_argv_flags_into_env now takes a `long' pid
-         argument
-
-configure.in, config.h.in
-       - call AC_STRUCT_ST_BLOCKS, define HAVE_STRUCT_STAT_ST_BLOCKS if found
-       - check for strtoull(), define HAVE_STRTOULL if found
-       - check for uintmax_t, define to `unsigned long' if not found
-
-lib/sh/mailstat.c
-       - don't use st_blocks member of struct stat unless
-         HAVE_STRUCT_STAT_ST_BLOCKS is defined; otherwise use the st_nlink
-         field to return the total number of messages in a maildir-style
-         mail directory
-
-general.h,{alias,expr,general,subst,variables}.c
-builtins/{printf,read}.def
-lib/readline/{bind,complete,nls}.c
-lib/sh/{pathcanon,pathphys,shquote,snprintf,strindex,strtod,strtol,strtrans}.c
-       - cast args to ctype macros to unsigned char for systems with signed
-         chars; other fixes for signed chars
-
-lib/sh/{fmtullong,strtoull.c}
-       - new files, more support for `long long'
-
-Makefile.in, lib/sh/Makefile.in
-       - make fmtullong.o and strtoull.o part of libsh
-
-lib/sh/itos.c
-       - remove local copy of fmtlong; use fmtulong instead
-       - new functions: uitos, uinttostr work on `unsigned long'
-
-lib/sh/snprintf.c
-       - fixes to make `unsigned long long' work (%llu)
-       - fixes to make unsigned formats not print the sign when given
-         an unsigned long that is greater than LONG_MAX
-
-externs.h
-       - extern declarations for fmtulong, fmtulloing, strtoull
-       - extern declarations for uitos, uinttostr
-
-                                  10/16
-                                  -----
-configure.in
-       - move header checks before function checks
-       - move c compiler tests before header checks
-       - check for <inttypes.h> with BASH_HEADER_INTTYPES
-       - change type checks for intmax_t, uintmax_t to not attempt to
-         include <stdint.h>
-       - check for strtoimax, strtoumax, strtoll, strtol, strtoull, strtoul
-         with BASH_CHECK_DECL (for declarations in header files) and
-         AC_REPLACE_FUNCS (for availability and LIBOBJS substitution)
-       - remove check for have_long_long around sizeof check for long long
-         (since autoconf will give it a size of 0 if the type isn't found)
-
-config.h.in
-       - add a define for HAVE_INTTYPES_H
-       - add a define for HAVE_UNSIGNED_LONG_LONG
-       - add defines for HAVE_STRTOIMAX, HAVE_STRTOUMAX, HAVE_STRTOLL
-
-aclocal.m4
-       - new func, BASH_HEADER_INTTYPES, which just calls AC_CHECK_HEADERS
-         on <inttypes.h>; separate so it can be AC_REQUIREd
-       - AC_REQUIRE([BASH_HEADER_INTTYPES]) in BASH_CHECK_TYPE
-       - include <inttypes.h> in BASH_CHECK_TYPE if HAVE_INTTYPES_H is
-         defined
-       - change AC_DEFINE to AC_DEFINE_UNQUOTED in BASH_CHECK_TYPE
-       - new `long long' checking macros:  BASH_TYPE_LONG_LONG and
-         BASH_TYPE_UNSIGNED_LONG_LONG
-       - new BASH_CHECK_DECL 
-
-lib/sh/{strto[iu]max,strtoll}.c, lib/sh/Makefile.in, Makefile.in
-       - new files
-
-externs.h
-       - extern declarations for strtoll, strtoimax, strtoumax
-
-lib/malloc/alloca.c
-       - include <bashtypes.h> for size_t
-
-builtins/printf.def
-       - new functions: getllong, getullong, getintmax, getuintmax; return
-         long long, unsigned long long, intmax_t, uintmax_t respectively
-       - builtin printf now handles `ll' and `j' length modifiers directly
-
-lib/sh/Makefile.in
-       - use LIBOBJS to decide whether or not the strto* functions are
-         needed
-
-                                  10/17
-                                  -----
-configure.in
-       - call AC_REPLACE_FUNCS(rename)
-       - move getcwd, strpbrk, strcasecmp, strerror, strtod
-         from AC_CHECK_FUNCS to AC_REPLACE_FUNCS
-       - only call BASH_FUNC_GETCWD if $ac_func_getcwd == "yes"
-       - call BASH_CHECK_SYS_SIGLIST
-       - if we don't have vprintf but have _doprnt, call AC_LIBOBJ(vprint)
-
-lib/sh/Makefile.in
-       - remove rename, getcwd, inet_aton, strpbrk, strcasecmp, strerror,
-         strtod, vprint from OBJECTS; picked up from LIBOBJS
-
-aclocal.m4
-       - change BASH_FUNC_GETCWD to call AC_LIBOBJ(getcwd) if the libc
-         getcwd(3) calls popen(3)
-       - change BASH_FUNC_INET_ATON to call AC_LIBOBJ(inet_aton) if it's
-         not found in libc or as a #define even with the special includes
-       - BASH_KERNEL_RLIMIT_CHECK -> BASH_CHECK_KERNEL_RLIMIT
-       - BASH_DEFAULT_MAILDIR -> BASH_SYS_DEFAULT_MAILDIR
-       - BASH_JOB_CONTROL_MISSING -> BASH_SYS_JOB_CONTROL_MISSING
-       - BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS
-       - BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE
-       - BASH_DUP2_CLOEXEC_CHECK -> BASH_FUNC_DUP2_CLOEXEC_CHECK
-       - BASH_PGRP_SYNC -> BASH_SYS_PGRP_SYNC
-       - BASH_RLIMIT_TYPE -> BASH_TYPE_RLIMIT
-       - BASH_FUNC_PRINTF -> BASH_DECL_PRINTF
-       - BASH_FUNC_SBRK_DECLARED -> BASH_DECL_SBRK
-       - BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T
-       - BASH_CHECK_SOCKLIB -> BASH_CHECK_LIB_SOCKET
-       - new macro, BASH_CHECK_SYS_SIGLIST, encapsulates all the checks for
-         sys_siglist, _sys_siglist, and strsignal(), sets SIGLIST_O to
-         siglist.o if appropriate
-
-Makefile.in
-       - use SIGLIST_O variable to decide whether or not we need siglist.o
-
-{execute_cmd,subst}.c
-       - change a couple of instances of ISDIGIT to DIGIT, where we really,
-         really only want ascii digits
-
-ansi_stdlib.h
-       - don't need a declaration for atol()
-
-                                  10/18
-                                  -----
-
-aclocal.m4
-       - new macro, BASH_FUNC_PRINTF_A_FORMAT, checks for printf support
-         for %a, %A conversion specifiers, defines HAVE_PRINTF_A_FORMAT
-         if successful
-
-configure.in
-       - call AC_CHECK_FUNCS for isascii
-       - call BASH_FUNC_PRINTF_A_FORMAT
-
-config.h.in
-       - add a define for HAVE_ISASCII
-       - add a define for HAVE_PRINTF_A_FORMAT
-
-lib/sh/snprintf.c
-       - for long double output, fall back to sprintf using ldfallback()
-         function for floating point formats
-       - support %a, %A using dfallback() or ldfallback() if
-         HAVE_PRINTF_A_FORMAT is defined
-       - fix bug in vasprintf that returned wrong value in its first
-         argument if the buffer holding the result string got reallocated
-       - fixed PUT_CHAR macro to increment the counter even if we've
-         exceeded the buffer size, for the return value from
-         vsnprintf/snprintf
-       - fix vsnprintf_internal to not use counter < length as a loop
-         condition, but always process the entire format string (for
-         the return value from vsnprintf/snprintf)
-
-builtins/printf.def
-       - support %a, %A if HAVE_PRINTF_A_FORMAT is defined
-
-include/typemax.h
-       - new file, with the TYPE_MAXIMUM stuff that's duplicated in several
-         files in lib/sh
-
-lib/sh/{fmtulong,strtol,snprintf}.c
-       - include <typemax.h> instead of having the definitions in each file
-
-lib/sh/Makefile.in
-       - updated dependencies for typemax.h
-
-                                  10/22
-                                  -----
-configure.in
-       - call AC_CHECK_FUNCS on ctype.h functions/macros that bash redefines
-         in chartypes.h
-
-config.h.in
-       - defines for HAVE_IS{ASCII,BLANK,GRAPH,PRINT,SPACE,XDIGIT}
-
-include/chartypes.h, lib/glob/strmatch.c, lib/readline/chardefs.h
-       - don't redefine some is* ctype macros/functions if HAVE_ISXXX is
-         defined (meaning that an appropriate function, but not a macro,
-         exists)
-
-lib/sh/strtrans.c
-       - new function, ansic_shouldquote, returns 1 if argument string
-         contains non-printing chars that should be quoted with $'...'
-
-externs.h
-       - new declaration for ansic_shouldquote()
-
-variables.c
-       - change print_var_value to ansi C quote the string if we're not in
-         posix mode and the variable's value contains non-printing chars,
-         to use the regular shell single quoting if the value contains
-         shell meta-characters, and to just output the string otherwise
-
-lib/sh/shquote.c
-       - add `break' to `case '~':' to avoid fallthrough and extra test
-
-doc/bashref.texi
-       - note that in POSIX mode, `set' displays variable values that
-         include nonprinting characters without quoting, unless they
-         contain shell metacharacters
-
-builtins/printf.def, lib/sh/snprintf.c
-       - handle `F' conversion specifier as equivalent to 'f'
-
-parse.y, {nojobs,variables}.c
-       - a couple of cleanups for when building a minimal configuration
-
-nojobs.c
-       - new function: stop_making_children(), just sets
-         already_making_children to 0 (like stop_pipeline)
-
-subst.c
-       - call stop_making_children from subst.c:command_substitute if
-         JOB_CONTROL is not defined.  This fixes the bug where the wrong
-         process is waited for (and its status returned) when using
-         command substitution in a null command in a shell function
-
-builtins/printf.def
-       - new variable `tw' used to keep track of the total number of
-         characters written by a single call to `printf' -- to be
-         used for the `%n' conversion, which will be added later.  It
-         gets reset each time we reuse the format string, which is what
-         ksh93 seems to do
-
-                                  10/23
-                                  -----
-variables.c
-       - new function, bind_var_to_int (char *var, long val)
-
-variables.h
-       - extern declaration for bind_var_to_int
-
-lib/sh/netopen.c
-       - use gai_strerror() for error messages when getaddrinfo() fails
-       - use PF_INET if DEBUG is defined, since IPv6 doesn't work for me
-
-Makefile.in
-       - pass DEBUG=${DEBUG} down to makes in some subdirectories
-
-{builtins,lib/{glob,sh}}/Makefile.in
-       - append ${DEBUG} to LOCAL_CFLAGS value, passed by top-level Makefile
-
-builtins/printf.def
-       - added support for %n format conversion char (number of chars printed
-         so far from current format string)
-
-                                  10/24
-                                  -----
-variables.c
-       - if posixly_correct is set, the default value of $MAILCHECK is 600
-       - use legal_number instead of atoi in adjust_shell_level
-       - treat non-numeric assignments to SECONDS as 0 in assign_seconds
-       - new function, init_funcname_var; sets FUNCNAME as a dynamic variable
-         if it's not set in the initial environment
-       - new function, init_groups_var; sets GROUPS as a dynamic array
-         variable if it's not set in the initial environment
-       - new function, init_dirstack_var; sets DIRSTACK as a dynamic array
-         variable if it's not set in the initial environment
-       - new function, init_seconds_var; sets SECONDS as a dynamic
-         variable using any valid integer value in the initial environment
-         as the initial value, as if an assignment had been performed
-       - call init_funcname_var, init_groups_var, init_dirstack_var,
-         init_seconds_var from initialize_dynamic_variables
-       - non-numeric values assigned to LINENO are treated as 0
-       - change initialize_shell_variables to not auto-export PATH or TERM
-       - change set_home_var to not auto-export HOME
-       - change set_shell_var to not auto-export SHELL
-       - broke the code that sets HOSTNAME, HOSTTYPE, MACHTYPE, OSTYPE
-         out into a separate function, set_machine_vars; none of those
-         variables are auto-exported
-       - bash no longer un-exports SSH_CLIENT or SSH2_CLIENT
-
-shell.c
-       - changed isnetconn() to check SSH_CLIENT and SSH2_CLIENT only if
-         SSH_SOURCE_BASHRC is defined in config-top.h
-
-config-top.h
-       - added a commented-out definition for SSH_SOURCE_BASHRC
-
-                                  10/25
-                                  -----
-
-Makefile.in
-       - changed RELSTATUS to `rc1' (release candidate 1)
-
-                                  10/29
-                                  -----
-locale.c
-       - fixed an `=' vs. `==' typo in set_locale_var when parsing
-         LC_NUMERIC
-
-doc/{bash.1,bashref.texi}
-       - document what bash does with $POSIXLY_CORRECT
-
-doc/builtins.1
-       - some updates
-
-builtins/psize.sh
-       - some mktemp(1) changes
-
-lib/readline/readline.c
-       - change rl_backward to check for rl_point < 0 and reset to 0 if so
-
-lib/readline/util.c
-       - don't compile in _rl_strpbrk if HAVE_STRPBRK is defined
-
-lib/readline/rlprivate.h
-       - remove extern declaration of _rl_strpbrk
-
-lib/readline/rldefs.h
-       - #define _rl_strpbrk as strpbrk if HAVE_STRPBRK is define, otherwise
-         add extern declaration of _rl_strpbrk from rlprivate.h
-
-{mailcheck,shell,variables}.c
-       - make sure to include posixtime.h to get any prototype for time(3)
-         in scope
-
-{array,eval,execute_cmd,mksyntax,subst}.c, parse.y
-builtins/common.c
-lib/sh/pathcanon.c
-       - a few changes as the result of `gcc -Wall' patches from solar
-         designer
-
-builtins/read.def, parse.y
-       - change some calls to free() to xfree()
-
-builtins/set.def
-       - make sure unset_builtin() resets unset_array to 0 each time through
-         the loop, because it's set (and used) depending on the current
-         argument
-
-shell.h
-       - new define, USE_VAR, to force the compiler to not put a particular
-         variable in a register -- helpful if registers are not restored
-         by setjmp/longjmp
-
-builtins/{evalfile.c,{read,wait}.def}, {eval,execute_cmd,shell,test}.c
-       - use USE_VAR for some variables
-
-subst.c
-       - fixed a case in expand_word_internal where a NULL pointer could
-         have been passed to free() (though free() should ignore it)
-       - fixed a case at the end of expand_word_internal where LIST could
-         have been used uninitialized (it makes gcc happy, though it
-         doesn't happen in practice)
-
-test.c
-       - give test_syntax_error(), beyond(), and integer_expected_error()
-         the `__noreturn__' attribute for gcc
-
-unwind_prot.c
-       - in clear_unwind_protect_list(), convert `flags' to `long' (via
-         assignment to a `long' variable) before casting to `char *', in
-         case pointers and longs are 64 bits and ints are 32 (makes no
-         difference on 32-bit machines)
-
-                                  10/30
-                                  -----
-print_cmd.c
-       - fixed cprintf to avoid gcc warning about assigning const pointer
-         to non-const (discarding type qualifier)
-
-{make_cmd,pcomplete,test}.c,parse.y
-       - some minor changes to shut up gcc warnings
-
-lib/sh/tmpfile.c
-       - fixed sh_mktmpfp to avoid file descriptor leaks in the case that
-         sh_mktmpfd succeeds but fdopen fails for some reason
-       - change sh_mktmpfd to use the same scheme for computing `filenum'
-         as sh_mktmpname
-       - change get_sys_tmpdir to prefer P_tmpdir if P_tmpdir is defined
-       - changed sh_mktmpname and sh_mktmpfd to avoid trying to assign to
-         `nameroot' if `nameroot == 0' (duh)
-       - add code to sh_mktmpfd to use mkstemp(3) if USE_MKSTEMP is defined
-       - add code to sh_mktmpname to use mktemp(3) if USE_MKTEMP is defined
-
-support/{fixlinks,mkclone}
-       - use mktemp if it's available for the symlink test
-       - use $TMPDIR instead of hardcoding /tmp; default to /tmp
-       - use a better filename for the symlink test instead of `z'
-
-support/bashbug.sh
-       - more changes inspired by a patch from solar designer
-
-lib/malloc/Makefile.in
-       - new target `alloca', which builds libmalloc.a with alloca.o only
-         (for systems without alloca that are configured --without-bash-malloc)
-
-configure.in
-       - if we don't have a working alloca and are not configured to build
-         the bash malloc library, make a malloc library containing only
-         alloca.o
-
-aclocal.m4
-       - slight change to RL_LIB_READLINE_VERSION to deal with minor version
-         numbers with a letter appended (like 4.2a)
-
-                                  10/31
-                                  -----
-doc/{bash.1,bashref.texi}
-       - slight change to note that only interactive shells resend a SIGHUP
-         to all jobs before exiting
-
-externs.h
-       - declare strto[ui]max only if NEED_STRTOIMAX_DECL is defined.  This
-         keeps picky compilers from choking because intmax_t is not defined
-         (MacOS X 10.1)
-
-builtins/printf.def
-       - #define NEED_STRTOIMAX_DECL before including shell.h
-
-                                  11/1
-                                  ----
-general.c
-       - check in bash_tilde_expand() for an unquoted tilde-prefix; don't
-         bother passing the string to tilde_expand unless the prefix is
-         unquoted
-
-shell.c
-       - fix a problem with $LINENO when executing commands supplied with
-         the -c invocation option when ONESHOT is defined
-
-[bash-2.05a-rc1 frozen]
-
-builtins/printf.def
-       - fix the %n conversion to require that the variable name supplied
-         be a valid shell identifier
-
-variables.c
-       - improve random number generator slightly by using the upper 16
-         bits of the running random number instead of the lower 16, which
-         are incrementally more random
-
-                                  11/2
-                                  ----
-configure.in
-       - if RL_INCLUDEDIR ends up being /usr/include, don't put
-         -I$(RL_INCLUDEDIR) into CFLAGS
-
-                                  11/5
-                                  ----
-doc/{bash.1,bashref.texi}
-       - correct description of POSIXLY_CORRECT to note that the shell enters
-         posix mode *before* the startup files are read if POSIXLY_CORRECT
-         is in the initial environment
-
-variables.c
-       - fix function prologues for init_dirstack_var and init_groups_var
-         to agree with caller (no arguments)
-
-jobs.c
-       - fix forward function declarations for pipe_read and pipe_close
-
-subst.c
-       - removed `inline' attribute from skip_double_quoted because it can
-         potentially be called recursively
-
-bashline.c
-       - quick fix to bashline.c:attempt_shell_completion programmable
-         completion code to just punt if the end of the command word found
-         by find_cmd_end is <= the start found by find_cmd_start (the bug
-         is probably in find_cmd_start -- fix later)
-
-pcomplete.c
-       - fix gen_matches_from_itemlist to return if the stringlist is null
-         after any cleaning or initialization, before trying to use it
-       - fix GEN_COMPS to only bother to try to append the STRINGLIST
-         returned by gen_matches_from_itemlist to `glist' if it's non-NULL
-
-lib/sh/stringlist.c
-       - make copy_stringlist return NULL if the STRINGLIST * passed as an
-         argument is NULL
-       - make append_stringlist call copy_stringlist only if M2 is non-NULL;
-         otherwise just return NULL if m1 is NULL
-       - make word_list_to_stringlist return 0 immediately if the passed
-         LIST argument is NULL
-       - make realloc_stringlist call alloc_stringlist if the passed
-         STRINGLIST argument (`sl') is 0, just like realloc calls malloc
-
-subst.c
-       - in skip_to_delim(), if we have an unclosed ${, and it's at the end
-         of the string (string[i] == '{', string[i+1] == '{' and
-         string[i+2] == 0, return si (i +2) immediately without bothering
-         to call extract_dollar_brace_string or extract_delimited_string
-       - in skip_to_delim(), if string[i] is 0 after a call to
-         extract_dollar_brace_string or extract_delimited_string (meaning we
-         have an unclosed ${ or other expansion, return i immediately without
-         doing a `continue' (which will increment i past the end of string)
-       - in split_at_delims, don't increment te by 1 if it's pointing to a
-         delimiter.  this has the effect of skipping the first delimiter
-         char in a possibly multi-character delimiter, and ignoring
-         single-char delimiters like `>'
-
-configure.in
-       - use AC_CHECK_MEMBERS([struct stat.st_blocks]) instead of a call to
-         AC_STRUCT_ST_BLOCKS to avoid configure changing LIBOBJS if the test
-         fails
-
-general.c
-       - introduce two new variables: bash_tilde_{prefixes,suffixes}, set
-         to the additional prefixes and suffixes bash wants to pass to the
-         tilde expansion code (reserved for post-bash-2.05a fix)
-
-aclocal.m4
-       - add missing `test' in BASH_CHECK_SYS_SIGLIST
-
-                                  11/7
-                                  ----
-lib/readline/vi_mode.c
-       - fix rl_vi_goto_mark to explicitly check that the desired mark is
-         between 'a' and 'z', since some locales have lowercase letters
-         outside that range, which could cause a negative subscript
-
-include/chartypes.h
-       - remove superfluous `#undef ISASCII'
-
-lib/sh/strto[iu]max.c
-       - changes from Paul Eggert to work around buggy compilers and catch
-         configuration errors at compile time
-
-aclocal.m4
-       - new macro, BASH_C_LONG_DOUBLE, identical to AC_C_LONG_DOUBLE but
-         with a fix for Irix 5.3 (not called, since I'm not sure it's the
-         right thing to do -- the C standard allows double and long double
-         to be the same size)
-
-lib/sh/snprintf.c
-       - only try to write the trailing NUL in vsnprintf_internal if
-         data->length is >= 0, since if it's not, we probably don't have
-         a buffer
-
-Makefile.in
-       - changed RELSTATUS to `release'
-
-                                  11/8
-                                  ----
-lib/sh/strtol.c
-       - make sure chars passed to toupper are cast to unsigned
-
-unwind_prot.c
-       - change clear_unwind_protect_list to not require a cast from `int'
-         to `char *'
-
-lib/readline/chardefs.h
-       - make _rl_digit_p succeed only for ascii digits, since that's what
-         most callers assume
-
-                                  11/13
-                                  -----
-doc/bashref.texi
-       - added `ERR' trap and [-+]O invocation option to section listing
-         differences from the Bourne shell
-
-                                  11/15
-                                  -----
-[bash-2.05a released]
-
-                                  11/19
-                                  -----
-include/stdc.h
-       - new define, INLINE, defined as `inline' for gcc and empty otherwise
-
-subst.c
-       - make skip_double_quoted, sub_append_string have INLINE attribute
-
-trap.c
-       - use BASH_NSIG as upper limit for signal names in signal_name()
-
-lib/readline/bind.c
-       - use RL_COMMENT_BEGIN_DEFAULT in output for rl-comment-begin value
-
-error.c
-       - fix sys_error to save value of errno around calls to fprintf
-
-doc/Makefile.in
-       - added rules to create PDF files from postscript and dvi input
-
-MANIFEST.doc
-       - added {article,bash,bashref,rose94}.pdf
-
-doc/bash.1
-       - rearranged some `.PD 0' and `.TP' directives so man2html will
-         handle them better (shouldn't affect groff output)
-
-support/man2html.c
-       - small fix to handle quoted string arguments to directives like
-         `.BR' without mangling the output
-
-                                  11/20
-                                  -----
-{arrayfunc,variables}.c
-       - changed calling sequence for dynamic array variable `assign'
-         functions to (SHELL_VAR *self, char *value, arrayind_t ind)
-       - changed calling sequence for dynamic variable assign functions
-         to the same as array variable assign_func.  Now this can be
-         prototyped
-
-variables.h
-       - the assign_func member of a `struct variable' is now of type
-         `sh_var_assign_func_t', which is prototyped
-       - the dynamic_value member of a `struct variable' is now of type
-         `sh_var_value_func_t', which is prototyped
-
-variables.c
-       - changed to use `sh_var_assign_func_t' and `sh_var_value_func_t'
-
-builtins/cd.def
-       - when in posix mode, if the new directory name formed by PWD and
-         the argument passed by the user cannot be canonicalized, and the
-         -P option has not been supplied, return failure immediately
-       - if canonicalization failed, but the fallback to the directory
-         name specified by the user succeeds, reset the current working
-         directory
-
-lib/readline/{input.c,rlprivate.h}
-       - renamed rl_unget_char to _rl_unget_char; made library global
-
-lib/readline/{{bind,readline}.c,{keymaps,rlprivate}.h}
-       - support for `key subsequences'; allows a key sequence and a function
-         mapped to a subsequence of that key sequence.  Primarily to allow
-         arrow keys to be bound in readline vi insert mode, while preserving
-         the ESC function to switch to command mode.
-
-lib/readline/{input.c,rlprivate.h}
-       - new function, _rl_input_queued(T), does a check with select or
-         FIONREAD with a timeout of `T' (which is generally 0)
-
-lib/readline/readline.c
-       - change _rl_dispatch_subseq to test for input in the queue if we
-         get ESC while in vi insertion mode if the keymap entry type for
-         ESC is ISKMAP.  If _rl_input_queued returns non-zero, we assume
-         that an arrow key sequence has been pressed and go ahead with the
-         subsequence.  If it returns zero, we assume that the user pressed
-         ESC to switch into command mode, and dispatch to that right away.
-         This avoids forcing the user to press another key before switching
-         into command mode
-
-                                  11/21
-                                  -----
-lib/readline/readline.c
-       - bind common arrow key sequences in vi insertion keymap
-
-lib/readline/terminal.c
-       - bind termcap definition's arrow keys in vi insertion keymap
-
-lib/readline/bind.c
-       - check for rl_vi_movement_mode in _rl_bind_if_unbound, so
-         binding the arrow keys can work
-
-lib/readline/readline.c
-       - since _rl_bind_if_unbound does the check of what's currently
-         bound to the key sequence, the check in bind_arrow_keys_internal
-         was redundant
-       - bind_arrow_keys_internal now takes a Keymap argument and handles
-         saving and restoring _rl_keymap; changed bind_arrow_keys
-         accordingly
-
-builtins/fc.def
-       - fix from Paul Eggert to substitute the nearest history number in
-         range if an out-of-range value is supplied.  POSIX requires this
-
-lib/sh/pathcanon.c
-       - fix from Corrina Vinschen for the special `cygdrive' prefix on
-         Cygwin
-
-bashhist.c
-       - split the history adding code into more pieces:
-           check_history_control (char *line) checks LINE against the value
-           of HISTCONTROL, returning 1 if LINE should be saved and 0 if not
-
-           check_add_history (char *line) calls check_history_control and
-           history_should_ignore (line) and saves the line with
-           bash_add_history if the checks indicate that it should be saved
-
-           maybe_add_history just calls check_add_history to set the value
-           of first_line_saved
-
-bashhist.h
-       - extern declaration for check_add_history()
-
-shell.c
-       - don't call load_history() from the interactive shell startup
-         code if history_lines_this_session is > 0, indicating that we've
-         already saved some lines in the history and that we probably
-         don't want to overwrite them
-
-builtins/history.def
-       - call check_add_history from push_history, so `history -s xx'
-         works even when in a compound command whose first line has not
-         been saved.  (Caveat:  in a compound command when the first
-         line has been saved, the line supplied to history -s will become
-         part of the compound command's history entry.  Of course, the
-         delete_history call could remove the compound command from the
-         history entirely)
-
-bashline.c
-       - use sh_makepath instead of xmalloc/sprintf in
-         command_word_completion_function
-
-lib/readline/complete.c
-       - get_y_or_n now takes an int FOR_PAGER argument; caller changed
-         If FOR_PAGER is non-zero, get_y_or_n returns appropriate values
-         for a more-like pager:  `newline' or `return' return 2; `q' or
-         `Q' return 0
-       - there is now a mini internal more-like pager for displaying a
-         list of completions that exceeds the screen height (new function
-         _rl_internal_pager, called from rl_display_match_list)
-
-                                  11/24
-                                  -----
-command.h
-       - new flag, W_TILDEEXP, says to do tilde expansion on an
-         assignment word
-
-execute_cmd.c
-       - fix_assignment_words now sets W_TILDEEXP for assignment word
-         arguments to `assignment builtins'
-
-general.c
-       - bash_tilde_expand now takes a second argument indicating whether
-         or not it's being invoked in an `assignment context'
-
-general.h
-       - change extern declaration for bash_tilde_expand
-
-{bashline,execute_cmd,findcmd,general,variables}.c
-builtins/evalfile.c
-lib/sh/makepath.c
-       - fix callers of bash_tilde_expand appropriately
-
-subst.c
-       - fix callers of bash_tilde_expansion appropriately
-       - add (currently commented-out) code that would tilde expand assignment
-         statement arguments to assignment builtins (W_TILDEEXP flag set)
-         even when the shell is in posix mode
-
-bashline.c
-       - fix attempt_shell_completion to turn off
-         rl_filename_completion_desired when doing command name completion,
-         so no slash gets appended to the name if there happens to be a
-         directory with the same name in the current directory
-
-                                  11/26
-                                  -----
-lib/readline/rltech.texinfo
-       - a couple of additions to the rl_stuff_char description
-
-parse.y
-       - turn off echo_input_at_read in parse_string_to_word_list, so `set -v'
-         doesn't give extra lines of output when doing compound array
-         assignment
-
-subst.c
-       - fix split_at_delims to handle skipping over a `\n' if it's a
-         delimiter (use spctabnl(c) instead of whitespace(c))
-
-                                  11/27
-                                  -----
-support/config.{guess,sub}
-       - updated (with bash changes) to latest version from gnu.org
-
-sig.h
-       - add prototype for set_signal_handler declaration
-
-builtins/setattr.def
-       - add prototype to extern declaration of declare_builtin
-
-builtins/times.def
-       - add no_options call, since times takes no options
-
-lib/sh/spell.c
-       - add prototypes to forward declarations for midist and spdist
-
-lib/sh/strtrans.c
-       - add explicit int return type to ansic_shouldquote declaration
-
-lib/readline/rldefs.h, lib/readline/{macro,readline,util,undo}.c
-       - move define for SWAP to rldefs.h, removed from various C files
-
-lib/readline/vi_mode.c
-       - removed define for exchange(), changed to use SWAP instead
-
-lib/readline/bind.c
-       - added some static forward function declarations
-       - find_boolean_var, find_string_var now take a `const char *' argument
-
-lib/readline/signals.c
-       - added static forward declaration for rl_maybe_set_sighandler
-
-lib/readline/readline.c
-       - add some common key bindings for the HOME and END keys in
-         bind_arrow_keys_internal
-
-lib/readline/terminal.c
-       - fetch the `@7' termcap string; it's sent by the END key
-       - attempt to bind the terminal's END key to rl_end_of_line in
-         bind_termcap_arrow_keys; I don't know why I was using `kH'
-         instead of `@7'
-
-doc/builtins.1
-       - remove `case', `for', `if', `until', `while' from NAME section;
-         those are not shell builtins
-
-                                  11/28
-                                  -----
-stringlib.c
-       - new function, find_token_in_alist, takes a token value and an
-         ALIST argument, and returns the string correspoinding to the
-         token if found in the alist
-
-externs.h
-       - new extern declaration for find_token_in_alist()
-
-subst.c
-       - string_list_internal is no longer static
-
-subst.h
-       - new extern declaration for string_list_internal()
-
-parse.y
-       - new alist array of other tokens returned by read_token which are
-         not reserved words in word_token_alist[]
-       - reworked error reporting:  new functions print_offending_line,
-         which prints the line containing the syntax error,
-         error_token_from_token, which takes the current token and tries to
-         figure out its textual representation, and error_token_from_text,
-         which does the old job of finding the bad token by analyzing the
-         text of shell_input_line at the current index
-       - report_syntax_error now tries to figure out the token that caused
-         the syntax error by first looking at current_token and falling
-         back to the old method of textual analysis if that fails
-       - report_syntax_error doesn't say the token resulting from the textual
-         analysis of the input line is an `unexpected token'; it just
-         says there is a `syntax error near xxx'
-       - changed conditional command error reporting to use the value
-         returned by error_token_from_token if it's not null instead of
-         just using the token value in the message, since current_token
-         ends up being set to -1, and the text of the message from
-         report_syntax_error might not be exactly right
-       - change parse_string_to_word_list to set current_token to the
-         offending token returned by read_token before calling yyerror()
-         to make the error reporting do the right thing
-
-aclocal.m4
-       - fixed typo in BASH_CHECK_LIB_TERMCAP
-
-configure.in
-       - add check for isinf(3); define HAVE_ISINF_IN_LIBC if found
-
-config.h.in
-       - add define for HAVE_ISINF_IN_LIBC
-
-lib/sh/snprintf.c
-       - check for Inf and NaN, using isinf and isnan if they're found in
-         libc
-       - use the current locale for thousands separator and decimal point
-       - recognize "'" flag; not implemented yet
-       - fix for snprintf/vsnprintf with length of 0 and string argument of
-         0 with non-zero length
-
-builtins/read.def
-       - TMOUT is now the default timeout for `read' (and select) if set,
-         like ksh93 when reading from the terminal
-       - edit_line (called by read -e) now just does readline's filename
-         completion by setting rl_attempted_completion_function to NULL,
-         since e.g., doing command completion for the first word on the
-         line wasn't really useful
-
-execute_cmd.c
-       - changed select_command to return failure status if select_query
-         returns NULL, indicating that read_builtin returned
-         EXECUTION_FAILURE
-
-doc/{bash.1,bashref.texi}
-       - documented new TMOUT behavior 
-       - slight change to the description of the test `-ef' option
-
-doc/bashref.texi
-       - added item to posix mode section describing failure behavior of
-         cd when invoked in logical mode and the pathname formed by
-         combining $PWD and the directory argument does not refer to an
-         existing directory
-
-                                  11/29
-                                  -----
-execute_cmd.c
-       - fix execute_function to call dispose_function_env after
-         merge_function_env if the shell is in posix mode (fixes debian
-         bash bug #117673)
-
-lib/readline/readline.c
-       - rl_forward -> rl_forward_char; rl_forward function for compatibility
-       - rl_backward -> rl_backward_char; rl_forward function for
-         compatibility
-       - new functions, rl_forward_byte, rl_backward_byte, for future use
-
-lib/readline/readline.h
-       - extern declarations for rl_forward_char, rl_backward_char,
-         rl_forward_byte, rl_backward_byte
-
-lib/readline/{emacs_keymap,funmap,vi_keymap,vi_mode
-       - rl_forward -> rl_forward_char
-       - rl_backward -> rl_backward_char
-
-lib/readline/funmap.c
-       - new bindable names, `backward-byte' and `forward-byte'
-
-aclocal.m4
-       - new function, BASH_CHECK_MULTIBYTE, encapsulates checks for
-         multibyte code
-
-config.h.in
-       - add necessary defines for multibyte include files and functions
-
-configure.in
-       - add call to BASH_CHECK_MULTIBYTE
-
-config-bot.h
-       - add code to define HANDLE_MULTIBYTE if prerequisites are met
-
-lib/sh/xstrchr.c
-       - new file, xstrchr() is strchr(3) that handles multibyte characters
-
-bashhist.c
-       - first_line_saved -> current_command_first_line_saved; variable is
-         now global
-
-bashhist.h
-       - extern declaration for current_command_first_line_saved
-
-                                  11/30
-                                  -----
-bashhist.c
-       - break the code that actually calls add_history out of
-         bash_add_history into a new function, really_add_history;
-         bash_add_history now calls really_add_history
-       - check_add_history takes a second `force' argument telling it
-         whether to call bash_add_history (force == 0) or really_add_history
-         (force != 0)
-
-builtins/history.def
-       - in push_history, call delete_last_history if the current command
-         has more than one line, the first line was saved, and
-         command-oriented history is active.  This takes care of deleting
-         the right history element if `history -s' is used within a
-         compound or multiline command
-       - in push_history, call check_add_history with second argument of 1
-         to skip check of current_command_line_count and add the arguments
-         to history -s as a single separate history entry
-
-                                  12/3
-                                  ----
-lib/readline/complete.c
-       - append a slash to completed names which are symlinks to directories
-         if the new variable _rl_complete_mark_symlink_dirs is non-zero
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_complete_mark_symlink_dirs
-
-lib/readline/bind.c
-       - new bindable variable, `mark-symlinked-directories', mirrors the
-         value of _rl_complete_mark_symlink_dirs
-
-doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo}
-       - documented new `mark-symlinked-directories' variable
-
-                                  12/4
-                                  ----
-variables.[ch]
-       - set_pipestatus_array now takes a second argument with the number
-         of processes in the array
-       - changed set_pipestatus_array to just modify the value in place if
-         the existing array has one element and the new array has one
-         element, and to modify existing values in place if new array has
-         more elements than existing array
-
-variables.c, jobs.c
-       - changed set_pipestatus_array callers
-
-jobs.c
-       - moved call to setjstatus() from set_job_status_and_cleanup to
-         wait_for, since set_job_status_and_cleanup is part of the SIGCHLD
-         signal handler call path, and race conditions accessing the
-         PIPESTATUS array will result for things like
-
-               while true; do date; done | cat > /dev/null
-
-                                  12/5
-                                  ----
-xmalloc.h
-       - don't redefine xmalloc, xrealloc, and xfree if DISABLE_MALLOC_WRAPPERS
-         is #defined
-
-config.h.in
-       - #undef for DISABLE_MALLOC_WRAPPERS
-
-configure.in
-       - define DISABLE_MALLOC_WRAPPERS if the --with-purify option is
-         supplied
-
-lib/malloc/trace.c
-       - new function, malloc_trace_bin(N), traces allocations and frees
-         to bucket N (uses the same type of bitmap as `busy')
-
-lib/malloc/table.c
-       - fix wraparound search problem in find_entry when searching for a
-         free entry when the table is full
-
-                                  12/6
-                                  ----
-lib/malloc/table.c
-       - keep an `overflow bucket' around to use when the table is full,
-         so find_entry always returns a valid pointer when FIND_ALLOC
-         is set
-       - new static variable to keep a count of the number of MT_ALLOC
-         entries in the mem_table
-
-lib/sh/{oslib,clktck}.c
-       - if HAVE_LIMITS_H is defined, include <limits.h>
-
-lib/sh/oslib.c
-       - new function, getmaxgroups() returns max number of simultaneous
-         groups
-       - new function, getmaxchild(), returns max number of simultaneous
-         user processes
-
-general.c
-       - removed forest of #defines for getmaxgroups()
-
-externs.h
-       - new extern declaration for getmaxgroups()
-       - new extern declaration for getmaxchild()
-       - new extern declaration for isnetconn()
-
-lib/sh/netconn.c,shell.c
-       - new file, isnetconn() from shell.c moved here
-
-Makefile.in, lib/sh/Makefile.in
-       - necessary changes for netconn.c
-
-builtins/ulimit.def
-       - changed getmaxuprc() to just call getmaxchild() and massage the
-         return value appropriately
-
-{jobs,nojobs}.c
-       - use the value returned by getmaxchild() in
-         mark_dead_jobs_as_notified instead of static CHILD_MAX
-
-jobs.c
-       - new function, compact_jobs_list, removes some number of jobs from
-         the jobs table and reallocates the table, copying the jobs that
-         are left from the old table to the new.  Compaction happens from
-         the beginning of the list and removes dead jobs, and we make sure
-         to keep the last CHILD_MAX jobs as POSIX.2 requires
-       - call compact_jobs_list from stop_pipeline if we're in a subshell,
-         there are no free jobs in the jobs table, and the jobs table is
-         at or above some maximum limit
-
-execute_cmd.c
-       - change eval_arith_for_expr to set this_command_name to `((' before
-         calling evalexp, since it might be changed by evaluating the
-         loop body between evalexp calls
-
-trap.c
-       - change reset_signal to turn off the SIG_TRAPPED flag for the
-         given signal, so shell builtins and functions running in command
-         substitutions don't run the signal handlers (traps are not supposed
-         to be inherited by command substitutions)
-
-parse.y
-       - changed parse_string_to_word_list to turn off alias expansion
-         while parsing the array assignment
-
-                                  12/9
-                                  ----
-alias.c
-       - fix add_alias so that redefining an alias's value also resets the
-         EXPANDNEXT flag
-
-                                  12/10
-                                  -----
-parse.y
-       - new function, token_is_assignment, called to check whether the text
-         before `=' makes up a valid assignment token before trying to parse
-         a compound assignment statement
-       - new function, parse_compound_assignment, to parse a compound
-         assignment statement instead of using parse_matched_pair; handles
-         comments and error reporting in the parser instead of waiting until
-         expansion time
-       - changed parse_compound_assignment and parse_string_to_word_list to
-         allow reserved words in compound array assignments
-
-lib/readline/doc/rltech.texinfo
-       - changed the documentation for rl_callback_read_char and
-         rl_callback_handler_remove to say what happens to the terminal
-         settings and what needs to be done to reset them
-
-                                  12/11
-                                  -----
-bashline.c
-       - add emacs_edit_and_execute_command, bound to C-xC-e, like vi-mode
-         `v' command
-       - add bindable command name `edit-and-execute-command', bound to
-         run emacs_edit_and_execute_command()
-
-lib/glob/strmatch.c
-       - add support for ksh93-like [:word:] character class (isalnum + `_')
-
-doc/{bash.1,bashref.texi}
-       - add note to section describing lists to clarify that a sequence of
-         one or more newlines may be used to delimit a command, equivalent
-         to a semicolon
-       - document new [:word:] pattern matching character class
-
-doc/bash.1, lib/readline/doc/rluser.texinfo
-       - document `edit-and-execute-command' and its default emacs-mode
-         binding
-
-include/chartypes.h
-       - add defines for TOCTRL and UNCTRL if they're not already defined
-
-lib/readline/chardefs.h
-       - #undef UNCTRL if it's defined to avoid cpp redefinition warnings
-
-lib/sh/strtrans.c
-       - add \cX (Control-X) escape for $'...' to ansicstr()
-       - change ansic_quote() to allocate at least four chars for each char
-         in the string argument, to account for \0xx octal values
-       - change ansic_quote() to no longer call sprintf for non-printable
-         characters; just translate the string to octal directly
-
-print_cmd.c
-       - change xtrace_print_word_list to call ansic_quote() if
-         ansic_shouldquote() indicates that there are nonprinting characters
-         in a word
-
-builtins/type.def
-       - changed deprecated long option parsing to just replace the word
-         in the list with the equivalent short option (-type -> -t) instead
-         of removing words from the list
-       - changed describe_command to take a single flags argument instead
-         of two int args; changed caller
-       - type now has two new options:  -f suppresses function lookup (like
-         command), and -P forces a PATH search for the name(s)
-
-builtins/common.h
-       - flags for describe_command are here
-       - changed extern declaration of describe_command
-
-builtins/command.def
-       - changed call to describe_command to use flags from common.h, and
-         the right number of arguments
-
-doc/{bash.1,bashref.texi}
-       - documented new -f and -P options to `type'
-
-                                  12/12
-                                  -----
-lib/readline/rldefs.h
-       - fixed prototype for _rl_strnicmp
-
-execute_cmd.c
-       - select_query now takes a new argument, an int flag saying whether
-         or not to print the menu the first time through the loop.  An
-         empty line in response to the prompt will always cause the menu
-         to be reprinted
-       - changed execute_select_command to cause select_query to reprint
-         the menu only if REPLY is set to NULL, if KSH_COMPATIBLE_SELECT
-         is defined
-
-config-top.h
-       - define KSH_COMPATIBLE_SELECT, with a comment about its meaning
-
-lib/readline/readline.c
-       - change rl_insert_comment to toggle if given an explicit numeric
-         argument:  if the first characters on the line don't specify a
-         comment, insert one; if they do, delete the comment text
-
-doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo}
-       - documented new behavior of insert-comment with a numeric argument
-
-                                  12/13
-                                  -----
-lib/malloc/watch.c
-       - new file, implements watchpoint functions
-
-lib/malloc/watch.h
-       - new file, define some `events' for watchpoints and extern function
-         and variable declarations for watchpoint code
-
-lib/malloc/imalloc.h
-       - #define MALLOC_WATCH if MALLOC_DEBUG is defined
-       - add __P define as in include/stdc.h if not already defined
-
-lib/malloc/malloc.c
-       - remove __P define, now in imalloc.h
-       - include watch.h if MALLOC_WATCH is defined
-       - added calls to _malloc_ckwatch in internal_malloc, internal_free,
-         and internal_realloc
-
-include/stdc.h
-       - augment __P define to allow prototypes if PROTOTYPES is defined
-
-lib/readline/rlstdc.h
-       - augment PARAMS define to allow prototypes if PROTOTYPES is defined
-
-lib/malloc/Makefile.in, Makefile.in
-       necessary changes to include watch.c in libmalloc
-
-lib/readline/readline.c
-       - fix rl_delete_text to make sure that the starting position is >= 0
-       - _rl_init_line_state (called by readline via readline_initialize)
-         now sets rl_mark to 0
-       - rl_get_{next,previous}_history set rl_mark to 0 if rl_point is at
-         the end of the line and rl_end otherwise in emacs mode
-
-lib/readline/kill.c
-       - rl_yank_nth_arg_internal and rl_paste_clipboard now set the mark
-         at point before calling rl_insert_text, like rl_yank
-       - rl_kill_full_line now resets rl_mark to 0
-       - rl_kill_line and rl_backward_kill_line now set rl_mark to the
-         point after the kill in emacs mode
-       - rl_kill_word and rl_backward_kill_word now set rl_mark to the
-         point after the kill in emacs mode
-       - rl_unix_word_rubout and rl_unix_line_discard now set rl_mark to
-         the point after the kill in emacs mode
-
-lib/readline/search.c
-       - noninc_search saves and restores the mark, since it can be changed
-         while reading the search string
-       - noninc_dosearch sets the mark at the end of the line, making the
-         region bound the `inserted' text since rl_point is set to 0
-       - rl_history_search_internal sets the mark at the end of the line,
-         for the same reason
-
-lib/readline/isearch.c
-       - rl_search_history now saves and restores the mark
-       - if no matching lines are found at all when doing an isearch, leave
-         point where it was instead of moving it to the end of the line
-
-                                  12/17
-                                  -----
-lib/readline/rlmbutil.h
-       - new file, place for multi-byte character defines and extern
-         declarations
-
-lib/readline/{bind.c,readline.c,rlprivate.h}
-       - new bindable variable, `byte-oriented', tracks value of
-         rl_byte_oriented variable
-
-lib/readline/mbutil.c
-       - new file, with multibyte char utility functions
-
-lib/readline/{complete,display,readline,util,vi_mode}.c
-       - new code for multibyte characters, derived from IBM patch
-
-                                  12/18
-                                  -----
-lib/sh/tmpfile.c
-       - include posixtime.h for time() extern declaration
-
-support/bashversion.c
-       - include <unistd.h> if it's available
-
-lib/readline/{histexpand,input,isearch,search}.c
-       - new code for multibyte characters, derived from IBM patch
-
-lib/readline/readline.h
-       - include rltypedefs.h
-
-                                  12/19
-                                  -----
-lib/readline/complete.c
-       - slight change to mark-directories code to avoid adding a slash if
-         point is at the end of the line (rl_line_buffer[rl_point] == '\0')
-         and the previous character was a slash
-       - change printable_part to not return empty pathnames, which could
-         happen when completing filenames and a filename with a trailing
-         slash was passed as the argument.  If the portion following the
-         trailing slash is NULL, ignore it and look for a previous slash.
-         If there's no previous slash, just return the filename argument
-       - new variable, rl_completion_mark_symlink_dirs, mirrors the value
-         of (user-settable with a variable) _rl_complete_mark_symlink_dirs
-         but may be modified by application-specific completion functions
-         when appropriate (set in rl_complete_internal and rl_menu_complete)
-
-lib/readline/readline.h
-       - extern declaration for rl_completion_mark_symlink_dirs
-
-pcomplete.c
-       - if one of the actions is CA_DIRECTORY, set
-         rl_completion_mark_symlink_dirs to indicate that we want the
-         trailing slash (might have to relax this)
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_completion_mark_symlink_dirs variable
-
-lib/readline/doc/rluser.texinfo, doc/bash.1
-       - documented the fact that `complete -d' and `complete -o dirnames'
-         force readline to append a slash to symlinks to directories
-
-builtins/enable.def
-       - changed enable_shell_builtin to disallow enabling disabled
-         builtins in a restricted shell
-
-doc/{bash.1,bashref.texi}
-       - documented new enable behavior in restricted shells
-
-doc/Makefile.in
-       - new rule to make an `RBASH' file documenting the restrictions
-         imposed by a restricted shell
-
-expr.c
-       - broke the code that evaluates variables and returns results out
-         of readtok() into a new function: expr_streval()
-       - expr_streval() now performs the standard unset variable error
-         behavior if `set -u' has been executed and it's asked to look
-         up an unset variable
-       - broke the code that frees up the expression context stack into
-         a new function: expr_unwind()
-
-variables.c
-       - fixed bind_int_variable so it handles array element assignment,
-         so expressions like `b[7]++' and `b[0] = 42' work right
-       - new function, get_variable_value, returns the string value of
-         the SHELL_VAR * passed as an argument
-       - get_string_value now calls get_variable_value with a non-null
-         result from find_variable
-
-                                  12/20
-                                  -----
-lib/readline/rlmbutil.h, mbutil.c
-       - combined _rl_find_next_mbchar and _rl_find_next_nonzero_mbchar into
-         a single function
-       - combined _rl_find_prev_mbchar and _rl_find_prev_nonzero_mbchar into
-         a single function
-
-lib/readline/{display,readline,vi_mode}.c
-       - changed callers of _rl_find_next_mbchar and
-         _rl_find_next_nonzero_mbchar
-
-lib/readline/{complete,display,histexpand,readline,vi_mode}.c
-       - changed callers of _rl_find_prev_mbchar and
-         _rl_find_prev_nonzero_mbchar
-
-                                  12/20
-                                  -----
-lib/sh/mktime.c
-       - new file, from glibc/gawk, compiled in if system doesn't have a
-         working mktime(3)
-
-lib/sh/strftime.c
-       - new file, from gawk, compiled in if system doesn't have a
-         working strftime(3)
-
-lib/sh/Makefile.in, Makefile.in
-       - changes for mktime.c, strftime.c
-
-configure.in
-       - call AC_FUNC_MKTIME, AC_STRUCT_TM, AC_STRUCT_TIMEZONE
-       - call AC_REPLACE_FUNC(strftime)
-
-config.h.in
-       - add defines for TM_IN_SYS_TIME, HAVE_TZSET, HAVE_TM_ZONE,
-         HAVE_STRUCT_TM_TM_ZONE, HAVE_STRFTIME
-
-externs.h
-       - provide an extern declaration for strftime if HAVE_STRFTIME is
-         not defined and NEED_STRFTIME_DECL is
-
-lib/tilde/tilde.h
-       - header files should not include <config.h>
-
-parse.y
-       - replace code in decode_prompt_string that chops up value returned
-         by ctime(3) with calls to strftime -- as a result, the expansion
-         of \@ has changed slightly (since it depends on the locale)
-       - added new \D{format} prompt string escape; `format' is passed to
-         strftime(3).  Empty format is the same as `%X' (locale-specific
-         representation of the current time)
-       - combined cases for '\\', '\a', '\e', and '\r' in same case branch
-         in decode_prompt_string
-
-doc/{bash.1,bashref.texi}
-       - documented new \D{format} prompt string expansion
-
-builtins/printf.def
-       - use ISO C PRIdMAX instead of INTMAX_CONV
-       - pass length of format modifiers to mklong instead of computing it
-         with strlen()
-
-lib/sh/{fmtulong,fmtullong}.c
-       - changes from Paul Eggert to make more general
-
-arrayfunc.c
-       - when converting a variable to an array, make sure to unset the
-         dynamic_value and assign_func members of the struct variable,
-         since they're not valid anymore
-
-                                  12/27
-                                  -----
-configure.in
-       - use AC_HELP_STRING in AC_ARG_WITH and AC_ARG_ENABLE 
-       - remove AC_ARG_ENABLE for largefile, since AC_SYS_LARGEFILE adds
-         one
-
-                                1/2/2002
-                                --------
-{alias,bashline,execute_cmd,general,shell,subst,variables,arrayfunc}.c,general.h
-       - changed some calls to strchr to calls to xstrchr for multibyte
-         characters
-
-include/shmbutil.h
-       - add extern declaration for xstrchr to avoid including externs.h
-         where it's not appropriate
-
-{braces,make_cmd,pathexp,subst,arrayfunc}.c, lib/sh/xstrchr.c
-       - include shmbutil.h
-
-{stringlib,subst}.c, {externs,subst}.h
-       - moved substring() from subst.c to stringlib.c, moved declaration
-         from subst.h to externs.h
-
-lib/sh/xmbsrtowcs.c
-       - new file, replacement function for mbsrtowcs
-
-lib/sh/Makefile.in
-       - add entries for xmbsrtowcs.c
-
-Makefile.in
-       - add dependencies on shmbutil.h to appropriate object files
-
-lib/glob/strmatch.c
-       - break character-class testing out into separate function:
-         is_cclass, in prep for multibyte changes
-
-{braces,make_cmd}.c
-       - changes for multibyte characters
-
-builtins/printf.def
-       - changes from Paul Eggert to just use intmax_t everywhere an
-         int/long/quad is needed and print with "%ld" if the number
-         fits in a long and %PRIdMAX otherwise
-       - remove getlong, getulong, getllong, getullong, since they're
-         no longer needed
-       - use a new type `floatmax_t' to print floating point numbers, the
-         widest-available floating point type (like `intmax_t'); new
-         function `getfloatmax' that calls strtold or strtod as appropriate
-       - remove getdouble, getldouble, since they're no longer needed
-
-lib/sh/fmtumax.c
-       - new file, string-to-[u]intmax_t conversion, just includes
-         fmtulong.c with the right defines
-
-Makefile.in, lib/sh/Makefile.in
-       - additions for fmtumax.c
-
-bashtypes.h
-       - include <inttypes.h> if it's available
-
-expr.c
-       - arithmetic is now in intmax_t instead of long
-
-externs.h
-       - extern declaration for fmtumax
-       - change extern declarations for evalexp, itos, inttostr,
-         uitos, uinttostr since they now return or use intmax_t instead
-         of long
-
-{execute_cmd,general,mailcheck,subst,variables}.c, parse.y
-{array,general,subst,test,variables}.h
-lib/sh/{itos,netopen}.c
-builtins/{bashgetopt,common}.c, builtins/common.h
-builtins/{break,fc,history,jobs,let,printf,pushd,read,shift,wait}.def
-       - changes for intmax_t shell arithmetic conversion
-
-doc/{bashref.texi,bash.1}
-       - documented long->intmax_t shell arithmetic conversion
-
-sig.c
-       - in initialize_terminating_signals, if we've already trapped a
-         terminating signal, don't reset the signal handler for it
-
-                                   1/3
-                                   ---
-{arrayfunc,pathexp}.c, parse.y
-       - changes for multibyte chars
-
-parse.y, lib/sh/strtrans.c
-       - moved ansiexpand from parse.y to lib/sh/strtrans.c
-
-parse.y, locale.c
-       - moved mk_msgstr and localeexpand from parse.y to locale.c
-
-parse.y
-       - new function, yy_input_name, returns name of input file from
-         bash_input.name
-       - broke the code that parses ((...)) constructs out of read_token
-         into a new function, parse_dparen()
-
-externs.h
-       - new extern declaration for ansiexpand(), mk_msgstr(), and
-         localeexpand()
-
-input.h
-       - new extern declaration for yy_input_name()
-
-{error,locale}.c
-       - use yy_input_name for error and other messages
-
-execute_cmd.c
-       - change shell_execve to make sure that the file is executable
-         before looking at the interpreter to find out why the execve()
-         failed (avoids misleading error message)
-
-lib/glob/glob.c
-       - move code that matches leading `.' and skips those filenames into
-         a separate function: skipname(), so there can be unibyte and
-         multibyte versions of that function
-
-                                   1/7
-                                   ---
-subst.c
-       - more changes for multibyte characters
-
-print_cmd.c
-       - change semicolon() so it doesn't output a `;' immediately after a
-         newline, since that results in a null command, which is a syntax
-         error
-
-variables.c
-       - fix indirection_level_string to turn off set -x while evaluating
-         PS4
-
-                                   1/8
-                                   ---
-builtins/set.def
-       - make -o options into one struct, instead of separate structs for
-         option names corresponding to flags and non-flag option names.
-         This has the side effect of sorting the option names in output
-
-lib/glob/glob.c
-       - new function, mbskipname(), multibyte char version of skipname()
-       - removed all #ifndef SHELL code, this will never be used outside
-         the shell
-
-include/posixdir.h
-       - move REAL_DIR_ENTRY define here from lib/glob/glob.c
-
-lib/glob/glob_loop.c
-       - new file, included in glob.c for unibyte and multibyte versions of
-         glob_pattern_p
-       - added some forward static function declarations with prototypes
-       - more changes for multibyte character handling
-
-lib/glob/Makefile.in
-       - make glob.c depend on glob_loop.c
-       - changes for xmbsrtowcs.[co]
-
-lib/glob/xmbsrtowcs.c
-       - moved here from lib/sh, since the matching functions use it, and
-         libglob.a is linked after libsh.a
-
-                                   1/9
-                                   ---
-lib/glob/smatch.c
-       - new file, with strmatch (now xstrmatch) and associated functions,
-         with changes for multibyte chars
-
-lib/glob/sm_loop.c
-       - new file, included by smatch.c, with `generic' versions of matching
-         functions that are compiled twice:  once each for single-byte and
-         multibyte characters
-
-lib/glob/strmatch.c
-       - strip out everything except strmatch(), which either calls fnmatch
-         (if HAVE_LIBC_FNM_EXTMATCH is defined) or xstrmatch
-
-lib/glob/collsyms.c
-       - changes for multibyte chars
-
-lib/glob/Makefile.in, Makefile.in
-       - changes for new source files
-
-                                  1/10
-                                  ----
-lib/readline/complete.c
-       - new function, rl_completion_mode (rl_command_func_t *func), returns
-         the appropriate value to pass to rl_complete_internal depending on
-         FUNC and the value of `show-all-if-ambiguous'.  This allows
-         application completion functions to present the same interface as
-         rl_complete
-
-lib/readline/readline.h
-       - new extern declaration for rl_completion_mode()
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_completion_mode
-
-lib/readline/readline.[ch]
-       - bumped the version number to 4.3, changing the relevant cpp defines
-
-configure.in
-       - require that an installed readline version be at least readline-4.3
-
-bashline.c
-       - converted bash-specific completion functions to use
-         rl_completion_mode instead of passing TAB unconditionally
-
-builtins/bashgetopt.c
-       - the `#' option specifier now means a required numeric argument,
-         not an optional one
-
-builtins/type.def
-       - when converting [-]-{path,type,all} to -[pta], don't bother
-         freeing and reallocating the option string; just change opt[1]
-         and null opt[2]
-
-lib/sh/snprintf.c
-       - support %ls/%S and %lc/%C for wide strings and characters,
-         respectively, if HANDLE_MULTIBYTE is defined
-
-mailcheck.c
-       - don't print a message about new mail if the file has not grown,
-         even if the access time is less than the modification time
-
-                                  1/14
-                                  ----
-lib/readline/readline.c
-       - new function, rl_replace_line, to replace the readline line buffer
-         with the text supplied as an argument
-       - new function, rl_replace_from_history, replaces readline line
-         buffer with text from history entry passed as argument (undocumented,
-         not in readline.h because it requires a definition of
-         HIST_ENTRY for the prototype)
-
-lib/readline/readlne.h
-       - new extern declaration for rl_replace_line
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_replace_line
-
-lib/readline/{isearch,readline,search}.c
-       - use rl_replace_line and rl_replace_from_history where appropriate
-
-lib/readline/readline.c
-       - broke the code that sets point after moving through the history
-         (_rl_history_preserve_point and _rl_history_saved_point) out
-         into a separate function, _rl_history_set_point()
-
-lib/readline/{complete.c,rlprivate.h}
-       - find_completion_word -> _rl_find_completion_word
-       - free_match_list -> _rl_free_match_list
-
-lib/readline/complete.c
-       - postprocess_matches and _rl_free_match_list now return immediately
-         if passed a null match list
-
-variables.c
-       - new function, find_local_variable, finds a local variable by name
-         at the current variable context
-       - in find_variable_internal, call find_local_variable before searching
-         any of the temporary environments if variable_context > 0 (meaning
-         we're in a shell function).  This lets a local variable
-         override a variable whose value was passed in the `function
-         environment'
-
-                                  1/15
-                                  ----
-variables.h, execute_cmd.c
-       - declare variables describing the temporary environments in
-         variables.h instead of in C files
-
-findcmd.c, builtins/setattr.def
-       - instead of calling find_tempenv_variable, use find_variable_internal
-         and check whether the returned SHELL_VAR * has the tempvar
-         attribute
-
-variables.c
-       - tentative change to lookup order in find_variable_internal so that
-         function local variables are found before variables in
-         function_env when executing a shell function
-       - change make_local_variable to handle making a local variable when
-         a variable with the same name already appears in one of the
-         temporary environments
-       - broke the body of make_var_array out into a new function:
-               static char **make_env_array_from_var_list (SHELL_VAR **vars)
-       - new function, make_var_array_internal, takes a hash table to look
-         in and a pointer to a mapping function and returns a char **
-         environment-style list
-       - make_var_array now just calls make_var_array_internal
-       - new mapping function, local_and_exported, returns all local variables
-         in the current variable context with the export attribute set
-       - new function, make_local_export_array, returns an environment-style
-         char ** array of exported local variables in current context
-       - change environment creation order in maybe_make_export_env to
-         add variables to the environment in opposite order that
-         find_variable_internal uses.  This means that local variables in
-         shell functions override variables with the same name in the
-         function_env
-       - change make_local_variable to set the initial value of the
-         variable it creates to NULL to make the `is set' and `is null'
-         tests that the expansion code does work right
-       - change make_local_variable to inherit the value of a variable with
-         the same name from the temporary enviroment
-
-                                  1/16
-                                  ----
-Makefile.in
-       - link bashversion with buildversion.o instead of version.o, for
-         cross-compiling.  version.o is for the target system;
-         buildversion.o is for the build system
-
-error.c
-       - add line numbers to internal_error() messages if the shell is
-         not interactive and running a shell script or a -c command
-       - report_error now prints non-zero line numbers for non-interactive
-         shells
-
-test.c
-       - test_syntax_error now calls builtin_error() instead of printing
-         its own messages
-
-builtins/common.c
-       - builtin_error now prints line numbers if a non-interactive shell
-         is running a shell script or a -c command
-
-print_cmd.c
-       - in cprintf, remove free_argp, since it's not used
-
-builtins/history.def
-       - make `history -n' increment the number of history lines in this
-         session by the number of lines read from the history file
-
-arrayfunc.c
-       - fix array_value_internal to expand the subscript even if the
-         variable is unset, so side effects produced by the arithmetic
-         evaluation will take place
-
-lib/readline/doc/{rluser,rltech}.texinfo
-       - some fixes for printing in @smallbook format from Brian
-         Youmans
-
-                                  1/17
-                                  ----
-jobs.h
-       - new PRUNNING, PSTOPPED, PDEADPROC defines for PROCESSes, analogous
-         to RUNNING, STOPPED, and DEADJOB defines for jobs
-
-jobs.c
-       - use PS_RUNNING, PS_DONE, PS_STOPPED values for `running' field
-         of a PROCESS
-       - find_pipeline and find_job now take an additional flags argument
-         that, if non-zero, means to find only running processes; changed
-         all callers
-       - changed calls to find_pipeline and find_job made from waitchld
-         to find only running processes
-       - find_pipeline takes a third argument: an int *.  If it looks in
-         the jobs list to find the pid, and the arg is non-null, it passes
-         the job index back to the caller.  Used to avoid calls to
-         find_pipeline immediately followed by find_job with the same PID
-
-nojobs.c
-       - a couple of changes to make sure that set_pid_status is never
-         called with a pid argument of 0 or -1
-
-trap.c
-       - change trap_handler to longjmp to wait_intr_buf (set by wait_builtin)
-         if a signal is received for which a trap has been set during
-         execution of the wait builtin (need to include builtins.h and
-         builtins/builtext.h and declare some extern variables for the
-         right things to check)
-       - new variable to keep track of which signal caused the longjmp to
-         wait_intr_buf, set by trap_handler (wait_signal_received)
-
-builtins/wait.def
-       - set the return value of wait when a longjmp(wait_intr_buf, 1) is
-         done to 128 + wait_signal_received
-
-{jobs,nojobs}.c
-       - set wait_signal_received to SIGINT in wait_sigint_handler before
-         the longjmp(wait_intr_buf, 1)
-
-                                  1/18
-                                  ----
-bashline.c
-       - turn off rl_filename_completion_desired when completing a command
-         name with a single match only if the first char of that match is
-         not a `/'
-       - if there are multiple identical matches for a command name in
-         attempt_shell_completion, turn off rl_filename_completion_desired
-         if the first char is not a `/' to avoid readline appending a
-         slash if there's a directory with the same name in the current
-         directory
-
-                                  1/22
-                                  ----
-lib/readline/complete.c
-       - new variable, _rl_page_completions, to control whether we want to
-         run the internal pager when listing completions (defaults to 1)
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_page_completions
-
-lib/readline/bind.c
-       - new bindable variable, `page-completions', controls value of
-         _rl_page_completions
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
-       - documented `page-completions' variable
-
-Makefile.in
-       - use $(INSTALL_SCRIPT) instead of $(INSTALL_PROGRAM) to install
-         `bashbug'
-
-aclocal.m4
-       - fix small quoting problem in RL_LIB_READLINE_VERSION macro
-
-lib/readline/terminal.c
-       - fetch and save terminal's `vs' and `ve' cursor control attributes
-       - fetch and save terminal's `kI' attribute (string sent by Insert)
-       - new function, _rl_set_cursor, sets cursor to normal (insert mode)
-         or very visible (overwrite mode)
-
-lib/readline/readline.c
-       - new global variable, rl_insert_mode
-       - new function to toggle overwrite mode, rl_overwrite_mode
-       - each new line starts in insert mode
-       - switching to vi mode or emacs mode resets to insert mode
-       - reset cursor to normal before returning line
-       - _rl_replace_text now returns the number of characters inserted,
-         the return value from rl_insert_text
-       - new function, _rl_insert_or_replace_text (const char *string, int insert),
-         either inserts STRING or replaces the number of chars in STRING
-         with STRING starting at rl_point, depending on value of INSERT
-       - renamed rl_insert to _rl_insert_char, rl_insert just calls
-         _rl_insert_char with the same arguments when in insert mode
-       - new function, _rl_overwrite_char, handles self-insert in overwrite
-         mode.  Does multibyte chars by reading an entire multibyte character
-         before entering overwrite loop
-       - new function, _rl_overwrite_rubout, handles RUBOUT when in
-         overwrite mode, called from rl_rubout
-       - new function, _rl_rubout_char, old body of rl_rubout; rl_rubout
-         calls this when not in overwrite mode 
-
-lib/readline/readline.h
-       - extern declarations for rl_insert_mode and rl_overwrite_mode()
-
-lib/readline/rldefs.h
-       - define constants for values of rl_insert_mode
-
-lib/readline/rlprivate.h
-       - extern declarations for _rl_set_cursor and _rl_set_insert_mode
-       - change type of _rl_replace_text to return int
-       - extern declarations for _rl_insert_char, _rl_rubout_char
-
-lib/readline/funmap.c
-       - new bindable name `overwrite-mode', bound to rl_overwrite_mode
-
-lib/readline/rlconf.h
-       - define CURSOR_MODE if you want the cursor to show insert or
-         overwrite mode (only available if both `vs' and `ve' capabilities
-         are present)
-
-lib/readline/{complete,parens,readline,search,vi_mode}.c
-       - change calls to rl_insert to _rl_insert_char
-
-lib/readline/{readline,search}.c
-       - change calls to rl_rubout to _rl_rubout_char to avoid overwrite
-         mode problems
-
-lib/readline/vi_mode.c
-       - fix rl_vi_overstrike to just call _rl_overwrite_char, which
-         handles multibyte chars
-
-lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
-       - document new `overwrite-mode' command
-
-                                  1/23
-                                  ----
-lib/readline/readline.c
-       - return 0 immediately from rl_insert_text if the string to insert
-         is NULL or ""
-
-bashline.c
-       - if a numeric argument is given to one of the bash-specific glob
-         pattern completion functions (including TAB), append a `*' to
-         the word before generating matches
-       - in attempt_shell_completion, when doing glob completion, only
-         set the match list to NULL if rl_completion_type == TAB and
-         there is more than one completion.  This permits listing completions
-         with double tabs and displaying ambiguous completions
-       - new function, bash_glob_complete_word, appends a `*' to the word
-         to be completed and then globs it.  It uses a new filename
-         quoting function (bash_glob_quote_filename) to avoid quoting
-         globbing characters in the filename if there are no matches or
-         multiple matches
-
-lib/readline/complete.c
-       - set completion_changed_buffer to 0 in rl_complete_internal if
-         no matches were produced by the completion generator function
-       - new variable, rl_completion_suppress_append, suppresses appending
-         of rl_completion_append_character.  Settable by application
-         completion functions, always 0 when application completion
-         functions are called (set to 0 by rl_complete_internal and
-         rl_menu_complete)
-       - broke the code that assigns default values to readline completion
-         variables out of rl_complete_internal and rl_menu_complete into
-         a new function, set_completion_defaults (int what_to_do)
-
-lib/readline/readline.h
-       - extern declaration for rl_completion_suppress_append
-
-lib/readline/doc/rluser.texinfo, doc/bash.1
-       - documented behavior of glob-expand-word and glob-list-expansions
-         when supplied a numeric argument
-       - documented glob-complete-word
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_completion_suppress_append
-
-                                  1/24
-                                  ----
-lib/readline/text.c
-       - new file, text and character handling functions from readline.c
-
-lib/readline/misc.c
-       - new file, miscellanous bindable functions and their supporting
-         code from readline.c
-
-Makefile.in, lib/readline/Makefile.in
-       - changes for text.c, misc.c
-
-lib/readline/bind.c
-       - change ISKMAP case of rl_invoking_keyseqs_in_map to output
-         ESC as "\M-" instead of "\e" -- it's closer to the documentation
-       - change _rl_get_keyname to output ESC as \e instead of \C-[
-         (it's easier to understand)
-
-pcomplete.h
-       - new flag, COPT_NOSPACE
-
-builtins/complete.def
-       - new `-o nospace' option for complete and compgen (though it doesn't
-         really do anything for compgen, since that doesn't hand anything
-         off to readline)
-
-bashline.c
-       - if a programmable completion specifies COPT_NOSPACE, set
-         rl_completion_suppress_append = 1
-
-lib/readline/doc/rluser.texinfo
-       - documented new `-o nospace' option to complete and compgen
-
-doc/{bash.1,bashref.texi}
-       - documented $'\cX' escape sequence (forgot to before)
-
-                                  1/28
-                                  ----
-variables.c
-       - make_new_variable now takes the HASH_TABLE * as its second
-         argument; changed callers
-       - new function, bind_variable_in_table, takes the HASH_TABLE * as
-         its third paramter; bind_variable calls bind_variable_in_table
-         with shell_variables as third argument
-
-variables.h
-       - new struct var_context, variable context (per-scope -- global,
-         function local, etc.)
-
-variables.[ch],builtins/common.[ch]
-       - moved functions that push and pop a variable context from
-         builtins/common.c to variables.c; move extern function
-         declarations to variables.h
-       - new function, all_local_variables
-       - variable_in_context is now static, used only by all_local_variables
-
-variables.[ch],execute_cmd.c
-       - push_context now takes the function name as an argument for
-         future use
-       - push_context takes an indication of whether or not the function is
-         executing in a subshell and saves the positional parameters only
-         if not in a subshell
-       - new functions for managing a stack of variable contexts and
-         scopes:  new_var_context, dispose_var_context, push_var_context,
-         pop_var_context, push_scope, pop_scope
-
-builtins/declare.def
-       - call all_local_variables instead of map_over (...) in declare_internal
-       - don't call make_local_variable if we're looking at functions
-         ((flags_on & att_function) != 0), since it's wasted
-       - make sure VAR is set to NULL if check for variable_context fails
-         and we didn't just create or fetch a local variable in
-         declare_internal
-       - in non-function branch of declare_internal, only call find_variable
-         if VAR is NULL -- if it's not null, we just created or fetched a
-         local variable and don't need to do it again
-
-                                  1/29
-                                  ----
-variables.[ch]
-       - the temporary environments (temporary_env, builtin_env, function_env)
-         are now HASH_TABLEs instead of argv-style arrays of strings (this
-         is an intermediate step on the way to the new lcc-inspired symbol
-         table scope structure)
-       - new internal attribute for variables: att_propagate.  This means
-         to propagate the value out of the temporary environment up the
-         (for now implicit) chain of variable scopes when the containing
-         temporary environment is deleted
-
-variables.c
-       - assign_in_env now adds to the HASH_TABLE temporary_env instead
-         of making environment-style strings in an array of strings
-       - changed the way the temporary environments are merged into the
-         shell variable table to account for the new HASH_TABLE temp
-         environments
-       - changed the way the export environment is created due to the new
-         structure of the temporary environments
-       - new function, bind_variable_internal (name, value, table), binds
-         NAME to have VALUE in TABLE without searching the temporary
-         environments
-       - removed: shell_var_from_env_string, bind_name_in_env_array
-       - variable_in_context now checks the att_local attribute and makes
-         sure the variable is not invisible
-       - local_and_exported now makes sure the variable is not invisible
-
-execute_cmd.c
-       - we no longer need to copy the temporary environment to function_env
-         or builtin_env, we can simply use variable assignments
-
-{findcmd,subst,variables}.c, builtins/{declare,setattr}.def
-       - since variables from the temporary environments are no longer turned
-         into SHELL_VARs on the fly, don't dispose the SHELL_VAR returned
-         by find_variable or find_variable_internal
-       - need to savestring() the value returned by find_variable if it has
-         the tempvar attribute before calling bind_variable on it, because
-         bind_variable will search and bind into the temporary environments
-         and will free the old value before binding the new.  For temporary
-         environments, these two pointers will be the same, and
-         bind_tempenv_variable will end up using freed memory
-
-builtins/{declare,setattr}.def
-       - set the att_propagate attribute when exporting or making readonly
-         variables from the temp environment (i.e., `var=value declare -x var'
-         or `var=value export var' sets the propagate attribute on the entry
-         for `var' in the temporary environment HASH_TABLE)
-
-lib/readline/isearch.c
-       - ^W when reading isearch string yanks the current word out of the
-         current line into the search string, skipping the portion already
-         matched
-       - ^Y when reading isearch string yanks the rest of the current line
-         into the search string, skipping the portion already matched
-
-                                  1/30
-                                  ----
-{print_cmd,variables}.c
-       - moved indirection_level_string() from variables.c to print_cmd.c
-
-{externs,variables}.h
-       - moved extern declaration of indirection_level_string to externs.h
-
-{general,variables}.c
-       - moved assignment() from variables.c to general.c
-
-{general,variables}.h
-       - moved extern declaration of assignment() to general.h
-
-{externs,input}.h
-       - moved extern declaration of decode_prompt_string to externs.h
-
-print_cmd.c
-       - include flags.h, don't include stdc.h
-
-variables.c
-       - moved some functions around to group functions better
-       - changed new_shell_variable to explicitly initialize each member
-         of the created struct variable instead of calling bzero()
-       - make_new_variable now just calls new_shell_variable instead
-         of duplicating what it does
-       - removed some code in bind_function that duplicated what
-         new_variable does on the newly-created SHELL_VAR
-       - since there are no local function variables (functions are always
-         made at the global scope), kill_all_local_variables() doesn't
-         need to consider functions
-
-                                  1/31
-                                  ----
-variables.c
-       - sort the array of special variables
-       - short-circuit the search in stupidly_hack_special_variables if
-         the passed name can't be found in the rest of the array
-         (that is, if name[0] < special_vars[i].name[0])
-
-lib/readline/history.c
-       - unstifle_history() was returning values exactly opposite of
-         the documentation
-
-lib/readline/doc/{hsuser.texinfo,history.3}
-       - clarified the unstifle_history() documentation a little
-
-                                   2/4
-                                   ---
-variables.c
-       - in bind_variable, don't call bind_tempenv_variable after a
-         find_tempenv_variable succeeds -- just change the value inline.
-         There's no reason to look it up twice
-       - change makunbound to only call stupidly_hack_special_variables
-         if we're not unsetting a function
-
-variables.[ch]
-       - new function, unbind_function, like makunbound but doesn't mess
-         with previous contexts or calling stupidly_hack_special_variables
-
-builtins/set.def
-       - change unset_builtin to call either unbind_func or unbind_variable
-
-builtins/getopts.def
-       - call unbind_variable(name) instead of makunbound(name, shell_variables)
-
-                                   2/5
-                                   ---
-lib/glob/sm_loop.c
-       - use malloc instead of xmalloc in BRACKMATCH and handle failures
-
-error.c
-       - add extern declaration of executing_line_number with prototype,
-         since execute_cmd.h can't be included without including other
-         files
-
-lib/readline/parens.c
-       - include <unistd.h>
-
-lib/malloc/stats.c
-       - include <unistd.h>
-       - add extern declaration of malloc_free_blocks() with prototype
-
-pathexp.c
-       - added some forward declarations with prototypes for static functions
-
-lib/readline/rlprivate.h
-       - removed declarations of rl_untranslate_keyseq, rl_discard_argument,
-         rl_stop_output, rl_alphabetic since they appear in readline.h
-
-                                   2/6
-                                   ---
-{arrayfunc,execute_cmd,pcomplete,shell}.c
-       - change calls to makunbound(name, shell_variables) to
-         unbind_variable (name)
-
-                                   2/7
-                                   ---
-builtins/getopt.c
-       - don't defer incrementing of OPTIND when an invalid option is
-         encountered until the next call to sh_getopt() -- what if OPTIND
-         is reset before that next call?  This means that OPTIND is always
-         incremented to the next option to be handled when an option is
-         returned, whether it's valid or not.  This is what POSIX-2002
-         says to do.
-
-syntax.h
-       - new #define, CSUBSTOP
-
-mksyntax.c
-       - add "-=?+" with value CSUBSTOP to the syntax table.  These are the
-         valid expansion operators OP in ${param[:]OPword}
-
-subst.c
-       - use table lookup for CSUBSTOP in VALID_PARAM_EXPAND_CHAR
-       - new flags for the string extraction functions:  EX_NOALLOC.  This
-         indicates that the functions are being used only to skip over
-         strings and the result won't be used, so the substring shouldn't
-         be allocated, copied, and freed
-       - new flag for string_extract:  EX_VARNAME.  This serves the same
-         purpose as the old `varname' parameter.  parameter_brace_expand()
-         changed appropriately
-       - extract_delimited_string and extract_dollar_brace_string now take
-         an additional `flags' argument, which may include EX_NOALLOC
-       - changed callers of extract_delimited_string and
-         extract_dollar_brace_string appropriately
-       - string_extract now understands EX_NOALLOC; callers changed
-       - some smaller code cleanups
-       - converted char_is_quoted(), unclosed_pair(), and skip_to_delim()
-         to understand multibyte characters
-
-                                  2/11
-                                  ----
-variables.[ch]
-       - moved to a symbol organization inspired by lcc.  The basic structure
-         is no longer a HASH_TABLE, but a VAR_CONTEXT, which includes a hash
-         table as one of its members.  VAR_CONTEXTs are linked together to do
-         variable scoping.  One nice thing about this is that the entire
-         symbol table doesn't need to be searched at function scope exit to
-         remove local variables.  Fixes problems with only one instance of
-         builtin_env and function_env, even though it really is a stack
-       - shell_variables is now a VAR_CONTEXT *, with a global_variables
-         variable that points to the bottom of the stack for fast access
-       - function-scope local variables (assignments specified on the command
-         line before a function call) and function-local variables (declared
-         with the `local' builtin) have been unified in the same variable
-         context, replacing function_env
-       - assignment statements preceding the `.' and `eval' builtins are now
-         a separate variable scope VAR_CONTEXT, replacing builtin_env
-       - temporary_env (a HASH_TABLE) is now the only separate environment
-       - changes to export environment creation, variable binding, variable
-         lookup, local variable propagation all changed to work with the
-         new symbol table/scope structure
-       - a SHELL_VAR no longer has a `prev_context' member; it's not needed
-
-execute_cmd.c
-       - changes to push_context calls to include any temporary variables in
-         temporary_env; pop_context takes care of propagating any temporary
-         variables if necessary
-       - calls to push_scope if `eval' or `.' is called with a list of
-         preceding variable assignments, and pop_scope called at end of
-         builtin's execution.  pop_scope takes care of merging temporary
-         variables into the shell environment when appropriate
-
-builtins/{setattr,declare}.def
-       - changes to account for variable assignments preceding `local',
-         `export', `readonly', `declare', etc. to work with the new
-         variable scoping implementation
-
-shell.c
-       - since shell_variables is now a VAR_CONTEXT, call
-         delete_all_contexts() when the shell is reinitializing instead of
-         delete_all_variables()
-
-builtins/common.c
-       - new function, get_job_by_name(), used by execute_simple_command()
-         for the `auto_resume' stuff and get_job_spec()
-
-builtins/common.h
-       - new set of #defined constants for flags argument to
-         get_job_by_name()
-
-                                  2/12
-                                  ----
-command.h
-       - new redirection operator: r_reading_string for `here strings'
-
-parse.y
-       - new token, LESS_LESS_LESS, for new redirection `here string'
-         operator: [N]<<< word
-       - recognize LESS_LESS_LESS and create the appropriate redirection
-
-{dispose_cmd,copy_cmd,make_cmd,print_cmd}.c
-       - recognize r_reading_string and do the right thing (dispose_redirects,
-         copy_redirect, print_redirection, and make_redirection, respectively)
-
-redir.c
-       - here_document_to_fd now takes the redirection operator as its
-         second argument
-       - new function, write_here_string, expands a here string and writes it
-         to the here document file descriptor
-       - here_document_to_fd calls write_here_string for r_reading_string
-         operator
-       - handle r_reading_string in do_redirection_internal() and
-         stdin_redirection()
-
-                                  2/18
-                                  ----
-doc/{bash.1,bashref.texi}
-       - documented here strings
-
-{configure,Makefile}.in
-       - bumped version number up to bash-2.05b and the release status
-         to alpha1
-
-expr.c
-       - make expr_streval understand that variables with the `invisible'
-         attribute are really unset, and accessing such a variable when
-         `set -u' is set should be an error
-
-variables.h
-       - new accessor macros: var_isset(var) and var_isnull(var), test
-         whether var->value is NULL
-
-{eval,subst,variables}.c, builtins/{declare,setattr}.def
-       - be more consistent about using value_cell(var) instead of
-         directly referencing var->value
-       - use var_isset and var_isnull where appropriate
-
-builtins/help.def
-       - augmented a couple of help strings with pointers to `info' and
-         `man -k'
-
-                                  2/14
-                                  ----
-variables.h
-       - new macros to use when setting variable values directly instead of
-         through bind_variable and its siblings
-
-{arrayfunc,variables}.c
-       - use var_setarray and other lvalue macros instead of assigning to
-         var->value directly
-
-builtins/setattr.def
-       - change show_var_attributes to show function definitions separately
-         from function attributes.  This allows the output of `declare -f'
-         (with other flags), `export -f', and `readonly -f' to be reused as
-         shell input, instead of the old
-
-               declare -f[flags] func()
-               {
-                       foo
-               }
-
-         which has syntax errors.  When in posix mode, `export -fp' and
-         `readonly -fp' still don't print function definitions
-
-                                  2/16
-                                  ----
-parse.y
-       - comment out calls to discard_parser_constructs; no need to call
-         empty functions
-
-                                  2/18
-                                  ----
-lib/sh/memset.c
-       - replacement function for memset(3)
-
-lib/sh/Makefile.in, Makefile.in
-       - additions for memset.c
-
-configure.in,config.h.in
-       - check for memset, define HAVE_MEMSET if found, add memset.o to
-         LIBOBJS if not
-
-lib/malloc/malloc.c
-       - removed zmemset(), replaced with calls to memset(3)
-
-{subst,execute_cmd,lib/sh/netopen}.c
-       - replaced calls to bzero with calls to memset
-
-subst.c
-       - word_split() now takes a second argument: the value of $IFS, so
-         it doesn't have to look up IFS every time
-       - word_list_split() now calls getifs() and passes the result to
-         each call to word_split() as its second arg
-       - do a quick scan for CTLNUL in remove_quoted_nulls before allocating
-         new string, copying old string to it, copying over original string
-         and freeing new string
-
-eval.c
-       - don't bother calling dispose_used_env_vars if temporary_env is NULL
-
-execute_cmd.c
-       - fix fix_assignment_words to only look up the builtin corresponding
-         to the first word if one of the words in the list is marked as
-         W_ASSIGNMENT
-
-hashlib.c
-       - renamed hash_string to hash_bucket, which better reflects what it
-         does
-       - extracted the portion of hash_bucket that computes the hash out
-         into a new hash_string()
-       - made new body of hash_bucket into a macro HASH_BUCKET; function
-         just calls the macro
-       - calls to hash_bucket in this file now call HASH_BUCKET macro
-       - in add_hash_item, just add a new item at the front of the appropriate
-         bucket list instead of at the end
-
-hashcmd.h
-       - reduced FILENAME_HASH_BUCKETS to 53 from 107
-
-                                  2/19
-                                  ----
-hashlib.[ch]
-       - find_hash_item, remove_hash_item, add_hash_item all take a new
-         third `flags' argument
-       - add_hash_item doesn't call find_hash_item if HASH_NOSRCH passed in
-         flags arg
-       - find_hash_item will create a new hash table entry if HASH_CREATE is
-         passed in flags arg
-       - new function, hash_walk, takes a pointer to a function and a table
-         and calls the function for each item in the table.  If the function
-         returns < 0, the walk is terminated
-       - fixed flush_hash_table to set table->nentries to 0 after freeing
-         all entries
-       - BUCKET_CONTENTS now has a new `khash' member, what key hashes to;
-         set by HASH_BUCKET macro (which calls hash_string), assigned in
-         find_hash_item (HASH_CREATE) and add_hash_item
-       - find_hash_item and remove_hash_item check `khash' against the
-         hash of the string argument before calling strcmp
-
-{alias,hashlib,hashcmd,pcomplib,variables}.c
-       - changed all calls to {find,remove,add}_hash_item
-
-builtins/hash.def
-       - return immediately from print_hashed_commands if there are no
-         entries in the hash table (this eliminates need for `any_printed'
-         variable)
-       - change print_hashed_commands to use hash_walk
-
-alias.c
-       - short-circuit all_aliases and map_over_aliases if
-         HASH_ENTRIES(aliases) == 0
-       - simplify map_over_aliases by just allocating enough room in the
-         returned list for all entries in the aliases hash table, instead
-         of doing the check and xrealloc
-       - add_alias now calls add_hash_item with HASH_NOSRCH argument
-
-pcomplete.h
-       - sh_csprint_func_t is no more; use hash_wfunc instead
-
-pcomplib.c
-       - short-circuit print_all_compspecs if HASH_ENTRIES(prog_completes)
-         is 0
-       - print_all_compspecs now takes a `hash_wfunc *' argument
-       - print_all_compspecs now just calls hash_walk
-
-builtins/complete.def
-       - new function, print_compitem, takes a BUCKET_CONTENTS *, extracts
-         the right info, and calls print_one_completion
-
-variables.c
-       - short-circuit map_over_funcs if HASH_ENTRIES(shell_functions) == 0
-       - short-circuit flatten if the passed table has no entries
-       - bind_variable_internal takes a new fourth argument: `hflags',
-         to pass to hash table functions
-       - make_new_variable now passes HASH_NOSRCH flag to add_hash_item
-       - set_if_not now calls bind_variable_internal and passes
-         HASH_NOSRCH as flags argument
-       - bind_function now calls add_hash_item with HASH_NOSRCH argument
-       - fixed make_local_variable:  old_var == 0 && was_tmpvar can never
-         be true
-       - if we didn't find an old variable in make_local_variable, call
-         bind_variable_internal with HASH_NOSRCH argument
-       - fix push_temp_var to reset variable context to 0 if binding into
-         global_variables->table
-
-parse.y
-       - fix to parse_compound_assignment to avoid core dumps on empty
-         compound array assignments
-
-subst.c
-       - getifs() is now global so read_builtin can call it
-
-subst.h
-       - extern declaration for getifs()
-
-                                  2/20
-                                  ----
-hashlib.c
-       - changed hash_string to use a better hash function
-       - changed HASH_BUCKET to use masking rather than modulus to hash a
-         string to a bucket -- HASH TABLES MUST NOW BE SIZED BY POWERS
-         OF TWO
-
-hashlib.h
-       - DEFAULT_HASH_BUCKETS is now 64
-
-hashcmd.h
-       - FILENAME_HASH_BUCKETS is now 64
-
-pcomplib.c
-       - COMPLETE_HASH_BUCKETS is now 32
-
-variables.c
-       - TEMPENV_HASH_BUCKETS is now 4
-
-alias.c
-       - new define, ALIAS_HASH_BUCKETS, set to 16, used to size alias table
-
-hashlib.c
-       - removed initialize_hash_table; folded code into make_hash_table
-       - fixed copy_bucket_array to copy the `khash' member of an item
-       - renamed functions to be more systematic and easier for me:
-               make_hash_table -> hash_create
-               hash_table_nentries -> hash_size
-               copy_hash_table -> hash_copy
-               find_hash_item -> hash_search
-               remove_hash_item -> hash_remove
-               add_hash_item -> hash_insert
-               flush_hash_table -> hash_flush
-               dispose_hash_table -> hash_dispose
-               print_table_stats -> hash_pstats
-               get_hash_bucket -> hash_items
-       - changed hash_search to short-circuit if table->nentries == 0 and
-         HASH_CREATE has not been passed in the flags argument
-
-{alias,variables,hashcmd,pcomplib}.c
-       - renamed calls to all renamed functions from hashlib.c
-
-builtins/kill.def
-       - don't drop a leading `-' in a pid argument
-       - call kill_pid with an explicit third argument of 1 if the pid
-         argument to kill is < -1, rather than rely on the behavior of
-         kill(2)
-
-                                  2/21
-                                  ----
-subst.c
-       - quoted_strchr is no longer declared `inline'
-       - skip_double_quoted is no longer declared `inline'
-       - string_extract_double_quoted is no longer declared `inline'
-
-lib/readline/input.c
-       - rl_gather_tyi is now an `int' valued function; returns the number
-         of characters read (0 or 1) or -1 on error
-       - if rl_gather_tyi() returns -1 to rl_read_key(), set rl_done to 1
-         and return a newline; something is wrong with the input fd
-
-                                  2/25
-                                  ----
-variables.[ch]
-       - IFS is now a special variable
-       - new special var function, sv_ifs(), called when IFS is set or unset
-       - call setifs() when IFS is first set in initialize_shell_variables
-       - call setifs() from make_local_variable and assign_in_env if
-         appropriate
-       - if assign_in_env() is called with a var assignment like `VAR=',
-         make the value in the new SHELL_VAR created be "" like
-         do_assignment_internal does, since certain parts of the shell use
-         a NULL value as evidence that the variable is unset (though
-         attributes may have been assigned)
-       - if push_temp_var pushes something up to the global_variables table,
-         make sure that the context is set to 0
-       - new function dispose_temporary_env, called by both
-         dispose_used_env_vars and merge_temporary_env with different `free
-         func' function pointers; calls sv_ifs after disposing the temporary
-         environment
-       - push_exported_var now calls bind_variable_internal instead of
-         bind_variable
-       - pop_scope and pop_context now call sv_ifs
-
-subst.[ch]
-       - new global variables used to keep track of IFS state, to avoid
-         having to call find_variable("IFS") all the time:
-
-               ifs_var         the SHELL_VAR for IFS
-               ifs_value       ifs_var ? value_cell (ifs_var) : " \t\n"
-               ifs_cmap        bitmap of characters in ifs_value
-               ifs_firstc      first character in ifs_value
-
-       - new function setifs(), sets the aforementioned ifs variables each
-         time IFS is set or unset, and at nested scope exit
-       - instead of calling getifs() from inside subst.c, use ifs_value
-       - getifs() now just returns ifs_value
-       - use ifs_firstc in string_list_dollar_star()
-       - only call member() in issep() if separators is more than one char
-       - don't cache a bitmap every time expand_word_internal() is called;
-         use ifs_cmap instead
-       - new macro, isifs(c), checks whether C is in ifs_cmap
-
-builtins/read.def
-       - use issep() and isifs() macros instead of looking at $IFS directly
-
-syntax.h
-       - make sure macros that access sh_syntaxtab cast the argument to
-         `unsigned char' before array access
-       - new macros: issyntype(c, type) and notsyntype(c, type), check
-         sh_syntaxtab[c] for a particular flag value `type'
-
-                                  2/26
-                                  ----
-hashlib.h
-       - the `data' member of a `BUCKET_CONTENTS' is now a PTR_T
-
-{hashlib,alias,variables,hashcmd,pcomplib}.c
-       - removed some casts when assigning to and using `data' member of a
-         `BUCKET_CONTENTS'
-
-subst.c
-       - in split_at_delims, call make_word_list instead of allocating and
-         initializing a WORD_LIST * directly
-
-make_cmd.[ch]
-       - add_string_to_list is now just a macro that calls make_word_list
-       - make_simple_command now calls make_word_list instead of allocating
-         a WORD_LIST * directly
-
-                                  2/27
-                                  ----
-copy_cmd.c
-       - copy_word now calls make_bare_word to allocate the copy
-       - copy_word_list now calls make_word_list to allocate the copy
-
-shell.h
-       - include `ocache.h' for simple object caching
-       - call cmd_init() to initialize the WORD_DESC and WORD_LIST object
-         caches
-
-{make,dispose}_cmd.c
-       - allocate WORD_DESC * and WORD_LIST * vars from their respective
-         ocaches, and return them to the cache when disposing
-
-jobs.c
-       - renamed old `waiting_for_job' variable to `queue_sigchld', which
-         better reflects its intent:  sigchld_handler does not call waitchld
-         if `queue_sigchld' is non-zero, it simply increments the count of
-         waiting children
-       - cleanup_dead_jobs now just sets and clears queue_sigchld instead of
-         blocking and unblocking SIGCHLD; it calls waitchld at the end if
-         `sigchld' is non-zero, but that's not really necessary
-       - in setjstatus, only call xrealloc if `statsize' is less than the
-         number of processes passed -- no reason to do it if they're the
-         same
-
-                                  2/28
-                                  ----
-sig.[ch]
-       - reinitialize_signals is no more; initialize_signals takes an
-         argument saying whether or not we are reinitializing
-
-builtins/exec.def
-       - reinitialize_signals() -> initialize_signals(1)
-
-test.c
-       - fix filecomp() to work right when one file has a non-positive
-         timestamp and the other file does not exist
-
-doc/{bash.1,bashref.texi}
-       - document what happens for test's -nt and -ot operators when one
-         file operand exists and the other does not
-
-jobs.c
-       - if we haven't messed with SIGTTOU, just manipulate queue_sigchld
-         in notify_of_job_status instead of calling sigprocmask()
-       - list_one_job now calls pretty_print_job directly instead of going
-         through print_job
-       - pretty_print_job now must be called with SIGCHLD blocked or held
-         instead of blocking SIGCHLD itself
-       - changed start_job so that it doesn't call UNBLOCK_CHILD and then
-         immediately call BLOCK_CHILD again (explicitly or via last_pid()),
-         call find_last_pid instead of last_pid and then UNBLOCK_CHILD
-       - changed wait_for_job the same way
-       - find_last_pid now takes a second argument: block; uses BLOCK_CHILD
-         if `block' is 1, not otherwise.  Changed existing calls:
-               find_last_pid(j) -> find_last_pid(j, 0)
-               last_pid(j) -> find_last_pid(j, 1)
-         `last_pid()' is now gone
-       - rewrote wait_for_background_pids(); it was a little strange
-       
-copy_cmd.c
-       - copy_if_command: don't copy null false_case commands
-       - copy_simple_command: don't copy a null redirection list
-
-subst.c
-       - in get_word_from_string and list_string, just check for " \t\n"
-         directly rather than calling strcmp
-       - in get_word_from_string and strip_trailing_ifs_whitespace, use
-         isifs() instead of issep(), since they're never called with
-         separators != $IFS
-       - change issep() to call isifs if separators is longer than one
-         character, since it's never called with anything but "", " ",
-         or $IFS
-
-                                   3/1
-                                   ---
-sig.h
-       - enclose the BLOCK_SIGNAL macro in a do {...} while (0) loop, at it
-         should have been all along
-
-lib/readline/doc/rltech.texinfo
-       - document that readline defaults to stdin/stdout if rl_instream/
-         rl_outstream are NULL
-
-lib/readline/terminal.c
-       - if an application is using a custom redisplay function,
-         rl_resize_terminal just calls rl_forced_update_display to tell
-         (*rl_redisplay_func) to update the display, otherwise call
-         _rl_redisplay_after_sigwinch
-
-lib/readline/readline.c
-       - change readline_internal_setup() so the change to vi insertion mode
-         happens even if readline_echoing_p is 0
-       - don't print the prompt to rl_outstream in readline_internal_setup
-         if we're not echoing and the caller has defined a custom redisplay
-         function -- let the redisplay function deal with it
-
-configure.in
-       - new option: --enable-mem-scramble, controls memory scrambling on
-         free() (on by default; only affects use of bash malloc)
-
-config.h.in
-       - new option MEMSCRAMBLE, controlled by --enable-mem-scramble
-
-                                   3/5
-                                   ---
-parse.y
-       - added ksh-like behavior of [...] to read_token_word:  if a `[' is
-         seen in an assignment context and the previous characters in the
-         token form a valid identifier, parse the [...] with
-         parse_matched_pair to allow spaces (and newlines) in the subscript
-
-bashline.c
-       - new function bash_servicename_completion_function, for completing
-         service names from /etc/services
-
-bashline.h
-       - new extern declaration for bash_servicename_completion_function
-
-builtins/complete.def
-       - allow new `-s/-A service' option to complete and compgen builtins
-
-pcomplete.h
-       - new CA_SERVICE define, new ITEMLIST variable it_services
-
-pcomplete.c
-       - add callback to bash_servicename_completion_function to generate
-         list of matching service names for completion
-
-doc/bash.1,lib/readline/doc/rluser.texinfo
-       - documented new `-s/-A service' option to complete and compgen
-
-                                   3/6
-                                   ---
-builtins/read.def
-       - change hard-coded `0' to new variable `fd' (initially 0) in
-         preparation for adding `-u fd' option
-
-bashline.c
-       - bash_directory_completion_hook calls expand_prompt_string instead
-         of expand_string (it does the right thing).  This keeps expansion
-         errors from causing a longjmp, which shouldn't happen because of
-         completion
-       - command_subst_completion_function was augmented very slightly to
-         do filename completion on a non-command-word in a command
-         substitution
-       - command_subst_completion_function now skips over the lcd that
-         rl_completion_matches puts in matches[0] if there is more than
-         one possible completion
-
-                                   3/7
-                                   ---
-builtins/read.def
-       - only add the unwind_protect to free `rlbuf' if `edit' is non-zero,
-         since we won't be using readline otherwise
-
-lib/sh/zread.c
-       - renamed zread1 -> zreadintr
-
-redir.c
-       - small change to redirection_error() to make a slightly better
-         guess about the invalid file descriptor if the redirection op is
-         r_duplicating_input or r_duplicating_output
-
-include/stdc.h
-       - new macro, SH_VA_START, to encapsulate the difference between
-         stdarg va_start and varargs va_start
-
-{error,pcomplete,print_cmd}.c,builtins/common.c,lib/sh/snprintf.c
-       - use SH_VA_START
-
-                                   3/8
-                                   ---
-builtins/read.def
-       - support for the ksh-like `-u fd' option
-
-general.c
-       - new function sh_validfd(fd), returns 1 if fd is a valid open file
-         descriptor
-
-general.h
-       - extern decl for sh_validfd
-
-bashline.c
-       - don't call posix_readline_initialize() from initialize_readline();
-         sv_strict_posix() should already have taken care of it
-
-                                  3/11
-                                  ----
-{error,pcomplete,print_cmd}.c, builtins/common.c
-       - removed non-varargs versions of functions
-
-builtins/printf.def
-       - if the string argument to %q has non-printing characters, call
-         ansic_quote to quote it rather than sh_backslash_quote
-
-variables.h
-       - new attribute: att_trace (and corresponding trace_p() macro).
-         Functions with this attribute will inherit the DEBUG trap.
-         Currently ignored for variables
-
-builtins/declare.def
-       - new `-t' option to declare/typeset toggle the `att_trace' attribute
-
-builtins/setattr.def
-       - check for att_trace and output `-t' flag in show_var_attributes
-
-execute_cmd.c
-       - if a function is being traced (it has the `-t' attribute set),
-         don't turn off the DEBUG trap when it executes
-
-doc/{bash.1,bashref.texi}
-       - document the new `-t' option to declare/typeset
-
-                                  3/12
-                                  ----
-execute_cmd.c
-       - don't execute the debug trap in the `cm_simple:' case of
-         execute_command_internal; run it in execute_simple_command so we
-         get the line number information right when executing in a shell
-         function
-       - run a DEBUG trap before executing ((...)) arithmetic commands,
-         like ksh93
-       - run a DEBUG trap before executing [[...]] conditional commands,
-         like ksh93
-
-eval.c
-       - add a static forward declaration for alrm_catcher()
-
-general.c
-       - add static forward declarations for bash_special_tilde_expansions,
-         unquoted_tilde_word, initialize_group_array
-
-variables.h
-       - add extern declarations for sh_get_env_value, map_over_funcs,
-         local_exported_variables
-
-variables.c
-       - add static forward declarations for dispose_temporary_env,
-         make_func_export_array
-
-bashhist.c
-       - add static forward declaration for check_history_control
-
-configure.in
-       - add a call to AC_CHECK_DECLS for strcpy
-
-config.h.in
-       - add placeholder for HAVE_DECL_STRCPY define, set by configure
-
-general.h
-       - don't declare strcpy if HAVE_DECL_STRCPY is defined with a non-zero
-         value
-
-sig.h
-       - add prototype to typedef of SigHandler
-
-lib/readline/histlib.h
-       - removed extern declaration of strcpy()
-       - include string.h/strings.h directly in histlib.h instead of source
-         files
-
-lib/readline/{histexpand,histfile,history,histsearch}.c
-       - don't include string.h/strings.h now that histlib.h includes it
-
-lib/tilde/tilde.c
-       - removed extern declaration of strcpy(), rely on string.h/strings.h
-
-command.h
-       - four new redirection types: r_move_input, r_move_output,
-         r_move_input_word, r_move_output_word, for
-         [N]<&word- and [N]>&word- from ksh93
-
-print_cmd.c
-       - changes to print r_move_input[_word] and r_move_output[_word]
-
-copy_cmd.c
-       - changes to copy r_move_input[_word] and r_move_output[_word]
-
-dispose_cmd.c
-       - changes to dispose r_move_input_word and r_move_output_word
-
-make_cmd.c
-       - changes to make r_move_input[_word] and r_move_output[_word] from
-         r_duplicating_{input,output}_word, which is how the new redirs
-         are passed by the parser
-
-redir.c
-       - changes to make r_move_input[_word] and r_move_output[_word] do
-         the right thing when executed
-
-builtins/read.def
-       - print an error message and return failure immediately if zread/zreadc
-         return < 0
-
-doc/{bash.1,bashref.texi}
-       - documented new [n]<&word- and [n]>&word- redirections
-
-                                  3/13
-                                  ----
-lib/readline/isearch.c 
-       - enabled code to allow chars bound to rl_rubout to delete characters
-         from the incremental search string
-
-shell.c
-       - add `-l' invocation option to parse_shell_options; equivalent to
-         `--login'
-       - fixed set_login_shell to check first char of base pathname of argv0
-         for `-', like other shells
-       - move the check for make_login_shell after the call to
-         parse_shell_options because the `-l' option might set it
-
-doc/{bash.1,bashref.texi}
-       - documented new `-l' invocation option
-
-array.c
-       - new function, array_shift, shifts an array left by a specified
-         number of elements
-       - array_walk is now compiled in by default
-       - array_to_assignment_string now takes a second argument: int quoted.
-         If non-zero, the result is single-quoted before being returned
-       - quoted_array_assignment_string has been removed
-
-array.[ch]
-       - renamed most of the array functions so that all have an array_
-         prefix and are more systematically named
-       - array_slice now preserves the indicies from the original array
-       - change array_to_assign to use a static buffer for expanding the
-         array indices, instead of malloc/free
-
-{arrayfunc,subst,variables}.c, builtins/read.def
-       - changed calls to various array functions to use new names
-
-lib/sh/stringvec.c, externs.h
-       - renamed all of the functions to have a strvec_ prefix and to have
-         a more sensible name scheme
-       - strvec_search's arguments are now supplied in reverse order, so
-         the char **array is first, like the other functions
-       - new function, strvec_resize, xrealloc for strvecs
-
-{alias,array,bracecomp,braces,bashline,execute_cmd,findcmd,general,pathexp,
-pcomplete,variables}.c
-lib/sh/stringlist.c
-builtins/{bind,complete,exec,getopts,pushd,set}.def
-       - change calls to all functions from lib/sh/stringvec.c
-       - use strvec_resize where appropriate
-
-externs.h
-       - only declare dup2() if HAVE_DUP2 is undefined or DUP2_BROKEN is
-         defined
-
-lib/readline/{macro,readline,util}.c, lib/readline/rlprivate.h
-       - _rl_defining_kbd_macro is gone, use RL_ISSTATE(RL_STATE_MACRODEF)
-
-lib/readline/readline.h
-       - new struct readline_state, encapsulates most of readline's internal
-         state in case you need reentrancy or nested calls to readline()
-       - extern declarations for rl_save_state, rl_restore_state
-
-lib/readline/readline.c
-       - add (undocumented) int rl_save_state (struct readline_state *),
-         int rl_restore_state (struct readline_state *)
-
-                                  3/14
-                                  ----
-array.[ch]
-       - new function, array_rshift, shifts an array right by a specified
-         number of elements, optionally inserting a new element 0
-
-examples/bashdb/bashdb
-       - new single-file version of bash debugger, originally modified from
-         version in bash-2.04 by Gary Vaughan (the old debugger still
-         appears in examples/obashdb).  This version has a more gdb-like
-         command set
-
-examples/bashdb/bashdb.el
-       - new emacs bashdb debugger mode from Masatake YAMATO <jet@gyve.org>
-
-execute_cmd.c
-       - don't make $LINENO relative to function start unless the shell is
-         currently interactive -- this is what ksh93 does and what I
-         believe to be the intent of POSIX.2 (this required changing some
-         of the test checks because the output has changed)
-       - run the debug trap for each command in an arithmetic for expression,
-         like ksh93 does
-
-lib/readline/vi_mode.c
-       - redid rl_vi_subst (binding func for `s' and `S') in terms of
-         rl_vi_change_to:  `S' == `cc' and `s' == `c '.  This makes undo
-         work right
-
-                                  3/18
-                                  ----
-hashlib.c
-       - fixed hash_walk to return if the item function returns < 0, instead
-         of breaking out of the current hash chain
-
-array.c
-       - fixed array_walk to return if the item function returns < 0, like
-         hash_walk
-
-lib/sh/stringlist.c, externs.h
-       - new function: strlist_walk, takes a stringlist and a pointer to an
-         item func.  Like other _walk funcs, if item func returns < 0 the
-         walk is cancelled
-       - new function: strlist_flush, frees items in the contained list
-         with strvec_flush
-       - renamed functions to have a strlist_ prefix and be more systematic
-
-pcomplib.c,pcomplete.h
-       - removed redundant `progcomp_initialized' variable
-       - renamed functions to have `progcomp_' or `compspec_' prefixes
-         like the hash library
-
-{bashline,pcomplete}.c,builtins/complete.def
-       - fixed calls to stringlist functions to use new names
-       - fixed calls to functions in pcomplib.c to use new names
-
-pcomplete.c
-       - made the debugging code #ifdef DEBUG -- it should be mature enough
-
-builtins/hash.def,parse.y
-       - use REVERSE_LIST(x, t) instead of (t)reverse_list(x)
-
-list.c,{externs,general}.h
-       - renamed the list functions to have a list_ prefix, changed callers
-
-externs.h,{execute_cmd,stringlib,subst}.c,builtins/common.c,lib/sh/stringvec.c
-       - word_list_to_argv -> strvec_from_word_list
-       - argv_to_word_list -> strvec_to_word_list
-       - moved functions to lib/sh/stringvec.c
-
-lib/sh/stringvec.c
-       - changed name of second argument to strvec_from_word_list from `copy'
-         to `alloc' so the use of `copy' between strvec_from_word_list and
-         strvec_to_word_list isn't as confusing
-       - changed name and sense of second argument to
-         strvec_to_word_list from `copy' to `alloc' for the same reason --
-         now both functions agree on semantics of second argument
-
-lib/sh/stringlist.c
-       - ditto for strlist_from_word_list and strlist_to_word_list
-
-subst.c
-       - changed callers of strvec_to_word_list
-
-                                  3/19
-                                  ----
-builtins/hash.def
-       - added `-l' option to list table or individual targets in reusable
-         format
-       - added `-d' option to remove one or more names from the table of
-         hashed commands (provides `unhash' or `unalias -t' functionality)
-
-doc/{bash.1,bashref.texi}
-       - documented new `-l' and `-d' options to `hash'
-
-hashcmd.[ch]
-       - renamed functions to have a `phash_' prefix and follow new naming
-         convention
-       - phash_remove now returns an int:  1 if command not in hash table,
-         0 if filename removed OK
-
-{findcmd,variables}.c, builtins/{hash,type}.def
-       - changed callers to use new names from hashcmd.c
-
-builtins/common.[ch]
-       - new function, sh_notfound(s), prints standard `not found' message
-       - new function, sh_invalidid(s), prints standard `invalid identifier'
-         message
-       - new function, sh_restricted(s), prints standard `restricted' message
-         for restricted shells
-       - new function, sh_invalidnum(s), prints standard `invalid number'
-         message
-       - renamed bad_option to sh_invalidopt, changed to print
-         `invalid option' instead of `unknown option'
-       - new function, sh_invalidoptname, prints standard `invalid option
-         name' for long options
-       - new function, sh_badjob (s), prints standard `no such job' message
-       - new function, sh_invalidsig (s), prints standard `invalid signal
-         specification' message
-       - new function, sh_nojobs (s), prints standard `no job control' message
-       - new function, sh_needarg (s), prints standard `option requires an
-         argument' message
-       - new function, sh_neednumarg (s), prints standard `numeric
-         argument required' message
-       - new function, sh_badpid(s), prints standard `not a pid...' message
-       - new function, sh_erange (s, desc) prints standard `out of range'
-         message, optionally using `desc' to say what the argument is
-
-builtins/{alias,command,declare,exec,hash,type}.def
-       - call sh_notfound() instead of calling builtin_error directly
-
-builtins/{declare,getopts,read,set,setattr}.def
-       - call sh_invalidid() instead of calling builtin_error directly
-
-builtins/{cd,command,enable,exec,hash,source}.def
-       - call sh_restricted() instead of calling builtin_error directly
-
-builtins/{printf,read,ulimit}.def, builtins/common.c
-       - call sh_invalidnum instead of calling builtin_error directly
-
-builtins/{complete,declare,pushd,set}.def, builtins/bashgetopt.c
-       - call sh_invalidopt instead of bad_option or builtin_error directly
-
-builtins/{complete,set,shopt}.def
-       - call sh_invalidoptname instead of builtin_error directly
-
-builtins/{fg_bg,jobs,kill,wait}.def
-       - call sh_badjob instead of calling builtin_error directly
-
-builtins/common.c, builtins/{kill,signal}.def
-       - call sh_invalidsig instead of calling builtin_error directly
-
-builtins/{fg_bg,suspend,wait}.def
-       - call sh_nojobs instead of calling builtin_error directly
-
-builtins/{common,bashgetopt}.c, builtins/{hash,kill}.def
-       - call sh_neednumarg and sh_needarg where required
-
-builtins/{kill,wait}.def
-       - call sh_badpid where required
-
-builtins/{break,fc,history,pushd,shift,ulimit,umask}.def
-       - call sh_erange where appropriate
-
-builtins/printf.def
-       - new static function, printf_erange, prints standard out-of-range
-         warning message
-
-builtins/set.def
-       - changed so that calls to sh_invalidopt always include the leading
-         `+' or `-'
-
-builtins/shopt.def
-       - changed SHOPT_ERROR macro to shopt_error function
-
-builtins/bind.def
-       - regularized error messages to `bind: object: error string' like
-         other error messages
-
-builtins.h
-       - the `short_doc' member of a `struct builtin' is now of type
-         `const char *'
-       - the strings in `long_doc' array of a struct builtin are now const
-
-builtins/mkbuiltins.c
-       - changes for new `const' members of struct builtin
-
-                                  3/20
-                                  ----
-lib/readline/histfile.c
-       - use pointers instead of indexing into buffer when reading the
-         contents of the history file in read_history_range and
-         history_truncate_file
-
-                                  3/21
-                                  ----
-lib/readline/histfile.c
-       - new file, with code to mmap the history file for reading and
-         writing (depends on HAVE_MMAP, currently nothing checks for that)
-
-                                  3/25
-                                  ----
-error.[ch]
-       - new function, err_badarraysub(s), calls report_error with standard
-         `bad array subscript' message
-       - new function, err_unboundvar(s), calls report_error with standard
-         `unbound variable' message
-       - new function, err_readonly(s), calls report_error with standard
-         `readonly variable' message
-
-{arrayfunc,subst}.c
-       - call err_badarraysub where appropriate
-
-{expr,subst}.c
-       - call err_unboundvar where appropriate
-
-{arrayfunc,variables}.c
-       - call err_readonly where appropriate
-
-shell.c
-       - changed text of bad option error messages to be the same as that
-         printed for builtin errors
-
-builtins/common.c
-       - changed sh_invalidopt to print the invalid option before the rest
-         of the error message (required some tests to be modified)
-       - new function, sh_readonly, calls builtin_error with standard
-         `readonly variable' message
-
-variables.c,builtins/declare.def
-       - call sh_readonly where appropriate
-
-lib/sh/stringvec.c
-       - added strvec_remove (sv, s), removes S from SV and shuffles rest of
-         elements down 1
-
-lib/sh/stringlist.c
-       - added strlist_remove(sl, s), just calls strvec_remove on the
-         component list
-
-externs.h
-       - new extern declarations for strvec_remove and strlist_remove
-       - fixed extern declaration for strvec_search; the arguments were
-         reversed (unimportant, it's not compiled into the shell)
-
-subst.c
-       - change param_expand to call quote_escapes on values retrieved when
-         expanding the positional parameters
-       - change parameter_brace_expand_word to quote escapes on values
-         retrieved when expanding the positional parameters
-       - fix parameter_brace_substring to quote escape characters on unquoted
-         substrings extracted from variable values (needed to separate case
-         VT_VARIABLE from VT_ARRAYMEMBER for this, since, because
-         get_var_and_type calls array_value for VT_ARRAYMEMBER, we need to
-         skip over quoted characters in an already-appropriately-quoted
-         string to find the substring we want)
-       - fix parameter_brace_substring to quote escape characters in the
-         value returned by pos_params when expanding subsets of the
-         positional parameters and not within double quotes (in which case
-         pos_params() quotes the string for us)
-       - fix parameter_brace_substring to quote escape characters in the
-         value returned by array_subrange when expanding subsets of an
-         array and not within double quotes (in which case
-         array_subrange() quotes the string for us)
-       - new function, quoted_strlen(s), does strlen(s) while skipping over
-         characters quoted with CTLESC (#ifdef INCLUDE_UNUSED, since it's
-         not used yet)
-       - changed pos_params() so it always returns a list whose members are
-         quoted strings if (quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0
-
-arrayfunc.c
-       - fix array_value to consistently call quote_escapes, even when a
-         non-array variable is being subscripted with element 0, in which
-         case we return the variable value
-
-lib/sh/strtrans.c
-       - make the for_echo parameter to ansicstr a `flags' parameter that
-         has its old `for echo' meaning if flags&1 is non-zero (which is
-         consistent with the old code)
-       - Added code to the `flags' parameter to ansicstr so that if flags&2
-         is non-zero, CTLESC and CTLNUL are escaped with CTLESC in the
-         expanded string
-       - change ansiexpand() to call ansicstr with a `flags' parameter of 2
-
-                                  3/26
-                                  ----
-lib/readline/histfile.c
-       - when reading and writing the history file, use malloc instead of
-         xmalloc and handle failures gracefully, so the application doesn't
-         abort if the history file or history list is too big
-
-                                  3/27
-                                  ----
-arrayfunc.c
-       - changed array_value_internal to take an additional `int *'
-         parameter, in which is returned the type of array indexing
-         performed (array[@] vs. array or array[index])
-       - changed array_value and get_array_value to take a corresponding
-         extra parameter and pass it to array_value_internal
-       - changed array_value_internal to no longer return newly-allocated
-         memory or quote CTLESC and CTLNUL in the returned string if
-         `simple' array indexing (subscript not `@' or `*') is being
-         performed.  This makes it more like a variable lookup
-
-arrayfunc.h
-       - changed prototypes for array_value and get_array_value
-
-expr.c
-       - added new parameter to call to get_array_value in expr_streval
-       - don't need to free memory returned by get_array_value any more
-
-subst.c
-       - quote_escapes now works with multibyte characters
-       - dequote_string now works with multibyte characters
-       - dequote_escapes is now needed, so it's compiled in, and it
-         now works with multibyte characters
-       - remove_quoted_escapes now just calls dequote_escapes and copies the
-         result over the argument string
-       - remove_quoted_nulls now returns its char * argument, parallels
-         remove_quoted_escapes
-       - parameter_brace_expand_word now passes the new argument to
-         array_value and quotes CTLESC and CTLNUL in the result if it's a
-         `simple' array expansion by calling quote_escapes
-       - get_var_and_type now returns VT_ARRAYMEMBER for references like
-         ${array} where `array' is an array variable (just like ${array[0]}).
-         Documented (in comment) that a VT_VARIABLE return value means that
-         quote_escapes has been called at some point
-       - changed callers of get_var_and_type to no longer free value if
-         VT_ARRAYMEMBER is returned as type
-       - changed parameter_brace_substring and parameter_brace_patsub to
-         call dequote_escapes on the value from get_var_and_type if the
-         type is VT_VARIABLE, since the substring and pattern substitution
-         code doesn't understand CTLESC quoting
-       - parameter_brace_substring no longer needs to call quoted_substring
-         for the VT_ARRAYMEMBER case
-       - changed parameter_brace_patsub to call quote_escapes on the result
-         of pat_subst for the VT_VARIABLE and VT_ARRAYMEMBER cases, and to
-         quote the returned string in the VT_ARRAYVAR and VT_POSPARAMS cases
-         if the `MATCH_QUOTED' flag isn't set (if it is, the pattern
-         substitution functions perform any necessary quoting)
-       - quoted_substring is no longer used; it's now #ifdef INCLUDE_UNUSED
-
-lib/malloc/mstats.h
-       - new member in _malstats: u_bits32_t bytesreq, the total number of
-         bytes requested by the caller via calls to malloc() and realloc()
-
-lib/malloc/stats.c
-       - print bytesreq member in _print_malloc_stats
-       - don't print statistics for buckets for which nmal == 0 (no mallocs)
-
-lib/malloc/malloc.c
-       - modified internal_malloc, internal_realloc to keep running total of
-         number of bytes requested by calling application
-
-shell.c
-       - sh_exit is now compiled in; exit_shell calls sh_exit
-
-error.c
-       - changed fatal_error, report_error, parser_error to call sh_exit
-
-                                  3/28
-                                  ----
-subst.[ch]
-       - changed Q_NOQUOTE to Q_PATQUOTE; it makes the intent more clear
-
-subst.c
-       - moved code from parameter_brace_expand into a new function that
-         dispatches for pattern substitution: parameter_brace_remove_pattern
-       - changed structure of parameter_brace_remove_pattern to be like
-         parameter_brace_patsub and its ilk:  call get_var_and_type to
-         isolate the variable name, move the pattern isolation code out of
-         the various *_remove_pattern functions into
-         parameter_brace_remove_pattern and pass the results to the various
-         functions, use a switch on the return value from get_var_and_type
-         to decide which function to call, regularized the arguments to the
-         separate pattern removal functions
-       - parameter_brace_remove_pattern now properly quotes escape chars in
-         the returned value
-       - changed get_var_and_type to call dequote_escapes on the `value'
-         parameter for case VT_VARIABLE and return the result in *valp,
-         so the calling functions don't have to do it themselves; changed
-         callers appropriately
-       - fixed getpattern() where it broke posix compliance:  if you enclose
-         a pattern removal spec in double quotes, the outer double quotes
-         have no effect on the pattern (POSIX.1-200x 2.6.2).  This uncovered
-         a bug in the test suite (!)
-
-pathexp.c
-       - fixed a problem with quote_string_for_globbing where it would change
-         consecutive CTLESC chars all to \ instead of changing every other
-         quoted char
-
-                                  3/31
-                                  ----
-lib/malloc/{malloc,stats}.c
-       - moved declaration of _mstats to malloc.c so stats.o doesn't get
-         linked into the shell if the stats functions aren't called
-
-                                   4/2
-                                   ---
-lib/glob/smatch.c
-       - introduce `XCHAR' define, which is the type of arguments passed to
-         strcoll/strcmp/strlen and their wide-character equivalents, added
-         appropriate casts
-       - static arrays in single-byte version of rangecmp() are `char', not
-         `unsigned char', so compilers don't complain about calls to strcoll
-
-lib/glob/sm_loop.c
-       - casts for `XCHAR' and `XCHAR *' arguments to libc functions
-       - use prototype declaration for BRACKMATCH if `PROTOTYPES' is defined
-         to avoid problems with type promotion (unsigned char -> int)
-
-lib/glob/collsyms.h
-       - `name' member of struct _COLLSYM is now of type `XCHAR *', since
-         some compilers don't like `unsigned char *' initializers from
-         constant strings
-
-[bash-2.05b-alpha1 released]
-
-                                   4/3
-                                   ---
-builtins/{evalstring.c,common.h}
-       - new flag for parse_and_execute, SEVAL_NOFREE, means to not free
-         the argument string when finished
-
-lib/readline/text.c
-       - fixed a trivial typo in _rl_insert_char when reading multibyte
-         char sequences
-       - replace calls to ding() with rl_ding()
-
-include/chartypes.h
-       - remove SIGN_EXTEND_CHAR and TOASCII macros; they're unused
-
-make_cmd.c
-       - include dispose_cmd.h for extern function declarations
-
-lib/glob/glob.c
-       - include `shmbutil.h' and `xmalloc.h' for extern function declarations
-
-lib/glob/smatch.c
-       - include `xmalloc.h' for extern function declarations
-
-shell.c
-       - fix maybe_make_restricted to use its argument instead of global
-         `shell_name'
-
-version.c
-       - update copyright message to include this year
-
-lib/readline/display.c
-       - fixes from Jiro SEKIBA <jir@yamato.ibm.com> to fix autowrapping
-         when using multibyte characters
-
-lib/glob/sm_loop.c
-       - fixed a problem in BRACKMATCH where not enough memory was allocated
-         to hold a multibyte character when parsing POSIX.2 char class names
-
-support/config.{guess,sub}
-       - updated via patch from Paul Eggert with latest GNU additions
-
-variables.c
-       - var_lookup should use its `vcontext' argument instead of
-         unconditionally using `shell_variables'
-
-                                   4/4
-                                   ---
-builtins/bind.def,doc/{bash.1,bashref.texi}
-       - changed the usage summary and help text to make it clear that any
-         readline command that may appear in ~/.inputrc may be supplied as
-         one of the non-option arguments to `bind'
-
-builtins/mkbuiltins.c
-       - added support for `-H' option, which means to write long documentation
-         for each builtin to a separate file in the `helpfiles' directory
-
-builtins/Makefile.in
-       - new target `helpdoc', just creates long doc files in helpfiles
-         directory
-
-lib/sh/zcatfd.c
-       - new file, with zcatfd(int fd, int ofd, char *fn); dumps data from
-         FD to OFD
-
-Makefile.in,lib/sh/Makefile.in
-       - added zcatfd.c, zcatfd.o member of libsh.a
-
-builtins/evalstring.c
-       - changed cat_file to call zcatfd(fd, 1, fn)
-
-builtins/{shopt,colon}.def
-       - removed the $DOCNAME directive for `shopt', `true', and `false';
-         just use the names
-       - changed $DOCNAME for `:' to just be `colon' instead of
-         `colon_builtin'
-
-builtins/reserved.def
-       - added help entries for ((, [[, `for (('
-
-builtins/let.def
-       - add id++, id--, ++id, --id, ** to help text
-
-                                   4/8
-                                   ---
-builtins/bashgetopt.[ch]
-       - changed to allow options beginning with `+', enabled by a leading
-         `+' in the option string
-       - new variable, list_opttype, set to `-' or `+'
-
-builtins/{common.c,{builtin,eval,exit,fg_bg,let,printf,pushd,return,source,wait}.def
-       - changes to allow a `--' option for every builtin that accepts
-         operands but not options, as per posix.1-2001
-
-builtins/{declare,setattr}.def
-       - use internal_getopt for parsing options, now that it supports `+'
-
-builtins/set.def
-       - use internal_getopt for initial option parse, now that it supports
-         a leading `+'
-
-
-{configure,Makefile}.in, builtins/{Makefile.in,help.def,mkbuiltins.c}
-       - support for a new configure option, ``--enable-separate-helpfiles'',
-         moves the `long' help text to separate help files, installed by
-         default into ${datadir}/bash, one file per builtin.  Off by
-         default -- it saves 47K, but it's only 47K, and it's in the text
-         segment
-
-flags.c
-       - build internal_getopt() option string argument from flags array at
-         runtime in shell.c
-
-shell.c
-       - new variable to control writing malloc stats at exit:
-         malloc_trace_at_exit, 0 by default
-
-lib/malloc/malloc.c
-       - heavily updated:
-               o partial page allocated on first call to malloc to make
-                 subsequent sbrks page-aligned no longer wasted
-               o begin and end range guards are now the same value: the chunk
-                 requested
-               o coalescing code was changed to attempt to coalesce first two
-                 adjacent blocks on the free list; enabled by default
-               o blocks of size 32 are now candidates for larger block
-                 splitting, since 32 is the most popular size
-               o blocks of size 32 are now candidates for smaller block
-                 coalescing
-               o the IN_BUCKET check was changed to just make sure that the
-                 size isn't too big for the bucket, since the `busy block'
-                 checking code may increase the bucket by one or more,
-                 meaning that the old check would fail and cause a panic when
-                 a chunk allocated in such a way was freed
-               o bin sizes are now precomputed and looked up in an array
-                 rather than being computed at runtime
-               o moved the _mstats declaration here to avoid the stats code
-                 being linked in even when no stats functions were called
-                 (only matters if MALLOC_DEBUG is defined)
-               o malloc now keeps track of the address of the top of the heap
-                 and will return large chunks to the system with calls to
-                 sbrk with a negative argument when freeing the top chunk.
-                 Two thresholds:  LESSCORE_FRC means to unconditionally return
-                 memory to the system; LESSCORE_MIN means to return memory if
-                 there's at least one block already on the free list
-
-lib/malloc/mstats.h
-       - stats struct now keeps track of number of block coalesces by bin,
-         and the number of times memory was returned to the system by bin
-
-lib/malloc/stats.c
-       - trace_malloc_stats now takes a second argument: the name of the file
-         to write to.  The first `%p' in the template file name is replaced
-         by the pid
-
-                                   4/9
-                                   ---
-lib/malloc/imalloc.h
-       - added some macros derived from dlmalloc and glibc malloc to inline
-         memcpy and memset if the requested size is <= 32 bytes
-
-lib/malloc/malloc.c
-       - use MALLOC_MEMSET instead of memset in internal_{malloc,free}
-
-include/ocache.h
-       - use OC_MEMSET (variant of MALLOC_MEMSET) in ocache_free
-
-configure.in, config.h.in
-       - check for getservent(), define HAVE_GETSERVENT if found
-
-bashline.c
-       - punt immediately from bash_servicename_completion_function if
-         HAVE_GETSERVENT is not defined (cygwin seems to not define it)
-       - include "input.h" for extern save_token_state() and
-         restore_token_state() declarations
-       - change bash_execute_unix_command to call parse_and_execute with
-         SEVAL_NOHIST flag so the command doesn't get saved on the history
-         list
-       - change bash_execute_unix_command to save and restore the current
-         command line count and the token state (last_read_token, etc.).
-         Everything else is saved by either parse_and_execute directly or
-         the call it makes to push_stream().  The shell_input_line stuff
-         doesn't need to be saved and restored; it's not computed until
-         readline() returns
-
-                                  4/10
-                                  ----
-lib/glob/glob.[ch]
-       - glob_filename and glob_vector now take an additional `flags' arg
-       - define GX_MARKDIRS as possible flag value for glob_filename and
-         glob_vector
-
-lib/sh/snprintf.c
-       - fixed some bugs with handling of `g' and `G' formats
-       - make sure numtoa returns the fractional part correctly when passed 0
-       - implemented thousands grouping for `'' flag character
-
-lib/sh/rename.c
-       - a few changes to make it more bulletproof
-
-                                  4/11
-                                  ----
-lib/glob/glob.c
-       - added the couple of dozen lines of code to glob_dir_to_array to
-         finish implementing GX_MARKDIRS
-
-builtins/set.def
-       - changed unset builtin so that it no longer considers unsetting an
-         unset variable or function to be an error
-
-lib/readline/display.c
-       - fix to rl_redisplay for a problem which caused display to be messed
-         up when the last line of a multi-line prompt (possibly containing
-         invisible characters) was longer than the screen width
-
-                                  4/15
-                                  ----
-aclocal.m4
-       - use AC_DEFINE_UNQUOTED in BASH_SYS_DEFAULT_MAIL_DIR instead of
-         enumerating all of the possible values and using AC_DEFINE
-
-                                  4/16
-                                  ----
-Makefile.in, {builtins,support}/Makefile.in
-       - new variables, CFLAGS_FOR_BUILD and CPPFLAGS_FOR_BUILD, substituted
-         by `configure'
-       - changed CCFLAGS_FOR_BUILD to BASE_CCFLAGS, removing $(CPPFLAGS);
-         CCFLAGS and CCFLAGS_FOR_BUILD now include $(BASE_CCFLAGS) with
-         (possibly) different values for CPPFLAGS and CFLAGS 
-       - GCC_LINT_CFLAGS now includes $(BASE_CCFLAGS) and $(CPPFLAGS)
-         instead of CCFLAGS_FOR_BUILD
-       - new variable, LDFLAGS_FOR_BUILD, right now equivalent to LDFLAGS
-       - remove $(CPPFLAGS) from recipes for buildversion, mksignames, and
-         mksyntax
-
-configure.in
-       - compute and substitute CFLAGS_FOR_BUILD, CPPFLAGS_FOR_BUILD, and
-         LDFLAGS_FOR_BUILD
-       - changed qnx to use LOCAL_LDFLAGS and LOCAL_LIBS instead of putting
-         everything in LOCAL_LDFLAGS
-
-builtins/Makefile.in
-       - remove $(PROFILE_FLAGS) from recipe for building `mkbuiltins'
-       - use LDFLAGS_FOR_BUILD instead of LDFLAGS in recipe for building
-         `mkbuiltins'
-
-Makefile.in
-       - use $(CC_FOR_BUILD) and $(CCFLAGS_FOR_BUILD) to build auxiliary
-         test programs (printenv, recho, zecho)
-
-support/Makefile.in
-       - use CC_FOR_BUILD and CCFLAGS_FOR_BUILD in recipe for building
-         `man2html'
-
-lib/tilde/Makefile.in
-       - substitute PROFILE_FLAGS, use PROFILE_FLAGS in $(CCFLAGS)
-
-                                  4/25
-                                  ----
-Makefile.in, configure.in
-       - moved RELSTATUS to configure.in; configure substitutes it into
-         the generated Makefile
-
-lib/sh/snprintf.c
-       - fix wchars() to deal with systems where MB_CUR_MAX is not a
-         constant expression
-
-                                   5/2
-                                   ---
-lib/sh/shquote.c
-       - add `,' to list of chars that are backslash-quoted.  It doesn't
-         hurt normal usage and prevents filenames with commas from being
-         inappropriately split by brace expansion after using
-         complete-into-braces
-
-                                   5/6
-                                   ---
-lib/sh/xstrchr.c
-       - we only need the check of MB_CUR_MAX and the slow code for a
-         few encodings, and even then only for a subset of the charset
-
-arrayfunc.c
-       - some speedups for skipsubscript and multibyte chars from Bruno Haible
-
-locale.c
-       - changed set_lang to call setlocale(LC_ALL, ...) if LC_ALL doesn't
-         already have a value, but doesn't change any shell variables
-
-include/shmbutil.h
-       - major speedups from Bruno Haible, mostly concerned with reducing
-         the number of strlen(3) calls
-
-subst.c
-       - change callers of macros in shmbutil.h to add extra argument as
-         necessary
-       - skip_single_quoted and skip_double_quoted take another argument:
-         the length of the string; mostly useful when using multibyte chars
-       - many speedups from precomputing string lengths at function start
-       - fixed a small bug in de_backslash in the midst of rewriting for
-         better efficiency
-
-{braces,make_cmd,pathexp}.c
-       - change callers of macros in shmbutil.h to add extra argument as
-         necessary
-
-pathexp.c
-       - fix a one-too-far problem with multibyte chars in
-         unquoted_glob_pattern_p
-
-braces.c
-       - brace_gobbler takes a new argument, the length of the passed string
-       - expand_amble takes a new argument, the length of the passed string
-
-                                   5/7
-                                   ---
-subst.c
-       - modified remove_quoted_nulls to eliminate the memory allocation and
-         do the copy in place using the same strategy as de_backslash
-
-lib/readline/{rldefs.h,complete.c}
-       - new define RL_QF_OTHER_QUOTE, so _rl_find_completion_word can note
-         that it found a quoting character other than \'" that appears in
-         rl_completer_quote_characters
-
-                                   5/9
-                                   ---
-jobs.c
-       - save and restore old value of jobs_list_frozen when calling trap
-         handlers from set_job_status_and_cleanup to avoid seg faults when
-         running recursive trap handlers
-
-                                  5/10
-                                  ----
-builtins/common.h
-       - new #defines to use for value of changed_dollar_vars (provides
-         information about the caller who wants to blow away the old dollar
-         variables)
-
-builtins/common.c
-       - changed set_dollar_vars_changed to set changed_dollar_vars to one
-         of the ARGS_* values depending on the caller and environment
-
-builtins/source.def
-       - source restores the positional parameters unless the `set' builtin
-         was called to specify a new set while not executing a shell function
-
-                                  5/13
-                                  ----
-POSIX
-       - new file, was in CWRU/POSIX.NOTES
-
-doc/{Makefile.in,Makefile}
-       - changed `posix' rule to modify ../POSIX
-
-doc/mkposix
-       - write to `POSIX' by default
-
-lib/sh/strtrans.c
-       - when ansicstr is parsing a format string for `echo -e' (or the
-         equivalent xpg_echo option is enabled), obey the POSIX-2001/SUSv3
-         standard and accept 0-3 octal digits after a leading `0'
-
-doc/{bash.1,bashref.texi}
-       - updated `echo' description to note that up to three octal digits
-         are now accepted following `\0'
-
-                                  5/16
-                                  ----
-doc/Makefile.in
-       - remove the generated documentation on `make distclean' if the
-         build directory and source directory are not the same
-
-Makefile.in
-       - descend into `support' subdirectory on a `make clean' and
-         `make distclean'
-       - remove parser-built, y.tab[ch] on a `make distclean' if the build
-         directory and source directory are not the same
-
-support/Makefile.in
-       - support various `clean' targets and remove man2html.o and man2html
-
-{configure,Makefile}.in
-       - move values for DEBUG and MALLOC_DEBUG into configure.in; on by
-         default for development versions; off by default for releases
-         (off for profiling, too)
-
-                                  5/21
-                                  ----
-parse.y
-       - modified the grammar to allow a simple_list followed by yacc_EOF
-         to terminate a command.  This fixes problems with things like
-         a backslash-newline at the end of an `eval'd string
-       - change handle_eof_input_unit() to reset the token state before
-         calling prompt_again(), in case the prompt to be evaluated contains
-         a command substitution
-
-                                  5/23
-                                  ----
-lib/readline/vi_mode.c
-       - fix `r' command (rl_vi_change_char) when HANDLE_MULTIBYTE is defined
-         but MB_CUR_MAX == 1
-
-                                  5/24
-                                  ----
-lib/malloc/watch.c
-       - don't try to print `file' argument to _watch_warn if it's null
-
-lib/malloc/malloc.c
-       - changed guard checking code in internal_{malloc,free,realloc} to
-         access memory as (char *) and copy into a union instead of
-         casting and dereferencing a pointer to u_bits32_t, since that
-         results in unaligned accesses which will cause Sparcs to upchuck
-
-                                  5/30
-                                  ----
-[bash-2.05b-beta1 released]
-
-lib/readline/text.c
-       - fixed a problem with rl_transpose_chars on systems supporting
-         multibyte characters with a locale that doesn't have any multibyte
-         chars
-
-                                   6/4
-                                   ---
-expr.c
-       - fix a/=0 and a%=0 to throw evaluation errors rather than core dumps
-
-lib/readline/display.c
-       - fix core dump when line wrapping a multibyte character (line
-         accidentally dropped from the original patch)
-
-lib/readline/mbutil.c
-       - fix reversed return value from _rl_is_mbchar_matched; fixes problem
-         with backward-char-search
-
-                                  6/10
-                                  ----
-lib/sh/getenv.c
-       - fix getenv to not free value returned by find_tempenv_variable
-       - add setenv, putenv, unsetenv for completeness
-
-                                  6/12
-                                  ----
-shell.c
-       - change init_noninteractive to init expand_aliases to the value of
-         posixly_correct
-       - don't initialize expand_aliases to posixly_correct anywhere else.
-         This allows the -O expand_aliases invocation option to work correctly
-
-general.c
-       - fix move_to_high_fd to not try the dup2 unless the fd loop results
-         in an fd > 3; just return the passed file descriptor otherwise
-       - use HIGH_FD_MAX, defined in general.h, instead of hard-coded 256
-         as highest file descriptor to try
-
-subst.c
-       - in process_substitute, call move_to_high_fd with `maxfd' parameter
-         of -1 instead of 64, so move_to_high_fd will use its maximum
-
-                                  6/21
-                                  ----
-lib/malloc/malloc.c
-       - don't bother calling MALLOC_MEMSET if the requested size is 0
-
-builtins/setattr.def
-       - note in short doc that export and readonly can take assignment
-         statements as arguments
-
-error.c
-       - new function, error_prolog(), to capture common error message
-         prefix code (except for parser errors)
-
-                                  6/25
-                                  ----
-aclocal.m4
-       - add tests for standard-conforming declarations for putenv and
-         unsetenv in system header files
-
-{configure,config.h}.in
-       - call BASH_FUNC_STD_PUTENV and BASH_FUNC_STD_UNSETENV, define
-         HAVE_STD_GETENV and HAVE_STD_UNSETENV, respectively, if they
-         succeed
-
-lib/sh/getenv.c
-       - change putenv and unsetenv to take differing prototypes in
-         stdlib.h into account
-
-                                  6/27
-                                  ----
-[bash-2.05b-beta2 released]
-
-                                  6/28
-                                  ----
-builtins/common.c
-       - fix get_job_spec so that %N works when N is the size of the jobs
-         list (%8 means job 8, but the 7th member of the jobs array, so
-         it's OK if N == job_slots because the function returns N-1)
-
-                                   7/1
-                                   ---
-shell.c
-       - turn off line editing if $EMACS is set to `t'
-
-                                  7/10
-                                  ----
-builtins/set.def
-       - remove mention of `-i' from long help doc, since it has no effect
-
-                                  7/17
-                                  ----
-[bash-2.05b released]
-
-                                  7/18
-                                  ----
-
-lib/malloc/malloc.c
-       - make sure that the `free_return' label has a non-empty statement
-         to branch to
-
-                                  7/19
-                                  ----
-locale.c
-       -  only call setlocale() from set_lang() if HAVE_SETLOCALE is defined;
-          otherwise just return 0
-
-lib/readline/mbutil.c
-       - only try to memset `ps' in _rl_get_char_len if it's non-NULL.  Ditto
-         for _rl_adjust_point
-
-                                  7/23
-                                  ----
-execute_cmd.c
-       - fix for executing_line_number() when compiling without conditional
-         commands, dparen arithmetic or the arithmetic for command
-
-                                  
-                                  7/24
-                                  ----
-support/Makefile.in
-       - fix maintainer-clean, distclean, mostlyclean targets
-
-builtins/common.c
-       - fix bug in sh_nojobs where it doesn't pass the right number of args
-         to builtin_error
-
-bashline.c
-       - when using command completion and trying to avoid appending a slash
-         if there's a directory with the same name in the current directory,
-         use absolute_pathname() instead of just checking whether the first
-         char of the match is a slash to catch things like ./ and ../
-
-examples/complete/bashcc-1.0.1.tar.gz
-       - a package of completions for Clear Case, from Richard S. Smith
-         (http://www.rssnet.org/bashcc.html)
-
-input.c
-       - fix check_bash_input to call sync_buffered_stream if the passed fd
-         is 0 and the shell is currently reading input from fd 0 -- all it
-         should cost is maybe an additional read system call, and it fixes
-         the bug where an input redirection to a builtin inside a script
-         which is being read from stdin causes the already-read-and-buffered
-         part of the script to be thrown away, e.g.:
-
-               bash < x1
-
-         where x1 is
-
-               hostname
-               read Input < t.in
-               echo $Input
-               echo xxx
-
-execute_cmd.c
-       - in initialize_subshell(), call unset_bash_input (0) to not mess with
-         fd 0 if that's where bash thinks it's reading input from.  Fixes
-         bug reported by jg@cs.tu-berlin.de on 17 July 2002.  Should be a way
-         to check whether or not the current fd 0 at the time of the call has
-         not been redirected, like in the bug report.  Also might eventually
-         want to throw in a sync_buffered_stream if bash is reading input
-         from fd 0 in a non-interactive shell into a buffered stream, so the
-         stream is sync'd -- might be necessary for some uses
-
-                                  7/25
-                                  ----
-lib/readline/signals.c
-       - make sure rl_catch_sigwinch is declared even if SIGWINCH is not
-         defined, so the readline state saving and restoring functions in
-         readline.c are always the same size even if SIGWINCH is not defined,
-         and undefined references don't occur when SIGWINCH is not defined
-
-                                  7/30
-                                  ----
-bashline.c
-       - augment patch from 7/24 to not disable rl_filename_completion_desired
-         if the first char of the match is `~'
-
-lib/readline/bind.c
-       - when creating `shadow' keymaps `bound' to ANYOTHERKEY, don't bind
-         a key whose type is ISFUNC but whose function is the `fake'
-         rl_do_lowercase_version (fixes debian bash bug #154123)
-
-lib/readline/readline.c
-       - don't call _rl_vi_set_last from _rl_dispatch_subseq if
-         key == ANYOTHERKEY (when truncated to `sizeof(char)', it will be 0,
-         which strchr will find in `vi_textmod')
-
-                                  7/31
-                                  ----
-lib/readline/input.c
-       - fix rl_gather_tyi to only slurp up one line of available input, even
-         if more than one line is available (fixes debian bash bug #144585)
-
-                                   8/3
-                                   ---
-bashline.c
-       - better fix for command completion problem -- test for directory
-         explicitly with test_for_directory before turning off
-         rl_filename_completion_desired, since that's the case we're trying
-         to protect against
-
-                                   8/5
-                                   ---
-include/shmbutil.h
-       - fix ADVANCE_CHAR macro to advance the string pointer if mbrlen
-         returns 0, indicating that the null wide character (wide string
-         terminator) was found (debian bash bug #155436)
-
-lib/readline/mbutil.c
-       - fix _rl_adjust_point to increment the string pointer if mbrlen
-         returns 0
-
-support/shobj-conf
-       - fix for the `-install_name' value in SHLIB_XLDFLAGS assignment for
-         Darwin from the fink folks
-
-                                   8/6
-                                   ---
-builtins/exit.def
-       - broke code that runs ~/.bash_logout out into a separate function:
-         bash_logout()
-
-builtins/common.h
-       - extern declaration for bash_logout()
-
-eval.c
-       - call bash_logout() from alrm_catcher(), so timed-out login shells
-         run ~/.bash_logout before processing the exit trap
-
-lib/sh/strtrans.c
-       - implemented $'\x{hexdigits}' expansion from ksh93
-
-configure.in
-       - define RECYCLES_PIDS in LOCAL_CFLAGS for cygwin; don't bother to
-         link with -luser32
-
-examples/loadables/strftime.c
-       - new loadable builtin, interface to strftime(3)
-
-                                   8/7
-                                   ---
-parse.y
-       - parse_arith_cmd now takes a second argument, a flag saying whether
-         or not to add double quotes to a parsed arithmetic command; changed
-         callers
-       - changed parse_dparen so it tells parse_arith_cmd to not add the
-         double quotes and therefore doesn't need to remove them
-       - change parse_dparen to add W_NOGLOB|W_NOSPLIT|W_QUOTED flags to word
-         created when parsing (( ... )) arithmetic command, since the double
-         quotes are no longer added
-
-make_cmd.c
-       - in make_arith_for_expr, set the flags on the created word to
-         W_NOGLOB|W_NOSPLIT|W_QUOTED
-
-execute_cmd.c
-       - change execute_arith_command to expand the expression with
-         expand_words_no_vars, like the arithmetic for command code does
-       - fix execute_arith_command to handle the case where the expanded
-         expression results in a NULL word without crashing
-
-tests/{arith-for,cprint}.tests
-       - change expected output to account for no longer adding quotes to
-         ((...)) commands
-
-                                   8/8
-                                   ---
-print_cmd.c
-       - take out the space after printing the `((' and before printing the
-         `))' in print_arith_command, print_arith_for_command, and
-         xtrace_print_arith_cmd
-
-tests/{arith-for,cprint}.tests
-       - change expected output to account for no longer adding leading and
-         trailing spaces when printing ((...)) and arithmetic for commands
-
-                                  8/17
-                                  ----
-subst.c
-       - fix issep() define to handle case where separators[0] == '\0', in
-         which case it always returns false
-
-lib/readline/histexpand.c
-       - fix off-by-one error in history_expand_internal when using the `g'
-         modifier that causes it to skip every other match when matching a
-         single character (reported by gjyun90@resl.auto.inha.ac.kr)
-
-doc/{bash.1,bashref.texi}
-       - make sure that the name=word form of argument to declare/typeset,
-         export, and readonly is documented in the description
-
-                                  8/30
-                                  ----
-lib/readline/histexpand.c
-       - make history_expand_internal understand double quotes, because
-         single quotes are not special inside double quotes, according to
-         our shell-like quoting conventions.  We don't want unmatched
-         single quotes inside double-quoted strings inhibiting history
-         expansion
-       - make `a' modifier equivalent to `g' modifier for compatibility with
-         the BSD csh
-       - add a `G' modifier that performs a given substitution once per word
-         (tokenized as the shell would do it) like the BSD csh `g' modifier
-
-                                  8/31
-                                  ----
-braces.c
-       - when compiling for the shell, treat ${...} like \{...} instead of
-         trying to peek backward when we see a `{'.  This makes it easier
-         to handle things like \${, which should be brace expanded because
-         the $ is quoted
-
-                                   9/7
-                                   ---
-aclocal.m4
-       - redirect stdin from /dev/null in BASH_CHECK_DEV_FD before testing
-         the readability of /dev/fd/0, so we're dealing with a known quantity
-
-                                  9/11
-                                  ----
-[prayers for the victims of 9/11/01]
-
-shell.c
-       - fix maybe_make_restricted to handle a restricted login shell with a
-         base pathname of `-rbash' and skip over any leading `-'
-
-                                  9/13
-                                  ----
-builtins/evalstring.c
-       - in parse_and_execute, make sure we don't try to run unwind-protects
-         back to `pe_dispose' after a longjmp back to top_level if the
-         pe_dispose frame hasn't been initialized
-
-lib/readline/display.c
-       - fix problem with prompt overwriting previous output when the output
-         doesn't contain a newline in a multi-byte locale.  This also should
-         fix the problem of bash slowing down drastically on long lines when
-         using a multi-byte locale, because it no longer tries to rewrite the
-         entire line each time.  Patch from Jiro SEKIBA <jir@yamato.ibm.com>
-
-parse.y
-       - move the typedef for alias_t that is compiled in if ALIAS is not
-         defined up before the prototype for push_string, since that takes
-         an alias_t * parameter
-
-lib/readline/terminal.c
-       - bind the termcap description's left and right arrow keys to
-         rl_backward_char and rl_forward_char, respectively,  instead of
-         rl_forward and rl_backward (which are just there for backwards
-         compatibility)
-
-aclocal.m4
-       - when testing readability of /dev/stdin, redirect stdin from /dev/null
-         to make sure it's a readable file
-
-                                  9/17
-                                  ----
-config-bot.h
-       - don't test __STDC__ when deciding whether or not to use stdarg.h;
-         just use it if it's present
-
-tests/read2.sub
-       - redirect from /dev/tty when using `read -t' 
-
-                                  9/20
-                                  ----
-builtins/history.def
-       - when reading `new' entries from the history file with `history -n',
-         fix increment of history_lines_this_session by taking any change
-         in history_base into account
-
-lib/sh/pathphys.c
-       - changes to sh_physpath to deal with pathnames that end up being
-         longer than PATH_MAX without dumping core
-
-lib/readline/doc/{history.3,hsuser.texinfo},doc/ bash.1
-       - documented new `a' and `G' history modifiers
-
-                                  9/25
-                                  ----
-lib/readline/misc.c
-       - when traversing the history list with arrow keys in vi insertion
-         mode, put the cursor at the end of the line (like in emacs mode)
-
-mksyntax.c
-       - don't try to use \a and \v unless __STDC__ is defined; use the
-         ascii integer equivalents otherwise
-       - include "config.h" in the generated syntax.c file for a possible
-         definition of `const'
-
-doc/{bash.1,bashref.texi}
-       - document the meaning of a null directory in $PATH
-
-                                  9/26
-                                  ----
-parse.y
-       - fix set_line_mbstate to handle case where mbrlen() returns 0,
-         indicating the null wide character
-       - fix set_line_mbstate so we don't directly compare a char variable
-         to EOF, since char can (and is) unsigned on some machines
-
-bashline.c
-       - change bash_execute_unix_command to save a little bit more state:
-         last_shell_builtin, this_shell_builtin, last_command_exit_value
-
-                                  9/27
-                                  ----
-execute_cmd.c
-       - tentative change to execute_simple_command to avoid freeing freed
-         memory in the case where bash forks early but still ends up calling
-         execute_disk_command, without passing newly-allocated memory to
-         make_child.  This may fix the core dumps with the linux-from-scratch
-         folks
-
-                                  9/28
-                                  ----
-Makefile.in,{builtins,lib/sh}/Makefile.in      
-       - fix up dependencies, mostly on ${BUILD_DIR}/version.h, so that
-         parallel makes work with GNU and BSD makes
-
-shell.h
-       - new struct to save partial parsing state when doing things like
-         bash_execute_unix_command and other operations that execute
-         commands while a line is being entered and parsed
-
-parse.y
-       - new functions, save_parser_state() and restore_parser_state(), to
-         save and restore partial parsing state 
-
-bashline.c
-       - change bash_execute_unix_command to call {save,restore}_parser_state
-
-builtins/jobs.def
-       - change execute_list_with_replacements to eliminate a run_unwind_frame
-         in favor of calling the cleanup explicitly and discarding the frame
-
-execute_cmd.c
-       - change execute_for_command to avoid a run_unwind_frame in the case
-         where the loop variable is readonly or otherwise not assignable
-       - change execute_select_command and execute_simple_command to use
-         discard_unwind_frame by running the cleanup code explicitly, instead
-         of using run_unwind_frame
-       - make sure execute_select_command decreases loop_level even on error
-
-                                  9/30
-                                  ----
-doc/{bash.1,bashref.texi}
-       - fixed description of `unset' now that unsetting a previously-unset
-         variable is no longer an error
-
-                                  10/3
-                                  ----
-{configure,config.h}.in
-       - augment check for strtold with additional check to detect the
-         horribly broken hp/ux 11.x implementation that returns `long_double';
-         defines STRTOLD_BROKEN if so
-
-builtins/printf.def
-       - define floatmax_t as `double' if STRTOLD_BROKEN is defined
-
-                                  10/5
-                                  ----
-lib/readline/keymaps.c
-       - don't automatically bind uppercase keys to rl_do_lowercase_version
-         in rl_make_bare_keymap
-
-lib/readline/readline.c
-       - explicitly check for ANYOTHERKEY binding to rl_do_lowercase_version
-         and dispatch to lowercase of key when a prefix is not matched
-
-                                  10/12
-                                  -----
-bashline.c
-       - set COMP_WORDBREAKS in enable_hostname_completion to the value
-         of rl_completer_word_break_characters
-
-variables.c
-       - new special variable COMP_WORDBREAKS, controls the value of
-         rl_completer_word_break_characters
-
-variables.h
-       - new extern declaration for sv_comp_wordbreaks()
-
-subst.c
-       - change split_at_delims to behave more like shell word splitting if
-         the passed value for the delimiters is NULL, indicating that the
-         function is to use $IFS to split
-
-{execute_cmd,jobs,test,findcmd,input,make_cmd,redir,shell}.c
-builtins/mkbuiltins.c,builtins/{fc,history,source,umask}.def
-lib/sh/netconn.c
-lib/termcap/termcap.c
-lib/readline/histfile.c
-       - make sure all inclusions of <sys/file.h> are protected by
-         HAVE_SYS_FILE_H
-
-bashline.c
-       - don't turn off rl_filename_completion_desired in
-         attempt_shell_completion if the partial pathname contains a slash.
-         This still doesn't solve the problem of partial pathname completion
-         starting with a directory in the current directory without a
-         leading `./'.  There's no way to tell the difference between that
-         and a file found in $PATH (which may contain `.') at the point that
-         attempt_shell_completion acts
-
-                                  10/18
-                                  -----
-locale.c
-       - don't set lc_all to the default locale when LC_ALL is being unset
-       - new function, reset_locale_vars(), called to recompute the correct
-         locale variable values when LC_ALL is unset
-       - changed set_lang to not set LC_ALL, which it never should have been
-         doing in the first place, and to maintain a local variable `lang'
-         corresponding to $LANG
-       - change get_locale_var to use the precedence posix.2 specifies:
-         LC_ALL overrides individual variables; LANG, if set, is the default
-       - change set_locale_var to call get_locale_var to get the appropriate
-         value for the variable being set or unset
-       - call get_locale_var instead of using passed value in set_locale_var
-         to get the defaulting and precedence right
-
-lib/readline/nls.c
-       - new function, _rl_get_locale_var(), which does the same thing as
-         locale.c:get_locale_var(), with the right precedence and defaulting,
-         using sh_get_env_value to get the right bash variable values
-       - if HAVE_SETLOCALE is defined, _rl_init_eightbit first calls
-         _rl_get_locale_var to get the right value for LC_CTYPE, and uses
-         that in the call to setlocale.  If _rl_get_locale_var returns NULL,
-         call setlocale() to get the current international environment, and,
-         finally, if that returns null, call setlocale with a second argument
-         of "" to force the implementation's `native' environment
-
-pcomplete.c
-       - change gen_wordlist_completions to dequote the text before comparing
-         it against the expanded word list 
-       - changed gen_matches_from_itemlist to do the same thing
-
-bashline.c
-       - new global function, bash_dequote_word, calls bash_dequote_filename
-         on the text passed.  Used by the programmable completion code
-
-lib/readline/histfile.c
-       - make sure that whenever read_history_range returns a non-zero value
-         that it sets errno to some useful value
-
-                                  10/19
-                                  -----
-variables.c
-       - COMP_WORDBREAKS is now a dynamic variable, mirroring value of
-         rl_completer_word_break_characters.  Makes sure that the variable
-         always points to dynamic memory if it's not null or the readline
-         default
-
-bashline.c
-       - change enable_hostname_completion to manage a dynamic value of
-         rl_completer_word_break_characters, since assignments to
-         COMP_WORDBREAKS can change its value unpredictably
-
-lib/readline/{complete.c,readline.h}
-       - rl_completer_word_break_characters no longer has `const' attribute
-
-bashline.c
-       - clean up necessary places due to rl_completer_word_break_characters
-         no longer being `const'
-
-doc/{bash.1,bashref.texi}
-       - document new COMP_WORDBREAKS variable
-
-                                  10/21
-                                  -----
-print_cmd.c
-       - fix indirection_level_string to handle the case where the decoded
-         $PS4 is null without seg faulting
-
-                                  10/22
-                                  -----
-builtins/shift.def
-       - make sure that there is actually an argument when reporting a shift
-         count that exceeds the number of positional paramters and
-         shift_verbose is enabled
-
-lib/readline/rltty.c
-       - change SET_SPECIAL to call a new function, set_special_char, since
-         it contains a block.  It's called infrequently, so the performance
-         impact of making it a function should be negligible, and it helps
-         debugging
-
-                                  10/29
-                                  -----
-bashline.c
-       - make sure the editor in VI_EDIT_COMMAND and EMACS_EDIT_COMMAND is
-         quoted; it might contain spaces (e.g., `emacs -nw')
-
-aclocal.m4
-       - cache ac_cv_rl_version in RL_LIB_READLINE_VERSION macro
-
-configure.in
-       - change logic that sets RL_INCLUDEDIR so that it doesn't try to set
-         a bogus include path if the argument to --with-installed-readline
-         is `yes' -- helps with cross-compiling
-
-lib/readline/histexpand.c
-       - fix history_tokenize_word so that it handles <( and >( better
-
-                                  10/30
-                                  -----
-redir.c
-       - fix write_here_string so it handles the case where `herestr' expands
-         to NULL without seg faulting
-
-                                  10/31
-                                  -----
-mailcheck.c
-       - reverse logic flip from bash-2.05 that handled systems that don't
-         change the atime when the mailbox is accessed; make sure the file
-         is bigger before we report new mail.  This is the case in the vast
-         majority of cases.  Reported by jim@jtan.com
-
-                                  11/5
-                                  ----
-parse.y
-       - change action for `for x; { list; }' and corresponding `select'
-         production to use \"$@\" instead of just $@, as it is with all the
-         other actions
-
-                                  11/9
-                                  ----
-parse.y
-       - new flag for parse_matched_pair: P_DQUOTE, indicating that the
-         pair of characters being matched is between double quotes
-       - parse_matched_pair now passes P_DQUOTE down to recursive calls:
-         if the open char to be matched is a `"' or the passed-in flags
-         include P_DQUOTE, set the local `rflags' variable to P_DQUOTE and
-         pass `rflags' down to recursive calls
-       - if `rflags' includes P_DQUOTE, don't try to ansiexpand $'...' or
-         locale expand $"..."; consistent with other quoting constructs
-
-                                  11/11
-                                  -----
-doc/{bash.1,bashref.texi}
-       - explicitly note that variables referenced in arithmetic expressions
-         without using `$' evaluate to 0 if they are null or unset
-       - note that a null variable value evaluates to 0 when used in an
-         arithmetic context, like when a variable with the `-i' attribute is
-         assigned a null value
-       - document the ${!prefix@} expansion as equivalent to ${!prefix*}
-
-                                  11/12
-                                  -----
-doc/{bash.1,bashref.texi}
-       - note that the value of an arithmetic expression is as in C
-       - change the wording to note that `arithmetic evaluation' (not
-         arithmetic expansion, which has a different meaning) is performed
-         on the value assigned to a variable whose integer attribute is set
-
-                                  11/13
-                                  -----
-execute_cmd.c
-       - fix execute_disk_command so it calls exit() after printing the error
-         message in a restricted shell context if the shell has already forked
-         (nofork != 0 && there are no pipes)
-
-                                  11/19
-                                  -----
-builtins/type.def
-       - don't report on aliases unless expand_aliases is set and the parser
-         is performing alias expansion; changed tests/type.tests and
-         tests/type.right accordingly
-
-                                  11/25
-                                  -----
-general.c
-       - fix for full pathnames including drive letters on cygwin from
-         Corinna (convert to posix-style paths, which the rest of the
-         code handles much better)
-
-lib/readline/text.c
-       - fixes to overwrite mode from jimmy@is-vn.bg:
-               o in _rl_overwrite_char, do the overwrite mode self-insert
-                 as one group, even when overwriting more than 1 char
-               o in _rl_overwrite_char, do the insert before the delete so
-                 that an undo positions the cursor on the character restored,
-                 not to the right of it
-               o in _rl_overwrite_rubout, don't do rl_insert_char(' ') unless
-                 rl_point < rl_end.  Since overwrite-mode self-insert acts as
-                 in insert-mode when at eol, make rubout behave like
-                 insert-mode rubout
-
-                                  11/30
-                                  -----
-lib/readline/misc.c
-       - call rl_replace_line with `1' as second parameter if we're going to
-         immediately overwrite the undo list
-
-lib/readline/search.c
-       - in make_history_line_current, use _rl_replace_text to make the line
-         replacement an undoable operation.  Affects all non-incremental
-         search functions.
-
-parse.y
-       - make behavior introduced on 11/9 dependent on extended_quote
-         variable, controllable by extquote shopt option.  Default setting is
-         on for backwards compatibility
-
-builtins/shopt.def
-       - new `extquote' option to control extended_quote variable
-
-                                  12/3
-                                  ----
-jobs.c
-       - change message printed when attempting to put a background job in
-         the background with `bg' to include the job id and make the
-         statement declarative
-
-                                  12/10
-                                  -----
-bashhist.h
-       - define explicit flag values for history_control
-
-variables.c
-       - change sv_history_control to use new flag values
-       - change sv_history_control to parse $HISTCONTROL as a colon-separated
-         list of values for the history_control variable
-
-bashhist.c
-       - change check_history_control to use new flag values and restructure
-         to remove case statement
-       - new function hc_erasedups(line); removes all entries matching LINE
-         from the history list
-       - call hc_erasedups() from check_add_history after we've determined
-         that we're saving the line
-
-doc/{bash.1,bashref.texi}
-       - documented new options available for $HISTCONTROL and that it can
-         be a colon-separated list of history control options
-
-                                  12/11
-                                  -----
-subst.c
-       - fix pat_subst() to not increment `e' (pointer to the end of the
-         matched portion of the string) until after we're sure we're going
-         around the loop again; fixes problem with empty replacements for
-         a pattern that doesn't match (bug reported by Don Coleman
-         <don@coleman.org>)
-
-                                  12/17
-                                  -----
-lib/readline/display.c
-       - fixes to multibyte redisplay from jir@yamato.ibm.com (Jiro SEKIBA):
-               o speed up calculation of first difference between old and new
-                 lines in the common case
-               o don't try to see if we're in the middle of a multbyte char
-                 in update_line (we'll see how this one works out)
-
-                                  12/18
-                                  -----
-doc/bashref.texi
-       - make it clear that the `command-list' function definition may be
-         terminated by an ampersand before the closing brace
-
-                                  12/28
-                                  -----
-redir.c
-       - set `expanding_redir' flag when expanding words in a redirection
-
-subst.c
-       - new function, exp_jump_to_top_level(), to do any word expansion
-         cleanup before a call to jump_to_top_level from within that file;
-         sets expanding_redir back to 0 before jump_to_top_level
-
-variables.c
-       - in find_variable(), don't call find_variable_internal with a second
-         parameter of 1 if expanding_redir is non-zero
-       - in find_variable_internal(), don't search the temporary env if
-         subshell_environment includes SUBSHELL_FORK (indicating a simple
-         command) and expanding_redir is non-zero
-
-parse.y
-       - increment line_number when we read a \<newline> pair
-
-array.c
-       - added array_unshift_element and array_shift_element (which just call
-         array_shift and array_rshift, respectively), for bash debugger
-         support
-
-                                1/4/2003
-                                --------
-doc/{bash.1,bashref.texi}
-       - note in the section describing the execution environment passed to
-         children that subshells inherit shell functions marked for export
-       - note in the section describing shell functions the possibility
-         that exported functions may result in two entries in the environment
-         with the same name
-
-parse.y
-       - when pushing an alias expansion onto the pushed_string list, append
-         a space to the expanded definition to make the parser's lookahead
-         work without using the `mustpop' hack in shell_getc
-
-                                   1/8
-                                   ---
-shell.c
-       - change calls to exit() with EX_USAGE as a parameter to use
-         EX_BADUSAGE instead, since EX_USAGE is defined as 258 and is
-         technically out of range
-
-                                  1/14
-                                  ----
-aclocal.m4
-       - check for the termcap functions in libc first:  if we don't have
-         to link in another library, let's not do it
-       - change the test for mbstate_t to use AC_TRY_COMPILE instead of
-         AC_TRY_RUN
-
-doc/{bash.1,bashref.texi}
-       - document that bash turns line editing off if environment variable
-         EMACS is set to `t' when it starts up
-
-doc/bash.1
-       - minor change to give the ftp url for the latest version of bash in
-         the bug reports section
-
-lib/readline/histexpand.c
-       - in get_history_event, cast a couple of `const char *' variables to
-         `char *' in function call parameter lists to avoid compiler warnings
-
-                                  1/21
-                                  ----
-builtins/cd.def
-       - change `cd -' so it prints the current working directory after a
-          successful chdir even when the shell is not interactive
-
-                                  1/31
-                                  ----
-lib/readline/doc/rltech.texinfo
-       - clarified exactly what is meant by the term `application-specific
-         completion function', made its use consistent, and documented
-         what variables are changed before such a function is called
-
-lib/readline/input.c
-       - new function, _rl_pushed_input_available(), returns non-zero if
-         there are characters in the input queue managed by rl_get_char
-         and _rl_unget_char
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_pushed_input_available
-
-lib/readline/callback.c
-       - change rl_callback_read_char to check _rl_pushed_input_available
-         and loop if there's something there, so characters don't languish
-         until more keyboard input is read
-
-execute_cmd.c
-       - new variable, last_command_exit_signal, non-zero if
-         last_command_exit_value result from wait_for was result of a signal
-
-nojobs.c
-       - keep track of whether or not a given pid was killed by a signal with
-         a new flag in the pid_list array
-       - new function int find_termsig_by_pid(pid_t pid) to get the
-         terminating signal, if any, for a particular pid
-       - new function int get_termsig(WAIT status) returns the terminating
-         signal corresponding to status
-       - set last_command_exit_signal in wait_for and the various wait_for_xx
-         functions
-
-jobs.c
-       - new functions, process_exit_signal and job_exit_signal, return the
-         signal that killed a given process or job, if a signal caused its
-         death
-       - set last_command_exit_signal in wait_for by calling job_exit_signal
-         or process_exit_signal appropriately
-
-subst.c
-       - don't resend SIGINT to ourselves unless last_command_exit_signal is
-         SIGINT and last_command_exit_value == 128 + SIGINT.  This fixes the
-         $(exit 130) bug reported by Paul Jarc
-
-expr.c
-       - new function, expr_bind_variable, calls bind_int_variable and
-         then stupidly_hack_special_variables.  This fixes the
-         `let OPTIND=1' bug
-
-bashline.c
-       - change history_and_alias_expand_line and shell_expand_line to call
-         history_expand_line_internal so calls to pre_process_line are
-         localized
-       - change history_expand_line_internal and cleanup_expansion_error to
-         temporarily turn off hist_verify before calling pre_process_line
-         to avoid the effects described by teirllm@dms.auburn.edu
-
-parse.y
-       - don't unconditionally turn off PST_ALEXPNEXT in push_string.  This
-         fixes the multiple alias expansion bug reported by Paul Jarc.
-
-lib/readline/vi_mode.c
-       - change rl_vi_subst to push `l' instead of ` ' -- it should be
-         equivalent, but this has been reported to fix a problem in multibyte
-         locales
-
-lib/readline/readline.h
-       - new state flag value RL_STATE_TTYCSAVED, indicates that save_tty_chars
-         has been called.  Since it's only used and visible internally, it's
-         undocumented
-
-lib/readline/rltty.h
-       - changed all of the members of _rl_tty_chars struct to `unsigned char'
-
-lib/readline/rltty.c
-       - set the RL_STATE_TTYCSAVED after save_tty_chars is called
-       - new function, rl_tty_unset_default_bindings(), resets bindings for
-         everything rl_tty_set_default_bindings() messes with back to
-         rl_insert, so rl_tty_set_default_bindings can be called again with
-         possible changes
-       - new function that does the bulk of the work for
-         rltty_set_default_bindings:  _rl_bind_tty_special_chars()
-       - change prepare_terminal_settings so that it can track changes to the
-         terminal special chars made by stty(1):  unset the bindings with
-         rl_tty_unset_default_bindings before calling save_tty_chars, and
-         _rl_tty_set_default_bindings after, with the new values from
-         get_tty_settings().  This implements a long-standing request, most
-         recently made by Tim Waugh of Red Hat.
-
-lib/readline/readline.h
-       - extern declaration for rl_tty_unset_default_bindings()
-
-lib/readline/readline.c
-       - new function, reset_default_bindings, calls
-         rl_tty_unset_default_bindings() to reset the terminal special chars
-         back to rl_insert and then read the new ones
-
-lib/readline/doc/rltech.texinfo
-       - documented rl_tty_unset_default_bindings()
-
-                                   2/1
-                                   ---
-[prayers and condolences to the families of the space shuttle crew members]
-
-aclocal.m4
-       - add checks for mbrtowc and mbrlen in BASH_CHECK_MULTIBYTE
-       - new check, BASH_FUNC_CTYPE_NONASCII, checks whether or not the ctype
-         functions handle non-ascii characters correctly
-
-config.h.in
-       - add HAVE_MBRTOWC and HAVE_MBRLEN
-       - add NO_MULTIBYTE_SUPPORT for new configure argument
-       - add CTYPE_NON_ASCII
-
-config-bot.h, lib/readline/rlmbutil.h
-       - make sure that mbrtowc, mbrlen, and wcwidth are all present before
-         turning on HANDLE_MULTIBYTE
-       - turn off multibyte chars if NO_MULTIBYTE_SUPPORT is defined
-
-configure.in
-       - new argument --enable-multibyte (enabled by default), allows
-         multibyte support to be turned off even on systems that support it
-
-lib/readline/chardefs.h
-       - define NON_NEGATIVE as 1 if CTYPE_NON_ASCII is defined
-
-                                   2/3
-                                   ---
-config.h.in
-       - add HAVE_WCTOMB
-
-aclocal.m4
-       - check for wctomb in BASH_CHECK_MULTIBYTE
-
-                                   2/4
-                                   ---
-lib/readline/vi_mode.c
-       - in _rl_vi_change_mbchar_case, make sure the result from wctomb()
-         is NULL-terminated before trying to insert it with rl_insert_text()
-
-                                   2/5
-                                   ---
-lib/readline/display.c
-       - fix to update_line to avoid problems on systems with multibyte
-         characters when moving between history lines when the new line
-         has more glyphs but fewer bytes (twaugh@redhat.com)
-
-lib/readline/vi_mode.c
-       - use wcrtomb() instead of wctomb() in _rl_vi_change_mbchar_case
-
-pcomplete.c
-       - fix init_itemlist_from_varlist to handle the case where the
-         `varlist' is NULL
-
-doc/{bash.1,bashref.texi}
-       - clarified when a simple command may fail without the shell exiting
-         when -e is set
-
-                                  2/13
-                                  ----
-parse.y
-       - when bash is started with --nolineediting, ignore \[ and \] when
-         decoding the prompt string
-
-subst.c
-       - fix remove_quoted_nulls so that a string with a CTLESC appearing
-         after a CTLNUL (which was removed) does not leave characters in
-         the string inappropriately
-
-                                  2/14
-                                  ----
-builtins/common.h
-       - new flag value for parse_and_execute(): SEVAL_RESETLINE, which
-         allows the caller to specify whether or not the internal idea
-         of the line number should be reset to 1
-
-builtins/evalstring.c
-       - parse_and_execute() now tells push_string to reset the line
-         number only if the SEVAL_RESETLINE flag is set by the caller
-
-                                  2/15
-                                  ----
-builtins/evalfile.c
-       - pass SEVAL_RESETLINE from _evalfile() to parse_and_execute()
-
-subst.c
-       - if the shell is currently interactive, pass SEVAL_RESETLINE to
-         parse_and_execute() when doing command substitution
-
-jobs.c
-       - add SEVAL_RESETLINE to parse_and_execute while running SIGCHLD trap
-
-command.h
-       - add `line' members to case_com, for_com, select_com
-       - rearranged order of members in some of the command structs, so
-         `flags' and `line' are first
-       - added a `source_file' member to the function_def struct; keeps
-         track of where the function was defined
-
-doc/Makefile.in
-       - add some new suffix rules:  .dvi.ps
-
-doc/{bash.1,bashref.texi}
-       - added text to the description of the `trap' builtin tightening up
-         the language describing when the ERR trap will be run
-
-error.c
-       - if $BASH_SOURCE (internally-maintained) exists, use BASH_SOURCE[0]
-         in get_name_for_error if the shell is not interactive
-
-array.h
-       - new convenience defines: array_push and array_pop
-
-variables.c
-       - change get_funcname to return this_shell_function->name only if
-         arrays have not been compiled into the shell
-       - change init_funcname_var to initialize FUNCNAME as an array variable
-         if we have arrays
-       - new function: get_self(SHELL_VAR *self), a degenerate `dynamic_value'
-         function for dynamic variables
-       - new function: init_dynamic_array_var(), a generic dynamic array
-         variable initializer to handle the common case
-       - use init_dynamic_array_var() instead of explicit init_dirstack_var()
-       - use init_dynamic_array_var() instead of explicit init_groups_var()
-       - new dynamic array variables:  BASH_ARGC, BASH_ARGV, BASH_SOURCE,
-         BASH_LINENO, initialized with init_dynamic_array_var
-
-shell.c
-       - initialize BASH_LINENO, BASH_SOURCE, FUNCNAME in open_shell_script
-
-{execute_cmd,trap}.c
-       - take out trap_line_number, since parse_and_execute doesn't reset the
-         line number any more when running the trap commands
-
-make_cmd.c
-       - augment make_function_def to get source file name and call
-         bind_function_def to save the entire FUNCTION_DEF
-
-variables.c
-       - new hash table: shell_function_defs, keeps table of shell function
-         definitions including source file and line number info corresponding
-         to shell_functions table
-       - new functions: find_function_def and bind_function_def to manage
-         the shell_function_defs hash table
-       - new function: unbind_function_def to remove a function definition
-         from the shell_function_defs table (right now uncalled)
-
-variables.h
-       - extern declaration for bind_function_def, find_function_def
-       - new extern declaration for unbind_function_def
-
-execute_cmd.c
-       - in function prologue and epilogue, push and pop FUNCNAME,
-         BASH_SOURCE, and BASH_LINENO information
-
-dispose_cmd.c
-       - broke the code that disposes a FUNCTION_DEF out into two new
-         functions: dispose_function_def and dispose_function_def_contents
-
-dispose_cmd.h
-       - new extern declarations for dispose_function_def_contents and 
-         dispose_function_def
-
-copy_cmd.c
-       - move body of copy_function_def (other than allocating a new
-         FUNCTION_DEF) to copy_function_def_contents
-       - make sure to copy the new source_file member of a function_def in
-         copy_function_def_contents
-       - copy_function_def is no longer static, copy_function_def_contents
-         is not either
-
-command.h
-       - new extern declaration for copy_function_def_contents and
-         copy_function_def
-
-parse.y
-       - keep a stack of line numbers where case, select, and for commands
-         start, with a maximum nesting level of 128; increment when reading
-         word after `for', `select' or `case' in read_token_word; decrement
-         in grammar actions after parsing a complete for, arith_for, select,
-         or case command
-       - create for, case, arith_for, and select commands with an extra
-         line number (word_lineno[word_top]) argument
-
-make_cmd.c
-       - make_for_or_select, make_for_command, make_case_command, and
-         make_select_command all take an extra `line_number' argument
-
-make_cmd.h
-       - corresponding changes to extern declarations for those functions
-
-                                  2/16
-                                  ----
-{execute_cmd,shell,variables}.c
-       - follow each call to remember_args with a call to push_args or
-         pop_args to manage the BASH_ARGV and BASH_ARGC arrays.  Only set
-         when the shell is started to run shell script or runs a shell
-         function.  Doesn't handle `set' or `shift' yet, nor `source'.
-
-execute_cmd.c
-       - keep track of the level of subshells with a new variable, manipulated
-         in execute_in_subshell
-       - set currently_executing_command in execute_command_internal(),
-         even if we're running a trap
-       - better line number management when executing simple commands,
-         conditional commands, for commands in execute_command_internal()
-         and the various functions that implement the commands
-         (execute_cond_command, execute_for_command, execute_etc.)
-
-variables.c
-       - new dynamic variable BASH_SUBSHELL, with new get_subshell and
-         assign_subshell functions to manipulate it
-       - new functions push_args (WORD_LIST *list) and pop_args (void) to
-         manage the BASH_ARGC and BASH_ARGV dynamic array variables
-
-variables.h
-       - new extern declarations for push_args and pop_args
-
-builtins/evalfile.c
-       - in _evalfile, do appropriate things to the FUNCNAME, BASH_ARGV,
-         BASH_ARGC, BASH_SOURCE, and BASH_LINENO variables
-
-support/mksignames.c
-       - add another fake signal for `trap'; make NSIG+2 == `RETURN'
-
-trap.c
-       - _run_trap_internal now returns an int:  the exit value of the command
-         run as the result of the trap
-       - run_debug_trap now returns an int: the exit value of the command
-         run as the result of the trap
-       - RETURN is a new special trap
-       - new function: set_return_trap(char *command) interface for the rest
-         of the shell, like set_{debug,error}_trap
-       - new function: run_return_trap()
-       - command substitution and other child processes don't inherit the
-         return trap
-
-trap.h
-       - new extern declaration for set_return_trap() and run_return_trap
-       - new defines for RETURN_TRAP; increment BASH_NSIG
-       - change extern declaration for run_debug_trap() since it now returns
-         an int
-
-shell.c
-       - new invocation long option:  --debugger, turns on debugging and
-         sets internal `debugging_mode' variable
-
-execute_cmd.c
-       - new code to save return trap when executing a shell function, so
-         shell functions don't inherit it
-       - run debug trap before binding the variable and running the action
-         list in a `for' command
-       - run debug trap before binding the selection variable and running
-         the query in a `select' command
-       - run debug trap before running matcher in a `case' command
-
-builtins/set.def
-       - new `set -o functrace' (set -T), causes DEBUG trap to be inherited
-         by shell functions
-       - new `set -o errtrace' (set -E), causes ERR trap to be inherited
-         by shell functions
-
-flags.c
-       - new flags -E and -T, control error_trace_mode and
-         function_trace_mode respectively
-
-flags.h
-       - new extern declarations for error_trace_mode and function_trace_mode
-
-                                  2/17
-                                  ----
-doc/bashref.texi
-       - changed the `dircategory' as per Karl Berry's suggestion
-
-doc/texinfo.tex
-       - update to version of 2003/02/04 from texinfo.org
-
-support/texi2dvi
-       - update to version 1.14 from texinfo-4.5 distribution
-
-                                  2/20
-                                  ----
-support/config.{guess,sub}
-       - update to versions of 2002/11/30
-
-lib/readline/doc/manvers.texinfo
-       - renamed to version.texi to match other GNU software
-       - UPDATE-MONTH variable is now `UPDATED-MONTH'
-
-lib/readline/doc/{hist,rlman,rluserman}.texinfo
-       - include version.texi
-
-doc/version.texi
-       - new file, with standard stuff matching other GNU distributions
-
-{doc,lib/readline/doc}/Makefile.in
-       - include right stuff for `version.texi'
-
-lib/readline/doc/{rluserman,rlman,hist}.texinfo
-       - use @copying and @insertcopying and @ifnottex instead of @ifinfo
-       - add FDL as an appendix entitled `Copying This Manual'
-
-lib/readline/doc/{rltech,rluser,hstech,hsuser}.texi
-       - changed the suffix from `texinfo' to `texi'
-
-lib/readline/doc/{rlman,rluserman}.texinfo, doc/bashref.texi
-       - include rltech.texi,rluser.texi,hstech.texi, and hsuser.texi
-
-lib/readline/doc/Makefile.in,doc/Makefile.in
-       - made appropriate changes for {{rl,hs}tech,{rl,hs}user}.texi
-
-lib/readline/doc/{rlman,rluserman}.texinfo
-       - changed the suffix from `texinfo' to `texi'
-
-lib/readline/doc/hist.texinfo
-       - renamed to history.texi
-
-                                  2/25
-                                  ----
-pathnames.h.in
-       - moved pathnames.h here so value of DEBUGGER_START_FILE can be
-         substituted by configure
-
-aclocal.m4
-       - added AM_PATH_LISPDIR for debugger
-
-configure.in
-       - added some variables: `bashvers', `relstatus' to use info in more
-         than one place
-       - call AM_PATH_LISPDIR
-       - new option:  --enable-debugger, sets DEBUGGER cpp option
-       - new option with AC_ARG_VAR:  DEBUGGER_START_FILE
-       - make `pathnames.h' a file generated by configure
-
-Makefile.in
-       - add rule to create pathnames.h
-
-builtins/declare.def
-       - added extra line number and source file name to `declare -F' output
-         if `--debugger' is used at startup
-
-builtins/evalfile.c
-       - call run_return_trap from source_file before returning the result
-         from _evalfile()
-
-execute_cmd.c
-       - call run_return_trap in execute_function before restoring the old
-         context
-
-builtins/source.def
-       - arrange to save and restore DEBUG traps when sourcing files if
-         function_trace_mode (set -o functrace) is not set
-
-print_cmd.c
-       - broke print_for_command, print_select_command, print_case_command
-         into two functions each:  one to print the `header' and one for
-         the body
-       - print_cond_command is no longer static
-       - print_arith_command now takes a WORD_LIST *, since it doesn't
-         actually do anything with the ARITH_COM it's passed except print
-         the enclosed WORD_LIST
-       - print_arith_command is no longer static
-
-externs.h
-       - extern declarations for print_{for,select,case}_command_head,
-         print_cond_command, print_arith_command
-
-{.,builtins,lib/sh}/Makefile.in
-       - corrected dependencies on pathnames.h, since it's now created in
-         the build directory
-
-                                   3/5
-                                   ---
-lib/glob/glob.c
-       - handle alloca() failing (it's supposed to return NULL)
-       - use malloc() (with its attendent bookkeeping) instead of alloca()
-         in glob_filename()
-
-subst.c
-       - check whether shell_glob_filename returns NULL in
-         glob_expand_word_list
-       - change parameter_brace_expand_rhs to handle cases like
-         ${a[2]:=value} by properly creating the array element instead of a
-         variable named `a[2]' (reported by <opengeometry@yahoo.ca>)
-
-variables.c
-       - change bind_int_variable to use valid_array_reference instead
-         of looking for `[' 
-
-lib/readline/vi_mode.c
-       - check for `a' in _rl_vi_done_inserting so the text inserted by an
-         `a' command can be reinserted with a `.'
-
-lib/readline/readline.c
-       - when entering vi insertion mode in readline_internal_setup(), make
-         sure that _rl_vi_last_key_before_insert is set to `i' so that undo
-         groups and redo work better (reported by <opengeometry@yahoo.ca>)
-
-lib/glob/sm_loop.c
-       - handle ?(...) in a pattern immediately following a `*', instead of
-         ignoring the `(' and treating the `?' as a single-char match, as
-         long as FNM_EXTFLAG is set (reported by <anderson110@poptop.llnl.gov>)
-
-aclocal.m4
-       - new test for presence of struct timezone, BASH_STRUCT_TIMEZONE
-
-config.h.in
-       - add HAVE_STRUCT_TIMEZONE
-
-configure.in
-       - call BASH_STRUCT_TIMEZONE
-
-execute_cmd.c
-       - don't try to use `struct timezone' in calls to gettimeofday unless
-         HAVE_STRUCT_TIMEZONE is defined; use (void *)NULL otherwise
-
-                                  3/20
-                                  ----
-execute_cmd.c
-       - new variable, the_printed_command_except_trap, saves the command
-         being executed before a trap is executed, for the debugger
-
-trap.c
-       - if in debugging mode, let command substitutions and other child
-         processes inherit the DEBUG and ERR traps if the `functrace'
-         (which is really a bad name, given this semantic) or `errtrace'
-         options, respectively, have been set
-
-shell.c
-       - local_pending_command renamed to command_execution_string; no longer
-         static
-
-variables.c
-       - new dynamic variable, BASH_COMMAND, set to the command string
-         currently executing, or the one that caused a trap to execute
-         (mapped to the_printed_command_except_trap)
-       - new variable, BASH_EXECUTION_STRING, set to the argument to the
-         -c invocation option, if the shell was started that way
-
-                                  3/22
-                                  ----
-execute_cmd.c
-       - changed execute_for_command, eval_arith_for_expr,
-         execute_select_command, execute_arith_command, execute_cond_command,
-         execute_simple_command to implement new DEBUG trap semantics
-         for the debugger: if the DEBUG trap commands return a non-zero
-         status and debugging_mode is non-zero, we skip the command to be
-         executed
-
-trap.c
-       - change run_debug_trap for the debugger: if we're in the debugger
-         and the DEBUG trap returns 2 while we're in a function or sourced
-         script, we force a `return'
-
-shell.c
-       - new function, start_debugger(), that sources the debugger start file
-         and turns the debugger on
-
-builtins/shopt.def
-       - new settable option, `extdebug', turns on debugging_mode, as if
-         --debugger had been supplied at invocation (but does not source
-         debugger startup file)
-
-trap.c
-       - make sure that run_exit_trap arranges for `returns' to come back
-         there, too, so a `return' executed by an `exit' invoked within a
-         shell function behaves correctly
-
-support/shobj-conf
-       - change darwin/MacOS X stanza based on advice from mac os x developers
-
-lib/sh/mailstat.c
-       - set the atime member of the synthesized stat struct to 0 if `cur/'
-         is empty, rather than leaving it undefined
-
-                                  3/24
-                                  ----
-builtins/caller.def
-       - new builtin to provide a call stack for the debugger
-
-builtins/evalfile.c
-       - added a second `flags' argument to source_file()
-       - new flag value for flags argument to _evalfile():  FEVAL_NOPUSHARGS.
-         If included in flags arg, it means to not manipulate the BASH_ARGV
-         and BASH_ARGC arrays
-
-builtins/common.h
-       - change prototype for source_file()
-
-builtins/source.def
-       - add flag value to call to source_file():  set to 1 if we replaced
-         the positional parameters
-       - add call to push_args if additional arguments supplied to the
-         source builtin
-       - add call to pop_args in maybe_pop_dollar_vars
-
-execute_cmd.c
-       - run the debug trap in execute_function so the debugger can stop
-         before the first command in a function body is executed
-       - modify subshell_level before executing a builtin or function in a
-         subshell
-       - print `for', `select', `case' command heads when set -x is enabled
-
-print_cmd.c
-       - `xtrace_print_word_list' now takes an additional flags argument,
-         which, if non-zero, says to print indirection_level_string()
-       - new functions to print for, select, and case command heads when
-         set -x is enabled
-       - add spaces after `((' and before `))' in xtrace_print_arith_command
-
-externs.h
-       - changed extern declaration for xtrace_print_word_list
-       - new declarations for xtrace_print_{for,case,select}_command_head()
-
-subst.c
-       - modify subshell_level when executing a command substitution
-
-                                  3/25
-                                  ----
-execute_cmd.c
-       - use `line_number' in executing_line_number instead of looking into
-         the current command if it's a simple command; rearrange code to
-         make this simpler to compile in and out
-       - need to save and restore value of currently_executing_command around
-         calls to debug trap and return trap in execute_function
-
-make_cmd.c
-       - make sure make_arith_for_command() disposes the WORD_LIST * it is
-         passed, since nothing else does and it's not used directly
-
-                                  3/28
-                                  ----
-Makefile.in    
-       - fixed dependencies for `error.o' on shell.h and version.h -- makes
-         parallel makes (gmake -j 4) work correctly
-
-doc/{bash.1,bashref.texi}
-       - documented all new features added to support the debugger
-
-                                   4/1
-                                   ---
-lib/sh/shquote.c
-       - make sure CTLESC and CTLNUL characters are escaped with CTLESC
-         by sh_double_quote, sh_backslash_quote and
-         sh_backslash_quote_for_double_quotes
-         Fixes vulnerability reported by svdb@stack.nl
-
-shell.h
-       - new `pipestatus' member of sh_parser_state_t, to save and restore
-         $PIPESTATUS
-
-parse.y
-       - changes to save_parser_state and restore_parser_state to save and
-         restore $PIPESTATUS
-
-builtins/read.def
-       - add a call to word_list_remove_quoted_nulls before assigning the
-         word list read from standard input to an array variable.  Fixes
-         bug reported by holzhey@ppprs1.phy.tu-dresden.de
-
-                                   4/3
-                                   ---
-execute_cmd.c
-       - in execute_null_command, if redirections are supplied, make sure
-         things like 3</etc/passwd are undone immediately, since they're
-         being done in the current shell
-       - functions now inherit the RETURN trap only if function tracing is
-         on for that function or globally
-
-lib/readline/misc.c
-       - in rl_replace_from_history, don't force rl_replace_line to clear
-         the undo_list, since it might point directly at an undo list
-         from a history entry (to which we have no handle)
-
-                                   4/4
-                                   ---
-trap.c
-       - initialize RETURN_TRAP stuff appropriately in initialize_traps()
-       - let command substitutions inherit the RETURN trap if we're in
-         the debugger and function tracing has been enabled
-
-redir.c
-       - do_redirections and do_redirection_internal now take a single
-         flags argument instead of multiple boolean flags
-
-redir.h
-       - new #defines for flags argument to do_redirection{s,_internal}
-
-execute_cmd.c
-       - change all calls to do_redirection to use new flag values
-
-parse.y
-       - new function, free_pushed_string_input(), an external interface to
-         clear the pushed_string list (alias expansion)
-       - new define SHOULD_PROMPT to say when it's OK to call prompt_again
-         (if the shell is currently interactive and is reading input from
-         the terminal or readline)
-       - make sure shell_getc and read_secondary_line only call prompt_again
-         if SHOULD_PROMPT evaluates to true
-       - prompt_again shouldn't do anything if the shell is currently in the
-         middle of expanding a multiline alias, since we won't be printing a
-         prompt anyway
-
-externs.h
-       - new extern declaration for free_pushed_string_input()
-
-execute_cmd.c
-       - command_substitute and process_substitute now call
-         free_pushed_string_input because they shouldn't deal with any
-         partial alias expansion the parent shell may have started
-
-                                   4/5
-                                   ---
-braces.c
-       - added {x..y} brace expansion, shorthand for {x,x+1,x+2,...,y}:
-         x, y can be integers or single characters; the sequence can be
-         ascending or descending; increment is always 1.  Beware that
-         something like {a..A} can lead to non-letters.
-
-                                   4/7
-                                   ---
-subst.c
-       - change extract_delimited_string and extract_dollar_brace_string to
-         return NULL on an expansion error when no_longjmp_on_fatal_error
-         is set, so the calling functions don't assume that the expansion
-         was successful (primarily the prompt expansion and completion code)
-
-doc/{bash.1,bashref.texi}
-       - documented new sequence generation feature of brace expansion
-
-                                   4/8
-                                   ---
-lib/sh/strstr.c
-       - replacement for strstr(3), in case the C library doesn't provide it
-
-configure.in
-       - check for strstr, add to LIBOBJS if not found
-
-array.c
-       - array_walk now takes a third void * argument; it's passed to `func'
-         as its second argument
-
-array.h
-       - change sh_ae_map_func_t prototype to add void * second argument
-
-                                  4/10
-                                  ----
-array.c
-       - new function: array_keys_to_word_list, returns a list of indices for
-         a given array
-
-array.h
-       - new extern declaration for array_keys_to_word_list
-
-arrayfunc.c
-3      - new function: char *array_keys(), returns a string with keys for a
-         given array, with the appropriate quoting
-
-arrayfunc.h
-       - new extern declaration for array_keys
-
-subst.c
-       - code to implement ksh93-like ${!array[@]} expansion (array[*] works,
-         too), which expands to all the keys (indices) of ARRAY
-
-doc/{bash.1,bashref.texi}
-       - documented new ${!array[@]} expansion
-
-                                  4/19
-                                  ----
-builtins/setattr.def
-       - remove any mention of the `-n' option from readonly builtin's short
-         and long documentation
-
-pcomplib.c
-       - fix progcomp_insert to increase the refcount on the `cs' argument
-         before calling hash_insert -- fixes the problem of multiple calls
-         to progcomp_insert with the same compspec
-
-doc/bash.1
-       - add mention of characters that inhibit history expansion when found
-         immediately following an unquoted `!'
-
-bashline.c
-       - convert the code conditionally compiled in by the NO_FORCE_FIGNORE
-         #define to something runtime-tunable with the `force_fignore'
-         variable (opposite sense).  force_fignore is 1 by default
-
-builtins/shopt.def
-       - new tunable `shopt' option: `force_fignore', controls force_fignore
-         variable and behavior of FIGNORE handling
-
-lib/readline/complete.c
-       - new variable, _rl_complete_show_unmodified, causes completer to list
-         possible completions if more than one completion and partial
-         completion cannot be done
-       - new value for what_to_do argument to rl_complete_internal, `@',
-         indicating that we want the show-unmodified behavior
-       - change rl_completion_type to return `@' when appropriate
-
-lib/readline/bind.c
-       - new bindable variable, show-all-if-unmodified, which controls value
-         of _rl_complete_show_unmodified
-
-lib/readline/rlprivate.h
-       - extern declaration for _rl_complete_show_unmodified
-
-lib/readline/doc/rluser.texi
-       - documented show-all-if-unmodified
-
-lib/readline/doc/rltech.texi
-       - documented new `@' value for second argument to rl_complete_internal
-       - documented new return value from rl_completion_type
-
-                                  4/22
-                                  ----
-lib/readline/signals.c
-       - in rl_set_signal, set sa_flags to SA_RESTART for SIGWINCH, if we
-         have POSIX signals -- this is what most applications expect, and
-         they're not prepared to deal with EINTR
-
-                                  4/25
-                                  ----
-bashline.c
-       - take out attempts to suppress readline filename completion when
-         attempting command completion and there is a directory with the
-         same name in the current directory.  #if 0'd for now; maybe make
-         it conditional later
-
-error.c
-       - new variable, gnu_error_format, causes non-interactive errors with
-         line numbers to be printed in the `gnu style' (filename:lineno:)
-         instead of the `shell style' (filename: line lineno:) by
-         error_prolog and parser_error
-
-version.h,support/mkversion
-       - don't put extern function declarations into created version.h any
-         more
-
-version.c,externs.h
-       - add extern declarations for show_shell_version() and
-         shell_version_string(), since they're no longer in version.h
-         (this backs out change from 9/10/2001)
-
-shell.h
-       - don't include version.h
-
-Makefile.in
-       - remove unneeded dependencies on version.h -- only version.o
-         needs it now
-
-builtins/shopt.def
-       - new option `gnu_errfmt', changes error messages with line numbers
-         to use the `standard' gnu format
-
-pcomplete.h
-       - new COPT_BASHDEFAULT and COPT_PLUSDIRS defines
-
-bashline.c
-       - if the COPT_BASHDEFAULT flag is set, try the rest of the bash
-         default completions if a compspec with that flag set generates
-         no matches
-       - broke bash completions out into separate function:
-         bash_default_completion(const char *text, int start, int end,
-         int qc, int in_command_position); change attempt_shell_completion
-         to call it
-
-bashline.h
-       - new extern declaration for bash_default_completion
-
-builtins/complete.def
-       - added code to compgen to call bash_default_completion if a compspec
-         with the COPT_BASHDEFAULT flag set generates no matches from the
-         programmable completion options
-
-doc/{bash.1,bashref.texi}
-       - document new `gnu_errfmt' shopt option
-
-doc/bash.1,lib/readline/doc/rluser.texi
-       - document new `-o bashdefault' option to complete and compgen
-
-                                  4/26
-                                  ----
-pcomplete.c
-       - if a compspec has the COPT_PLUSDIRS flag set, generate any
-         directory name completions and add them to the set of possible
-         completions as the last thing in gen_compspec_completions
-
-builtins/complete.def
-       - add new `-o plusdirs' option to complete and compgen; means to
-         do directory name completion in addition to other actions
-         specified by the compspec, and do it last
-
-                                  5/12
-                                  ----
-copy_cmd.c
-       - fix copy_{for,select,case}_command to copy the line member
-
-                                  5/13
-                                  ----
-lib/readline/rlmbutil.h,include/shmbutil.h
-       - new #define MB_INVALIDCH, evaluates to true if return value from
-         mbrtowc or mbrlen denotes an invalid multibyte character
-       - new #define MB_NULLWCH, evaluates to true if return value from
-         mbrtowc or mbrlen denotes a null multibyte character
-
-lib/readline/complete.c
-       - new function, fnwidth(), returns printed length of a filename,
-         correctly handling multibyte characters
-       - new function, fnprint(), displays a filename on rl_outstream
-         correctly handling multibyte characters
-       - use fnwidth() instead of simple strlen() for length calculations
-         in display_matches
-
-lib/readline/{display,mbutil}.c
-       - use MB_INVALIDCH and MB_NULLWCH as appropriate
-
-                                  5/21
-                                  ----
-configure.in
-       - turn off the builtin malloc on GNU/FreeBSD systems (GNU userland,
-         FreeBSD kernel)
-
-                                  5/24
-                                  ----
-pcomplete.c
-       - in programmable_completions, copy the compspec before using it to
-         generate the possible completions, allowing the completion for the
-         command to be changed by the compspec itself without causing a
-         core dump because the shell frees freed memory (reported by
-         marcus.harnish@gmx.net)
-
-parse.y
-       - in shell_getc, don't call notify_and_cleanup in an interactive shell
-         unless the shell is currently reading from the terminal and would
-         print a prompt.  This fixes programmable completions printing job
-         notifications (reported by r.d.green@lancaster.ac.uk)
-       - use SHOULD_PROMPT macro consistently
-
-shell.c
-       - use get_string_value instead of getenv when looking up $TERM and
-         $EMACS to see whether the shell is running under emacs
-       - check for `TERM=dumb' as well as `EMACS=t' to decide whether or
-         not to turn off command-line editing in emacs shell windows
-         (reported by jik@kamens.brookline.ma.us)
-
-                                  5/28
-                                  ----
-expr.c
-       - save and restore the `evalbuf' context, since evalexp can be
-         called recursively (e.g. a[b[c]])
-
-                                  5/29
-                                  ----
-builtins/common.c
-       - in display_signal_list, when displaying for `kill -l' in posix mode,
-         display signal names without the `SIG' prefix
-
-doc/bashref.texi
-       - documented changed to posix mode behavior of kill -l
-
-builtins/kill.def
-       - changed the error message printed when argument is not a pid or
-         job id
-
-doc/{bash.1,bashref.texi}
-       - fixed a slight inconsistency in the different sections describing
-         the `promptvars' option
-
-doc/Makefile.in
-       - new rule to create `bash.info' from `bashref.info' by running sed
-         to change the internal references.  This makes the installed
-         bash.info work right
-       - make the install target install bash.info after it's been modified
-         from bashref.info
-
-                                  5/30
-                                  ----
-builtins/cd.def
-       - after testing with ferror(), call clearerr if ferror() evaluates
-         to true
-
-execute_cmd.c
-       - call clearerr(stdout) after executing a builtin or function,
-         before restoring any redirections
-
-bashhist.c
-       - initialize history_comment_char in bash_history_initialize
-
-builtins/alias.def
-       - if posix mode is enabled, and the `-p' option is not supplied, don't
-         list aliases with a preceding `alias ', as POSIX.2 specifies
-
-doc/bashref.texi
-       - note new posix mode behavior of displaying alias names and values
-       - note new posix mode behavior of trap builtin not checking first
-         argument to be a possible signal specification
-       - note new posix mode behavior of `kill' not accepting signal names
-         with a leading `SIG'
-
-include/stdc.h,lib/readline/rlstdc.h
-       - don't check the __STRICT_ANSI__ define when deciding whether or not
-         to #undef __attribute__
-
-trap.[ch]
-       - decode_signal and signal_object_p take an additional flags arg to
-         satisfy POSIX.2 signal name translation requirements
-       - change decode_signal to honor the new DSIG_NOCASE (match case-
-         insensitively) and DSIG_SIGPREFIX (allow signal specifications
-         with the `SIG' prefix) flags
-
-builtins/{common.c,{trap,kill}.def}
-       - change calls to decode_signal to add the new argument with
-         appropriate values.  For kill, POSIX.2 says case-insensitive without
-         the `SIG' prefix.  For trap, POSIX.2 says applications may decode
-         case-insensitively and with the SIG prefix
-
-builtins/trap.def
-       - when in posix mode, don't check for the first argument being a
-         possible signal spec and revert the signal handling to the
-         original disposition
-
-                                   6/1
-                                   ---
-shell.h
-       - new MATCH_STARSUB define, to tell the callers of the various pattern
-         substitution and removal functions that call string_list to treat
-         "$*" and "${array[*]}" appropriately
-subst.c
-       - if get_var_and_type encounters an array variable subscripted by `*'
-         or `$*', return VT_STARSUB or'd into the variable type value
-       - callers of get_var_and_type check for VT_STARSUB in the returned type
-         this will fix problems with ${*...} not being separated with the
-         first character of $IFS when double-quoted
-       - in parameter_brace_patsub, set MATCH_STARSUB if VT_STARSUB is set by
-         get_var_and_type
-       - change pos_params_pat_subst to call string_list_dollar_star if
-         the match flags include MATCH_STARSUB
-       - change parameter_brace_substring to call array_subrange with an
-         additional argument indicating the character indexing the array
-
-array.c
-       - change array_patsub to join the modified array elements with the
-         first character of $IFS if MATCH_STARSUB is set in the match flags
-         passed in
-       - array_subrange now takes an additional argument indicating the
-         index type -- used to separate with first char of $IFS if the
-         index char is `*' and the expression is double-quoted
-
-array.h
-       - change prototype declaration of array_subrange to add additional arg
-
-                                   6/2
-                                   ---
-doc/FAQ
-       - merged in some updates about POSIX from Andrew Josey
-
-                                   6/3
-                                   ---
-bashjmp.h
-       - new value for jump_to_top_level:  ERREXIT
-
-{eval,shell,subst,trap}.c,builtins/evalstring.c
-       - ERREXIT is (for now) equivalent to EXITPROG as a value from
-         jump_to_top_level
-
-                                   6/9
-                                   ---
-doc/bash.1,lib/readline/doc/readline.3
-       - documented new `show-all-if-unmodified' readline variable
-
-                                  6/14
-                                  ----
-lib/readline/history.c
-       - new function, histdata_t free_history_entry (HIST_ENTRY *h),
-         frees H and its line, returning the application-specific data
-       - use free_history_entry where appropriate
-
-lib/readline/history.h
-       - extern declaration for free_history_entry()
-
-lib/readline/doc/{history.3,hstech.texi}
-       - document free_history_entry
-
-                                  6/16
-                                  ----
-lib/readline/readline.[ch]
-       - changed varions defines for readline/history library versions to 5.0
-
-subst.c
-       - pass information about whether or not an indirectly-expanded variable
-         contains ${array[@]}, ${array[*]}, $@, or $*
-       - new function, chk_atstar, performs checks for ${array[@]},
-         ${array[*]}, $@, or $* for the parameter_brace_expand* functions and
-         sets flags (passed as args) to the results
-       - call chk_atstar from parameter_brace_expand_indir and
-         parameter_brace_expand
-
-                                  6/28
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarified that (...) commands are executed in a subshell environment
-
-                                  6/30
-                                  ----
-lib/readline/bind.c
-       - fix a problem with parsing nested if statements in inputrc files
-         (fix from dimakar@yahoo.com)
-
-                                   7/3
-                                   ---
-{jobs,nojobs}.c
-       - fix places that use the return value from strsignal() to check
-         for NULL return values using a new function, j_strsignal()
-
-builtins/kill.def
-       - removed JOB_CONTROL restriction; kill is now available as a builtin
-         when the shell is built without job control
-
-                                  7/10
-                                  ----
-jobs.c
-       - some systems have WIFCONTINUED but not WCONTINUED; separate the
-         #defines
-
-                                  7/14
-                                  ----
-lib/readline/history.h
-       - new `timestamp' member of a HIST_ENTRY
-       - extern declarations for add_history_time and history_get_time
-
-lib/readline/doc/{history.3,hstech.texi}
-       - document add_history_time and history_get_time
-
-lib/readline/history.c
-       - implementations of history_get_time and add_history_time
-       - change add_history to initialize the timestamp information
-       - change free_history_entry to free the timestamp
-       - change replace_history_entry to duplicate the timestamp
-       - change history_total_bytes to add the memory taken by the time
-         stamps
-
-bashhist.c,builtins/history.def
-       - use free_history_entry where appropriate
-
-lib/readline/histfile.c
-       - changes to read_history_range to deal with new history file format
-         including timestamps
-       - changes to history_do_write to write out the timestamp information
-       - changes to history_truncate_file to understand the timestamp
-         information
-
-                                  7/22
-                                  ----
-doc/{bash.1,bashref.texi}
-       - fixed function declaration documentation to specify that any compound
-         command may be used as the function body, not just a group command
-
-                                  7/23
-                                  ----
-lib/readline/histfile.c
-       - don't allocate space for null timestamps in history_do_write, and
-         don't write out null timestamp entries
-
-parse.y
-       - fix CHECK_FOR_RESERVED_WORD to call time_command_acceptable() and
-         return TIME if the token is "time" and `time' is legal in that
-         context
-
-                                  7/29
-                                  ----
-lib/sh/fmtulong.c
-       - include <inttypes.h> for possible definitions of intmax_t, uintmax_t
-         (reported by ro@techfak.uni-bielefeld.de)
-
-                                  7/30
-                                  ----
-parse.y
-       - remove checking for `time' reserved word from special_case_tokens();
-         use regular mechanism in CHECK_FOR_RESERVED_WORD.  This allows `time'
-         to be aliased.  (Reported by Glenn Morris
-         <gmorris+gmane@ast.cam.ac.uk>)
-
-                                  7/31
-                                  ----
-lib/readline/history.h
-       - extern declaration for history_write_timestamps
-
-lib/readline/histfile.c
-       - don't write timestamps to the history file in history_do_write
-         unless history_write_timestamps is set to non-zero by the application
-         (set to 0 by default)
-
-lib/readline/doc/{hstech.texi,history.3}
-       - document history_write_timestamps
-
-variables.[ch]
-       - new special variable function, HISTTIMEFORMAT; special function
-         sets history_write_timestamps to 1 if HISTTIMEFORMAT is set
-
-                                   8/4
-                                   ---
-builtins/history.def
-       - added support for printing time stamps based on the value of the
-         HISTTIMEFORMAT variable when displaying history entries
-
-doc/{bash.1,bashref.texi}
-       - added description of new HISTTIMEFORMAT variable
-
-                                   8/5
-                                   ---
-config-top.h
-       - remove /usr/ucb from any default paths
-
-mailcheck.c
-       - make_default_mailpath now returns NULL if DEFAULT_MAIL_DIRECTORY
-         is not defined
-       - remember_mail_dates now returns if make_default_mailpath returns
-         NULL
-
-config-bot.h
-       - reorganized the sections; provide an explicit placeholder for
-         builders to #undef any feature defines they don't want that
-         configure creates for them, like the default mail path
-
-                                   8/9
-                                   ---
-config.h.in
-       - add HAVE_REGEX_H, HAVE_REGCOMP, HAVE_REGEXEC for detection of POSIX.2
-         regular expression functions
-       - add COND_REGEXP define to enable and disable the =~ operator for
-         matching extended regular expressions in [[...]] commands
-
-configure.in
-       - new option, --enable-cond-regexp, enables =~ and code to perform
-         regular expression matching in [[...]]
-
-config-bot.h
-       - undef COND_REGEXP if the OS doesn't provide posix regexp support
-
-doc/bashref.texi
-       - documnent new --enable-cond-regexp option to configure
-
-                                  8/18
-                                  ----
-support/shobj-conf
-       - support for shared objects on FreeBSD-gnu (from Robert Millan)
-
-                                  8/25
-                                  ----
-lib/sh/shmatch.c
-       - new file, shell interface to posix extended regular expression
-         matching
-
-externs.h
-       - new extern declarations for functions in shmatch.c
-
-execute_cmd.c
-       - incorporate code into execute_cond_node that does extended regular
-         expression matching for the =~ operator
-
-parse.y
-       - add `=~' to the list of binary operators accepted by the conditional
-         command parser
-
-doc/{bash.1,bashref.texi}
-       - documented =~ conditional binary operator and the BASH_REMATCH
-         variable
-
-                                  8/27
-                                  ----
-lib/readline/display.c
-       - take multibyte characters into account when looking for quoted
-         substrings on which to do completion (fix from jir@yamato.ibm.com)
-
-lib/readline/util.c
-       - fix typo in _rl_strpbrk
-
-lib/readline/rldefs.h
-       - use function version of _rl_strpbrk in multibyte locales, because
-         it understands to skip over special characters in multibyte
-         character sequences
-
-                                  8/28
-                                  ----
-jobs.c
-       - in wait_for, check for window size changes if a job that exits due
-         to a signal or is stopped was in the foreground, not just if it's
-         the current job
-
-                                  9/10
-                                  ----
-support/config.{guess,sub}
-       - add support to recognize FreeBSD running on the amd64
-
-subst.c
-       - if the new `fail_glob_expansion' variable is non-zero, globbing that
-         fails to match anything causes an expansion error
-
-builtins/shopt.def
-       - new `failglob' expansion:  if enabled, failed globs cause an error
-
-test/shopt.right
-       - take `failglob' into account
-
-doc/{bash.1,bashref.texi}
-       - documented new `failglob' option and its effects
-
-                                  9/12
-                                  ----
-findcmd.c
-       - fix file_status to treat the mode bits and uid right -- in particular,
-         don't assume the `other' bits always apply.  Bug reported by
-         <moseley@hank.org>; fix inspired by <carlo@alinoe.com>
-
-command.h
-       - new word flag: W_NOCOMSUB, meaning to not perform command
-         substitution on a word
-
-subst.c
-       - new flag for param_expand: PF_NOCOMSUB.  If non-zero, $(...)
-         command substitutions are not expanded, but returned unchanged
-       - change expand_word_internal to pass through `` command substitutions
-         unchanged if (word->flags & W_NOCOMSUB) != 0
-       - change expand_word_internal to pass PF_NOCOMSUB to param_expand
-         if (word->flags & W_NOCOMSUB) != 0
-
-builtins/shopt.def
-       - rename set_interactive_comments to set_shellopts_after_change, which
-         more accurately reflects its purpose
-
-syntax.h
-       - add a define for isblank() in case the system doesn't provide one
-
-jobs.c
-       - change raw_job_exit_status to understand `pipefail', using the new
-         `pipefail_opt' variable
-
-flags.[ch]
-       - declare pipefail_opt
-       - reset pipefail_opt to 0 in reset_shell_flags
-
-builtins/set.def
-       - add `set -o pipefail' and document it in help output
-
-doc/{bash.1,bashref.texi}
-       - document `set -o pipefail' and the effect of the pipefail option
-
-mksyntax.c,syntax.h
-       - sh_syntaxtab is no longer `const'
-       - new generated variable, sh_syntabsiz, set to number of entries in
-         sh_syntaxtab, written to generated syntax.c
-
-locale.c
-       - new function, locale_setblanks(), sets each member of the current
-         locale's <blank> class to have the CSHBRK flag in sh_syntaxtab
-
-                                  9/17
-                                  ----
-arrayfunc.c
-       - change convert_var_to_array to not set array[0] to a NULL value
-         (if the scalar variable had no value; e.g., after being created
-         with `local arrayvar')
-
-lib/readline/display.c
-       - save and restore the value of prompt_invis_chars_first_line in
-         rl_{save,restore}_prompt, and reinitialize it to 0 before printing
-         something in the message area
-
-lib/readline/bind.c
-       - new functions: rl_bind_keyseq_if_unbound_in_map(ks, func, kmap);
-         binds key sequence KS to function FUNC in keymap KMAP, and
-         rl_bind_keyseq_if_unbound (ks, func); binds key sequence KS to
-         function FUNC in the current keymap
-
-lib/readline/readline.h
-       - extern function declarations for rl_bind_keyseq_if_unbound_in_map and
-         rl_bind_keyseq_if_unbound
-
-lib/readline/{readline,terminal}.c
-       - _rl_bind_if_unbound -> rl_bind_keyseq_if_unbound
-
-lib/readline/{bind.c,rlprivate.h}
-       - remove _rl_bind_if_unbound
-
-                                  9/18
-                                  ----
-lib/readline/doc/rltech.texi
-       - document rl_bind_keyseq_if_unbound and
-         rl_bind_keyseq_if_unbound_in_map
-
-                                  9/19
-                                  ----
-lib/readline/bind.c
-       - new functions rl_bind_key_if_unbound_in_map and
-         rl_bind_key_if_unbound; analogous to (and implemented in terms of)
-         keyseq functions
-       - rl_bind_keyseq_in_map: a new function, equivalent to rl_set_key
-         (which remains for backwards compatibility); changed callers to
-         use it
-       - new function, rl_bind_keyseq, equivalent to rl_bind_keyseq_in_map
-         with a third argument of _rl_keymap
-
-lib/readline/readline.h
-       - extern declarations for rl_bind_key_if_unbound_in_map and
-         rl_bind_key_if_unbound
-       - extern declarations for rl_bind_keyseq_in_map and rl_bind_keyseq
-
-lib/readline/doc/rltech.texi
-       - document rl_bind_keyseq and rl_bind_keyseq_in_map
-
-configure.in
-       - require at least readline-5.0
-
-config-bot.h
-       - define SYS_SIGLIST_DECLARED if it's not defined, but
-         HAVE_DECL_SYS_SIGLIST is, to deal with differences between
-         autoconf versions
-
-bashline.c
-       - use rl_bind_key_if_unbound_in_map when binding bash keybindings in
-         initialize_readline(), so inputrc files can override them
-
-                                  9/22
-                                  ----
-lib/readline/histsearch.c
-       - do better bounds checking for history_offset and history_length in
-         history_search_internal
-
-builtins/history.def
-       - in delete_last_history(), make sure we don't leave the history
-         offset longer than the history length after calling delete_histent
-
-                                  9/23
-                                  ----
-jobs.c
-       - small change to notify_of_job_status so job status messages get
-         printed even if the shell was started to run `-c command'.  The
-         old behavior was intentional, but I cannot remember why, so we'll
-         try it the other way for a while (debian bash bug #211693)
-
-                                  9/24
-                                  ----
-jobs.c
-       - slightly modify change from 9/23 so that jobs started to run
-         command substitutions don't print job status messages
-
-                                  9/25
-                                  ----
-lib/readline/search.c
-       - when reading a non-incremental search string from the terminal,
-         use a separate undo list rather than chaining it to the undo list
-         from the rest of the line, since the whole undo list will get
-         freed when the search string is complete
-
-lib/readline/readline.h
-       - changed the defines guarding the stdarg prototype for rl_message to
-         match what's actually used in display.c, where it's defined
-
-                                  9/26
-                                  ----
-[bash-3.0-alpha released]
-
-                                  9/29
-                                  ----
-lib/sh/shmatch.c
-       - fix to build correctly when arrays are not compiled into the shell
-
-subst.c
-       - fix command substitution to run any exit trap defined in the
-         command substitution before returning; the exit trap is not inherited
-         from the calling shell
-
-lib/readline/shell.c
-       - change sh_set_lines_and_columns to free the memory allocated and
-         passed to setenv(), since setenv is specified by POSIX to allocate
-         new memory and copy its arguments
-
-jobs.c
-       - change logic in make_child so that every child process attempts to
-         set the terminal's process group to the pipeline's process group
-         when PGRP_PIPE is defined, just like when it's undefined.  This is
-         reported to fix some tricky synchronization problems on Red Hat
-         Enterprise Linux 3.  Fix from Ernie Petrides <petrides@redhat.com>.
-
-                                  9/30
-                                  ----
-builtins/printf.def
-       - tescape no longer needs a `trans_squote' argument, since it's the
-         same as the `sawc' argument.  The `sawc' argument now means to do
-         the %b argument processing if non-null
-       - fix processing of octal constants for %b arguments (\0 followed by
-         up to three octal digits) and other escape sequences (\ followed by
-         up to three octal digits)
-       - hex constants `\xHHH' are now allowed to contain any positive
-         number of digits; previously they were restricted to two [removed]
-       - allow two new escape sequences: \" and \?, for compatibility with
-         ksh93 and ANSI C
-
-doc/{bash.1,bashref.texi}
-       - documented processing that printf performs for arguments to %b
-         escape sequences
-
-lib/sh/strtrans.c
-       - add \" and \? to escape sequences recognized by `echo -e'
-
-                                  10/1
-                                  ----
-version.c
-       - use snprintf instead of sprintf if configure tells us we have it
-
-                                  10/3
-                                  ----
-subst.c
-       - in list_remove_pattern, take into account the fact that one of the
-         list elements may be NULL, and don't free the result of
-         remove_pattern() without checking
-       - in remove_pattern, return savestring(param) if *param == '\0',
-         since callers expect to free() non-null return values
-
-                                  10/4
-                                  ----
-subst.c
-       - change verify_substring_values to make it clearer that the first
-         offset deals with array indices and the second deals with numbers
-         of elements, when doing array subranges with ${a[@]:e1:e2}
-
-array.c
-       - change array_subrange to make it explicit that the second offset
-         argument is a count of the desired number of elements, not an
-         ending index.  This deals with sparse arrays correctly.
-
-                                  10/6
-                                  ----
-variables.c
-       - fix memory leak in assign_in_env
-
-                                  10/8
-                                  ----
-subst.c
-       - in parameter_brace_expand, check that the last characters are `]}'
-         before checking for ${!array[@]}
-
-execute_cmd.c,builtins/source.def
-       - push and pop the args (BASH_ARGV and BASH_ARGC) when executing a
-         shell function or sourcing a script only when in debugging mode
-
-                                  10/11
-                                  -----
-arrayfunc.c
-       - make sure array_variable_name returns values for the SUBP and LENP
-         arguments if they're non-null, since callers expect to use them
-         even if the array subscript is bad
-
-error.c
-       - call exit_shell instead of sh_exit from parser_error and
-         report_error so the right things happen (running exit trap, doing
-         the right interactive cleanup, etc.)
-
-lib/readline/complete.c
-       - new variable, rl_completion_quote_character, set to any quote char
-         readline thinks it finds before any application completion
-         function is called
-       - new variable, rl_completion_suppress_quote, settable by an
-         application-specific completion function.  If set to non-zero, the
-         completion code does not append a closing quote in append_to_match
-
-lib/readline/readline.h
-       - extern declarations for rl_completion_quote_character and
-         rl_completion_suppress_quote
-
-bashline.c
-       - set rl_completion_suppress_quote in command_subst_completion_function
-         because that would be inserted before any closing "`" or ")", which
-         is somewhat disconcerting
-
-lib/readline/doc/rltech.texi
-       - documented rl_completion_suppress_quote and
-         rl_completion_quote_character
-
-                                  10/13
-                                  -----
-bashhist.c
-       - use sv_histchars instead of setting history_comment_char directly in
-         bash_initialize_history so assignments to $histchars made in
-         ~/.bashrc are honored
-
-                                  10/21
-                                  -----
-trap.c
-       - make sure run_exit_trap sets `running_trap' appropriately
-       - new variable, trap_saved_exit_value, set to last_command_exit_value
-         before running any trap commands; available to the rest of the
-         shell; use trap_saved_exit_value to replace some function-local
-         variables
-
-builtins/exit.def
-       - if the shell is running the exit trap, and no argument is given
-         to `exit', use trap_saved_exit_value as the exit status instead
-         of the last command exit value (which could be the previous command
-         run in the exit trap), as required by POSIX.2
-
-                                  10/25
-                                  -----
-doc/{bash.1,bashref.texi}
-       - add `alias' to the list of documented `assignment statement' builtins
-
-                                  11/1
-                                  ----
-doc/bash.1
-       - remove the `.' from the sample $PATH value
-
-parse.y
-       - make sure parse_compound_assignment prompts with $PS2 if it reads
-         a newline while parsing the compound assignment statement. Bug
-         reported by Stephane Chazelas
-       - parse_string_to_word_list now takes a new second argument: `int flags'
-       - new parser state flag: PST_COMPASSIGN; indicates that the shell is
-         parsing a compound assignment statement
-       - parse_string_to_word_list turns on PST_COMPASSIGN if `flags' arg
-         has low bit set
-       - turn PST_COMPASSIGN on and off in parse_compound_assignment
-
-externs.h
-       - change prototype declaration for parse_string_to_word_list
-
-arrayfunc.c
-       - change call to parse_string_to_word_list to add new flags arg
-
-general.c
-       - assignment() takes a new `flags' second argument
-       - if `flags' is non-zero, accept `[' as a legal assignment statement
-         starter character (for parsing compound array assignments)
-
-general.h
-       - add new argument to prototype declaration for assignment()
-
-parse.y,{subst,variables}.c, builtins/{setattr,declare}.def
-       - change calls to assignment() (parse.y calls with flags == 1 when
-         parser_state inlcudes PST_COMPASSIGN)
-
-arrayfunc.c
-       - in assign_array_var_from_string(), don't treat an expanded word
-         of the form [ind]=value specially unless the W_ASSIGNMENT flag is
-         set.  This means that words that are the result of expansions but
-         happen to have the same format as compound assignment statement
-         words will not be treated as such.  For instance
-
-               v='[12]=foobar'
-               a=( $v )
-
-         will result in a[0]='[12]=foobar' instead of a[12]=foobar.  This
-         is closer to how `regular' assignment statements are treated and
-         compatible with ksh93.  Bug reported by Stephane Chazelas
-
-shell.c
-       - new --protected argument, disables command substitution when used
-         with --wordexp (like --wordexp, it remains undocumented)
-       - change run_wordexp to turn on the W_NOCOMSUB flag in each word
-         to be expanded if protected_mode is set
-
-                                  11/7
-                                  ----
-doc/{bash.1,bashref.texi}
-       - clarified the language concerning inherited signal dispositions and
-         when traps are run
-
-support/shobj-conf
-       - slight changes to the darwin (Mac OS X) stanza for MacOS X 10.3
-         (for the readline shared library builds, which shares this script)
-
-lib/readline/histexpand.c
-       - change to make `^' behave as equivalent to word one, as csh does,
-         and as the documentation states
-
-lib/readline/display.c
-       - in update_line, make sure to use col_lendiff in all calculations
-         where the cursor position is concerned (like when calculating
-         the value of _rl_last_c_pos).  Fixes bug reported by Andreas
-         Schwab
-
-                                  11/12
-                                  -----
-trap.c
-       - make _run_trap_internal catch `return' builtin longjmps and clean
-         up before longjmping on to where the return was intended to go
-         (fixes bug with not turning off SIG_INPROGRESS flag when `return'
-         executed in trap command)
-
-                                  11/18
-                                  -----
-builtins/cd.def
-       - in posix mode, set errno to ENOTDIR if canonicalization fails,
-         unless the canonicalization functions leave it set to ENOENT
-
-                                  11/25
-                                  -----
-make_cmd.c
-       - in make_simple_command, don't blindly dereference element.redirect
-
-parse.y
-       - the list_terminator production now has an `int' value so it can be
-         used in other grammar productions
-       - add a rule that makes `time' on a line by itself time a null
-         command (this is iffy)
-
-                                  11/28
-                                  -----
-subst.c
-       - change the pattern substitution code (${var//pat/rep}) to use the
-         same pattern expansion function (getpattern()) as the pattern
-         removal expansions.  This has the effect of no longer performing
-         quote removal on the pattern before trying to match it.  This
-         fixes an incompatibility with ksh93 reported on comp.unix.shell
-
-nojobs.c
-       - add replacement function for siginterrupt on the off chance that a
-         system has posix signals but lacks siginterrrupt
-
-lib/readline/display.c
-       - fix from Tim Waugh at Red Hat to speed up inserting characters into
-         long lines in a UTF-8 environment by optimizing the calculation of
-         the first difference between old and new lines by checking to see
-         whether the old line is a subset of the new
-
-                                  11/29
-                                  -----
-lib/malloc/stats.c
-       - break code that opens file (and interprets %p) into separate function
-         _imalloc_fopen(char *s, char *fn, char *def, char *defbuf, size_t defsiz)
-         for use by rest of library
-       - default stats file is now `stats.PID'
-
-lib/malloc/trace.c
-       - new function, malloc_set_tracefn (char *s, char *fn), sets tracing
-         to the file named by FN (with %p interpolated as the pid), using
-         some default if FN is NULL
-
-lib/malloc/shmalloc.h
-       - new extern declaration for malloc_set_tracefn
-
-                                  12/4
-                                  ----
-execute_cmd.c
-       - combined several common strings from do_piping() into one
-         dup_error() function
-
-builtins/common.[ch]
-       - new function, `sh_notbuiltin(s)' prints error message about s not
-         being a shell builtin
-
-builtins/{builtin,enable}.def
-       - call sh_notbuiltin instead of using literal string
-
-{arrayfunc,expr,error}.c
-       - use one string variable for `bad array subscript' error message; use
-         in calls to various error reporting functions
-
-Makefile.in
-       - add variables for localedir and the PACKAGE_* variables, auto-set
-         by configure
-
-configure.in
-       - un-cache values for gettext, textdomain, and bindtextdomain if they're
-         not in libc but in libintl so the right variables get set
-
-bashintl.h
-       - add necessary defines for marking strings to be translated using
-         gettext
-
-locale.c
-       - set textdomain and directory in set_default_locale
-       - don't call textdomain with the value of $TEXTDOMAIN, since we don't
-         want to override the default domain ("bash")
-       - don't call bindtextdomain unless default_domain already has a value
-       - when translating $"..." strings, use dgettext with the script's
-         default domain (value of $TEXTDOMAIN)
-
-                                  12/9
-                                  ----
-builtins/mkbuiltins.c
-       - include "bashintl.h" in the generated "builtins.c"
-
-support/{config.rpath,mkinstalldirs}
-       - new files to support gettext i18n
-
-ABOUT-NLS
-       - new readme file for gettext internationalization
-
-po/{Makefile.in.in,Rules-quot,boldquot.sed,en@boldquot.header,en@quot.header,insert-header.sin,quot.sed,remove-potcdate.sin}
-po/{POTFILES.in,bash.pot}
-       - new files for gettext
-
-lib/intl
-       - new directory, with libintl stuff from gettext
-
-aclocal.m4
-       - add m4 files from gettext distribution needed by libintl
-
-configure.in
-       - create po/Makefile.in and lib/intl/Makefile in AC_OUTPUT
-       - add call to AM_GNU_GETTEXT to initialize gettext stuff
-
-Makefile.in
-       - use mkinstalldirs instead of mkdirs in the `installdirs' target
-       - changes for intl/ and po/ subdirectories in build and install
-       - changes to have libintl linked in, as determined by configure
-       - changes to have libintl built, just in case it's used (though I'd
-         rather not)
-
-                                  12/10
-                                  -----
-config.h.in
-       - additional #defines required by the libintl library
-       - add ENABLE_NLS define for AM_GNU_GETTEXT
-       - take out defines for HAVE_{BINDTEXTDOMAIN,GETTEXT,TEXTDOMAIN}
-
-configure.in
-       - removed old tests for libintl and gettext/textdomain/bindtextdomain
-
-locale.c
-       - remove HAVE_GETTEXT code; we have gettext unconditionally now
-
-bashintl.h
-       - change to include "gettext.h" and remove the conditional code based
-         on whether or not gettext is present
-
-                                  12/16
-                                  -----
-lib/readline/vi_mode.c
-       - fix problem with rl_vi_eWord that caused it to skip over the last
-         character of a word if invoked while point was on the next-to-last
-         character
-
-                                  12/18
-                                  -----
-{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c
-{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c
-{subst,test,trap,variables,version,xmalloc}.c
-parse.y
-builtins/{common,evalfile,getopt}.c
-builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def
-builtins/{hash,help,history,jobs,kill,printf,pushd,read,return,set,setattr}.def
-builtins/{shift,shopt,source,suspend,type,ulimit,umask}.def
-lib/sh/{fmtulong,netopen}.c
-       - include "bashintl.h" for gettext defines
-
-Makefile.in
-       - add `-DBUILDTOOL' to CFLAGS for buildversion.o
-
-bashintl.h
-       - if `BUILDTOOL' is defined, define ENABLE_NLS to 0 so we don't have
-         to compile and link in the gettext stuff
-
-Makefile.in,lib/sh/Makefile.in,builtins/Makefile.in
-       - update dependencies on bashintl.h and include/gettext.h
-
-                                  12/19
-                                  -----
-{arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c
-{mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c
-{subst,test,trap,variables,version,xmalloc}.c
-builtins/{common,evalfile,getopt}.c
-builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def
-builtins/{hash,help,history,jobs,kill,let,printf,pushd,read,return,set}.def
-builtins/{setattr,shift,shopt,source,suspend,type,ulimit,umask}.def
-lib/sh/{fmtulong,netopen}.c
-lib/malloc/{malloc,stats,table,watch}.c
-       - mark up strings in source files for gettext processing
-
-lib/malloc/imalloc.h
-       - include "bashintl.h" if SHELL is defined, otherwise make _(x) an
-         identity define
-
-lib/malloc/Makefile.in
-       - add dependencies on ${topdir}/bashintl.h and ${BASHINCDIR}/gettext.h
-
-                                  12/21
-                                  -----
-bashline.c
-       - make sure we index into rl_line_buffer with indexes > 0 in
-         attempt_shell_completion
-
-                                  12/31
-                                  -----
-Makefile.in
-       - descend into `po' and run make recursively for the various clean
-         targets
-
-                                   1/4
-                                   ---
-include/shmbutil.h
-       - two new macros:  BACKUP_CHAR(str, strsize, i), which backs up one
-         multibyte character in STR starting at index I, and
-         BACKUP_CHAR_P(str, strsize, p), which backs up one multibyte
-         character in STR starting at P, which is a char *
-
-                                   1/6
-                                   ---
-pcomplete.c
-       - in pcomp_filename_completion_function, use the quote character
-         readline found (and assigned to rl_complete_quote_character) when
-         dequoting the filename by a completion call from readline (when
-         rl_dispatching != 0)
-
-bashline.c
-       - ditto for bash_directory_completion_matches
-
-                                   1/7
-                                   ---
-lib/readline/complete.c
-       - new variable,  rl_completion_found_quote, set to non-zero value if
-         readline finds what it thinks is quoting in the word to be completed
-
-lib/readline/readline.h
-       - extern declaration for rl_completion_found_quote
-
-                                   1/8
-                                   ---
-lib/readline/doc/rltech.texi
-       - documented rl_completion_found_quote
-
-lib/readline/complete.c
-       - in compute_lcd_of_matches, if it looks like what the user typed was
-         dequoted before generating filename matches, dequote the user's
-         text again before figuring out the case-insensitive lcd
-
-                                   1/9
-                                   ---
-lib/readline/display.c
-       - fix from Edward Catmur <ed@catmur.co.uk> to logic that handles
-         invisible characters in prompt string.  Original code was wrong
-         about local_prompt_prefix; it gave incorrect results when prompt
-         contained invisible characters after a line break
-
-                                  1/10
-                                  ----
-subst.c
-       - new function, mb_substring(), does character (possibly multibyte)
-         oriented rather than strictly byte-oriented substring extraction.
-         The passed indices, rather than strictly indexing into the string,
-         indicate character positions that need to be calculated.  From
-         Tim Waugh <twaugh@redhat.com>
-       - change parameter_brace_substring to use mb_substring if necessary
-
-included/shmbutil.h
-       - new define SADD_MBQCHAR_BODY, common code for adding a quoted
-         (preceded by CTLESC) multibyte character to an accumulating string
-         in the subst.c expansion code
-
-subst.c
-       - use SADD_MBQCHAR_BODY in expand_word_internal
-       - new static function, mb_getcharlens, allocates and returns an array
-         of character lengths for (possibly multibyte) characters in the
-         argument string
-       - change pattern matching operations to use while loops instead of
-         for loops to handle multibyte characters better (no more simple
-         increment or decrement)
-       - change pattern matching operations to use multibyte character
-         operations instead of simple increments and decrements.  Don't
-         use BACKUP_CHAR_P -- use the mblen array instead, because that
-         avoids the N**2 behavior of having to count from the beginning
-         of the string each time you want to back up one character.  Changes
-         to remove_pattern and match_pattern
-
-                                  1/12
-                                  ----
-lib/readline/display.c
-       - make expand_prompt count multbyte characters in the prompt string
-         by using _rl_find_next_mbchar (and copying possibly more than one
-         byte) instead of a simple increment and single byte copy
-
-                                  1/13
-                                  ----
-lib/readline/display.c
-       - expand_prompt takes a new reference argument -- it returns
-         the actual count of (possibly multibyte) characters displayed
-         on the screen
-       - don't short-circuit in expand_prompt unless we're not going to
-         be using any multibyte characters
-       - change calls  to expand_prompt to pass an argument for the
-         number of physical characters the prompt occupies
-         (prompt_physical_chars)
-       - initialize `lpos' (the physical cursor position) from
-         prompt_physical_chars in rl_redisplay
-
-lib/readline/mbutil.c
-       - in _rl_find_prev_mbchar_internal, if mbrtowc returns -1 or -2, and
-         we assume that the character is a single-byte char, make sure we
-         update `prev' so it doesn't get lost.  Fixes problems encountered
-         when a non-ascii char is the last char on the line and we're moving
-         back past it with ^B, and other display problems caused by the same
-         situation
-
-                                  1/15
-                                  ----
-lib/readline/doc/rltech.texi
-       - document RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE in the
-         description of rl_expand_prompt()
-
-                                  1/20
-                                  ----
-bashline.c
-       - in initialize_readline, make sure M-C-j and M-C-m are still bound to
-         vi-editing-mode before unbinding them -- they may have been rebound
-         in an inputrc
-
-variables.c
-       - in unbind_variable, unset attributes other than `local' and exported
-         (if the variable came from a temporary environment) when unsetting a
-         local variable inside a function
-
-                                  1/21
-                                  ----
-configure.in
-       - add libintl build directory to the list of include directories if
-         it's being built (using INTL_BUILDDIR)
-
-Makefile.in,{builtins,lib/{sh,malloc}}/Makefile.in
-       - substitute LIBBUILD as ${BUILD_DIR}/${LIBSUBDIR}
-       - define INTL_BUILDDIR as ${LIBBUILD}/intl
-
-{builtins,lib/sh}/Makefile.in
-       - make sure INTL_INC is added to  the list of include directories
-       - make sure INTL_LIBSRC is defined with the correct value
-
-{configure,Makefile,{builtins,lib/sh}/Makefile}.in
-       - substitute LIBINTL_H as ${INTL_BUILDDIR}/libintl.h
-
-Makefile.in,builtins/Makefile.iin
-       - all files depending on bashintl.h also depend on ${LIBINTL_H}
-         (which may be empty)
-
-Makefile.in
-       - make a rule telling how to build lib/intl/libintl.h if necessary
-
-                                  1/24
-                                  ----
-builtins/read.def
-       - make sure that the array name supplied as an argument to -a is a
-         valid identifier
-
-parse.y
-       - make the \W expansion abbreviate $HOME with a ~ (seems to be more
-         useful)
-
-doc/{bash.1,bashref.texi}
-       - document new behavior of \W
-
-subst.c
-       - make sure parameter_brace_expand_rhs uses the first character of
-         $IFS when making the string to return from the expanded word
-         (which, in the case of "$@" or $@, contains multiple words that
-         need to be separated)
-
-                                  1/25
-                                  ----
-builtins/common.c
-       - change get_job_spec to make `%' by itself or an empty argument
-         return NO_JOB
-
-jobs.h
-       - new possible value for a job spec return value:  BAD_JOBSPEC
-         (for syntactically invalid specs, like the empty string)
-
-shell.c
-       - in open_shell_script, check to see whether or not we can find and
-         open the filename argument before setting dollar_vars[0] or
-         manipulating BASH_SOURCE, so the error messages come out better
-
-subst.c
-       - in string_list_internal, short-circuit right away to savestring()
-         if the list only has a single element
-
-                                  1/28
-                                  ----
-lib/readline/rltypedefs.h
-       - new set of typedefs for functions returning char * with various
-         arguments (standard set)
-
-lib/readline/complete.c
-       - new function pointer, rl_completion_word_break_hook, called by
-         _rl_find_completion_word, used to set word break characters at
-         completion time, allowing them to be position-based
-
-lib/readline/doc/rltech.texi
-       - documented rl_completion_word_break_hook
-
-lib/readline/kill.c
-       - added new rl_unix_filename_rubout, which deletes one filename
-         component in a Unix pathname backward (delimiters are whitespace
-         and `/')
-
-lib/readline/readline.h
-       - extern declaration for rl_unix_filename_rubout
-
-lib/readline/funmap.c
-       - new bindable readline command `unix-filename-rubout'
-
-lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
-       - documented `unix-filename-rubout'
-
-                                  1/29
-                                  ----
-lib/readline/histexpand.c
-       - change history_tokenize_internal to handle non-whitespace delimiter
-         characters by creating separate fields (like the shell does when
-         splitting on $IFS)
-
-                                  1/30
-                                  ----
-lib/glob/xmbsrtowcs.c
-       - new function, xdupmbstowcs, for convenience:  calls xmbsrtowcs
-         while allocating memory for the new wide character string
-       - some small efficiency improvments to xmbsrtowcs
-
-include/shmbutil.h
-       - extern declaration for xdupmbstowcs
-
-lib/glob/strmatch.h
-       - include config.h for definition of HANDLE_MULTIBYTE
-       - remove the HAVE_LIBC_FNM_EXTMATCH tests
-       - new extern declaration for wcsmatch(whchar_t *, wchar_t *, int)
-
-configure.in
-       - remove call to BASH_FUNC_FNMATCH_EXTMATCH; it's no longer used
-
-lib/glob/smatch.c
-       - simplify xstrmatch() by using xdupmbstowcs() instead of inline code
-
-lib/glob/glob.c
-       - modify mbskipname() to avoid the use of alloca
-       - simplify mbskipname() by using xdupmbstowcs() instead of inline code
-       - simplify glob_pattern_p() by using xdupmbstowcs() instead of
-         inline code
-       - fix memory leak in wdequote_pathname
-       - simplify wdequote_pathname() by using xdupmbstowcs() instead of
-         inline code
-
-lib/glob/strmatch.c
-       - new function, wcsmatch(), `exported' wide-character equivalent of
-         strmatch()
-
-subst.c
-       - old match_pattern is now match_upattern
-       - match_pattern now either calls match_upattern or converts
-         mbstrings to wide chars and calls match_wpattern
-       - match_upattern reverted to old non-multibyte code
-       - new function: match_pattern_wchar, wide character version of
-         match_pattern_char
-
-                                   2/1
-                                   ---
-subst.c
-       - old remove_pattern is now remove_upattern
-       - remove_upattern reverted to old non-multibyte code (pre-Waugh patch)
-       - new multibyte version of remove_pattern: remove_wpattern
-       - remove_pattern now calls either remove_upattern or converts a
-         multibyte string to a wide character string and calls
-         remove_wpattern
-       - new function, wcsdup, wide-character version of strdup(3)
-
-                                   2/4
-                                   ---
-print_cmd.c
-       - temporarily translate a >&filename redirection from
-         r_duplicating_output_word to r_err_and_out (as the expansion code
-         in redir.c does) so it prints without a leading `1' (file
-         descriptor)
-
-                                   2/5
-                                   ---
-aclocal.m4
-       - add a check for wcsdup to BASH_CHECK_MULTIBYTE
-
-config.h.in
-       - add HAVE_WCSDUP define
-
-                                   2/9
-                                   ---
-builtins/shift.def
-       - fix a call to sh_erange that possibly dereferences a NULL pointer
-
-                                  2/12
-                                  ----
-general.c
-       - start at a general set of file property checking functions:
-         file_isdir(), file_iswdir() (is writable directory)
-
-general.h
-       - extern declarations for new functions
-
-lib/sh/tmpfile.c
-       - use file_iswdir() to make sure the temporary directory used for
-         here documents and other temp files is writable in get_sys_tmpdir()
-
-                                  2/17
-                                  ----
-bashline.c
-       - fix conditional binding of emacs-mode M-~ -- there is a default
-         binding for it (rl_tilde_expand), so a straight call to
-         rl_bind_key_if_unbound_in_map doesn't do the right thing
-
-                                  2/27
-                                  ----
-[bash-3.0-beta1 released]
-
-                                  2/29
-                                  ----
-subst.c
-       - fixed expansion so referencing $a, when a is an array variable
-         without an element assigned to index 0, exits the shell when
-         `-u' is enabled
-
-expr.c
-       - make the exponentiation operator (**) associative, so things like
-         2**3**4  work right (change `if' to `while')
-
-                                   3/3
-                                   ---
-lib/sh/strftime.c
-       - SCO Unix 3.2, like Solaris, requires that the system's `timezone'
-         variable be declared as long
-
-lib/readline/{bind,histfile,input,parens}.c
-       - changes for Tandem (including `floss.h' (?))
-
-                                   3/4
-                                   ---
-subst.c
-       - change param_expand to quote the entire expanded string instead
-         of just the escape characters if the expansion appears between
-         double quotes or in a here-document (for simple variable expansions
-         or expansions of positional parameters)
-
-                                   3/8
-                                   ---
-subst.c
-       - analogous changes to parameter_brace_expand_word to fix the same
-         quoting problem as on 3/4; fix callers to understand that  the
-         value returned might be quoted now and should be dequoted if
-         necessary
-       - add a `quoted' argument to get_var_and_type, change callers
-       - change today's fix and fix from 3/4 to not call quote_string if the
-         value is "" (because quote_string turns that into CTLNUL\0)
-
-                                   3/9
-                                   ---
-builtins/cd.def
-       - resetpwd() now takes a `caller' argument so it can be used by pwd
-         as well as cd
-       - change pwd_builtin to call resetpwd() if sh_physpath() fails to
-         return a valid pathname
-
-                                  3/14
-                                  ----
-expr.c
-       - reworked exp0 and readtok() to make post-increment and post-decrement
-         into real tokens, which may be separated from their accompanying
-         variables by whitesapce
-       - made analogous changes to readtok() to make pre-increment and
-         pre-decrement work when separated from their accompanying identifier
-         by whitespace
-
-                                  3/18
-                                  ----
-lib/readline/misc.c
-       - in rl_maybe_unsave_line, don't force rl_replace_line to clear
-         the undo_list, since it might point directly at an undo list
-         from a history entry (to which we have no handle)
-
-                                  3/19
-                                  ----
-lib/readline/display.c
-       - rl_save_prompt and rl_restore_prompt now save and restore the value
-         of prompt_physical_chars
-       - set prompt_physical_chars in rl_redisplay when expand_prompt has
-         not been called (e.g., when rl_display_prompt is set and is not
-         equal to rl_prompt, like when searching)
-
-lib/readline/histexpand.c
-       - don't call add_history in history_expand if the `:p' modifier is
-         supplied; leave that to the calling application.  This means that
-         `history -p', for example, will not add anything to the history
-         list (as documented), nor will history expansions invoked by
-         emacs-mode M-C-e line editing
-
-config-bot.h
-       - check whether HAVE_DECL_SYS_SIGLIST is defined to 1 rather than just
-         defined, to work around newer versions of autoconf defining it to 0
-
-config.h.in
-       - change default status of HAVE_MALLOC to #undef instead of #define
-
-bashhist.c
-       - extern declarations for rl_done and rl_dispatching
-       - don't call re_edit from pre_process_line unless rl_dispatcing is zero,
-         so we don't call it from something like shell-expand-line
-       - change pre_process_line to add an expanded history specification
-         that returned `print only' to the history list, since history_expand
-         no longer does it (and, when using readline, do it only when
-         rl_dispatching is zero)
-
-                                  3/22
-                                  ----
-config.h.in,aclocal.m4
-       - change bash-specific functions that look in struct dirent to define
-         HAVE_STRUCT_DIRENT_xxx, like AC_CHECK_MEMBERS does (though the
-         functions are otherwise the same)
-       - new function, BASH_STRUCT_DIRENT_D_NAMLEN, define
-         HAVE_STRUCT_DIRENT_D_NAMLEN if struct dirent has a `d_namlen' member
-
-configure.in
-       - call BASH_STRUCT_DIRENT_D_NAMLEN
-
-include/posixdir.h
-       - use new and renamed HAVE_STRUCT_DIRENT_D_xxx defines
-
-                                   4/7
-                                   ---
-builtins/cd.def
-       - ensure that we print out a non-null pathname after getting a
-         directory from CDPATH and canonicalizing it (e.g., if the result
-         exceeds PATH_MAX in length and the_current_working_directory is
-         set to NULL)
-
-                                  4/12
-                                  ----
-print_cmd.c
-       - new function to print out assignment statements when `set -x' has
-         been enabled: xtrace_print_assignment
-
-externs.h
-       - extern declaration for xtrace_print_assignment
-
-                                  4/13
-                                  ----
-{subst,variables}.c
-       - call xtrace_print_assignment instead of using inline code
-
-jobs.c
-       - if turning on job control when it was previously off, set
-         pipeline_pgrp to 0 in set_job_control so make_child puts
-         subsequent children in their own process group
-
-                                  4/14
-                                  ----
-general.c
-       - new function, legal_alias_name, called to decide whether an
-         argument to add_alias is a valid alias name -- essentially any
-         character except one which must be quoted to the shell parser
-         and `/'
-
-general.h
-       - new extern declaration for legal_alias_name
-
-builtins/alias.def
-       - `unalias' now returns failure status if no NAME arguments are
-         supplied and -a is not given
-       - call legal_alias_name to make sure alias name is valid before
-         calling add_alias from alias_builtin
-
-                                  4/19
-                                  ----
-include/shmbutil.h
-       - include <config.h> for definition of HANDLE_MULTIBYTE rather than
-         duplicating logic
-
-                                  4/20
-                                  ----
-
-doc/{bash.1,bashref.texi}
-       - make sure $0 is consistently referred to as a `special parameter'
-       - document which characters are now not allowed in alias names
-
-                                  4/23
-                                  ----
-
-builtins/{jobs,kill,wait}.def
-       - removed requirement that job control be enabled to use job control
-         notation, as SUSv3 implies
-
-subst.c
-       - based on a message from David Korn, change param_expand to not call
-         string_list_dollar_star if the only quoting is Q_HERE_DOCUMENT --
-         quoted here documents are like double quoting, but not exactly
-       - analogous changes to list_remove_pattern and pos_params
-
-                                  4/24
-                                  ----
-lib/readline/doc/rluser.texi
-       - fix error in description of emacs-mode C-xC-e command (uses $VISUAL
-         instead of $FCEDIT)
-
-                                  4/28
-                                  ----
-support/bashbug.sh
-       - integrate a patch from Stefan Nordhausen
-         <nordhaus@informatik.hu-berlin.de> that reduces race conditions
-         by using a temporary directory inside $TMPDIR and creating the
-         temp files in that
-
-                                  4/30
-                                  ----
-builtins/common.c
-       - use pathconf(".", _PC_PATH_MAX) where available to size the argument
-         to getcwd() rather than using a straight PATH_MAX
-
-builtins/cd.def
-       - if get_working_directory fails and returns null (causing resetpwd
-         to return NULL), use set_working_directory to set $PWD to the
-         absolute pathname for which chdir just succeeded
-
-                                   5/1
-                                   ---
-lib/readline/vi_mode.c
-       - in rl_vi_change_to, call _rl_vi_set_last with rl_numeric_arg instead
-         of `last', since they're equal at call time and rl_vi_domove can
-         change rl_numeric_arg (which vi apparently updates).  Fixes redo bug
-         of `c2....' reported by Marion Berryman <mwberryman@copper.net>
-
-                                   5/4
-                                   ---
-parse.y
-       - fix decode_prompt_string to properly deal with strftime() returning 0
-
-                                   5/6
-                                   ---
-variables.c
-       - in make_local_array_variable, return an already-existing local array
-         variable immediately rather than creating a new array (causing a
-         memory leak)
-
-                                   5/8
-                                   ---
-lib/readline/vi_mode.c
-       - change rl_vi_domove to set rl_explicit_arg before calling
-         rl_digit_loop1 so that multi-digit numeric arguments work right
-       - _rl_vi_last_command is no longer static
-
-lib/readline/rlprivate.h
-       - new extern declaration for _rl_vi_last_command
-
-lib/readline/text.c
-       - change rl_newline to only call _rl_vi_reset_last if the last command
-         (_rl_vi_last_command) is not a text modification command.  This lets
-         the last-command and last-argument work across command lines
-
-                                  5/13
-                                  ----
-builtins/common.c
-       - use getcwd(0,0) rather than providing a fixed pathname with a fixed
-         length (PATH_MAX) so getcwd() will allocate sufficient memory
-
-aclocal.m4
-       - change BASH_FUNC_GETCWD to check whether or not getcwd(0,0) will
-         allocate memory for the returned value -- nobody implements that
-         and getcwd-via-popen, so it should capture the old test as well
-
-                                  5/27
-                                  ----
-
-builtins/trap.def
-       - the historical behavior of assuming that a signal's handling should
-         be set to its original disposition is only in effect if a single
-         argument is given, otherwise the first argument is assumed to be a
-         command to execute
-       - when in posix mode, if trap gets a single argument, display an
-         error message and return EX_USAGE
-       - change the help message and usage string to better explain trap's
-         behavior
-
-doc/{bash.1,bashref.texi}
-       - describe the new default behavior when the first argument is a
-         signal spec
-       - note that signal names are case insensitive and the SIG prefix is
-         optional in arguments to `trap'
-       - note that signal name arguments to `kill' are case-insensitive
-
-lib/readline/display.c
-       - make sure rl_on_new_line_with_prompt sets rl_display_prompt to
-         rl_prompt (just to make sure it's set)
-       - have rl_on_new_line_with_prompt use local_prompt if it's set
-
-                                   6/2
-                                   ---
-subst.c
-       - in string_extract_double_quoted, cope with extract_delimited_string
-         returning NULL, as it can when attempting completion on an unclosed
-         command substitution
-
-                                  6/24
-                                  ----
-lib/readline/complete.c
-       - change print_filename to add a `/' to listed directory names if
-         `mark-directories' has been enabled
-
-builtins/umask.def
-       - make sure that the mask passed to parse_symbolic_mode has all but
-         the operative low eight bits masked off, to avoid complementing
-         all 0s to -1, which is the error return code.  This makes things
-         like `a=rwx' and `ugo=rwx' work and turn off the umask
-
-                                  6/26
-                                  ----
-builtins/getopts.def
-       - when `getopts' reaches the end of options, unset OPTARG before
-         returning EOF.  In response to a bug report from Apple
-
-configure.in
-       - when cross-compiling, don't set CPPFLAGS_FOR_BUILD and
-         LDFLAGS_FOR_BUILD from CPPFLAGS and LDFLAGS, respectively, since
-         those are for the target instead of the build platform (report
-         from robert@schwebel.de)
-
-shell.c
-       - a shell whose standard error (but not standard output) is directed
-         to a terminal should be interactive, according to POSIX/SUS.  This
-         means that sh > sh.out will start an interactive shell.  Bug report
-         from llattanzi@apple.com
-
-doc/{bash.1,bashref.texi}
-       - change mention of standard output to standard error in definition
-         of interactive shell
-
-lib/readline/vi_mode.c
-       - new convenience function, rl_vi_start_inserting, calls
-         _rl_vi_set_last to save the last textmod command state and then calls
-         rl_vi_insertion_mode to enter insert mode
-       - change functions to use rl_vi_start_inserting
-
-lib/readline/readline.h
-       - extern declaration for rl_vi_start_inserting
-
-bashline.c
-       - new function for vi-mode completion, bash_vi_complete.  Does
-         filename expansion as POSIX specifies, unlike the default readline
-         bindings (which don't know about globbing).  Bound to `\', `*',
-         and `=' in vi command keymap.  Internals very similar to
-         rl_vi_complete; just calls bash glob expansion functions
-
-lib/readline/vi_mode.c
-       - change rl_vi_change_char so that an entire change is a single
-         undoable event, rather than each individual change in a [count]r
-         command
-       - fix rl_vi_change_char so that replacing characters up to EOL works
-         rather than generating rl_ding
-       - fix rl_vi_change_case so that replacing characters up to EOL works
-         rather than generating rl_ding
-
-                                  6/28
-                                  ----
-builtins/echo.def
-       - call clearerr(stdout) before writing anything and testing its
-         failure or success
-
-                                  6/29
-                                  ----
-bashline.c
-       - only set rl_explicit_arg in bash_glob_complete_word if readline is
-         in emacs mode; let bash_vi_complete take care of setting it in vi
-         mode
-       - fix bash_vi_complete to only set rl_explicit_arg unless the posix
-         conditions are met: no globbing characters in the vi `bigword'
-         being completed
-
-                                  6/30
-                                  ----
-[bash-3.0-rc1 released]
-
-                                   7/1
-                                   ---
-lib/readline/complete.c
-       - make sure `extension_char' is initialized before deciding whether
-         or not the append a `/' to a possible completion when visible-stats
-         is not enabled
-
-                                   7/2
-                                   ---
-subst.c
-       - fix a boundary overrun in string_extract_double_quoted that could
-         occur when the word completion code attempts to expand an incomplete
-         construct (like a quoted unclosed command substitution)
-
-                                   7/4
-                                   ---
-subst.c
-       - set tempenv_assign_error to non-zero if an assignment to the
-         temporary environment fails for some reason (e.g., attempted
-         assignment to a readonly variable)
-
-execute_cmd.c
-       - fix execute_simple_command to force a non-interactive shell in
-         POSIX mode to exit if an assignment to the temporary environment
-         preceding a special builtin fails (bug report from
-         llattanzi@apple.com)
-
-                                   7/5
-                                   ---
-bashline.c
-       - in bash_directory_completion_hook, don't perform word expansions
-         if the filename appears to have been completed from the file
-         system rather than typed in by the user.  Bug reported by Tim
-         Waugh <twaugh@redhat.com>
-
-                                   7/7
-                                   ---
-lib/readline/misc.c
-       - if _rl_maybe_save_line is being asked to save a line other than
-         what's already saved, free up the current saved line and save the
-         current contents of rl_line_buffer.  Bug reported by
-         llattanzi@apple.com
-
-                                  7/12
-                                  ----
-lib/readline/input.c
-       - do better EOF detection in rl_gather_tyi -- if a read returns 0 when
-         the fd is in non-blocking mode, stuff an EOF into the input stream
-         (reported by mattias@virtutech.se)
-
-                                  7/13
-                                  ----
-lib/readline/vi_mode.c
-       - make sure rl_vi_put honors `count' arguments and yanks things
-         multiple times if requested
-
-                                  7/16
-                                  ----
-builtins/umask.def
-       - make sure that the `who' part of the umask symbolic mode argument
-         defaults to `a' if it's missing
-
-flags.c
-       - make sure that maybe_make_restricted only gets called after the
-         shell is initialized, so `bash -r' doesn't result in inappropriate
-         error messages
-
-[bash-3.0 frozen]
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..d2d81b30264de22e87ad5e1fd72c45243b6b109a
--- /dev/null
@@ -0,0 +1 @@
+CWRU.chlog
\ No newline at end of file
diff --git a/CWRU/old/set.def.save b/CWRU/old/set.def.save
new file mode 100644 (file)
index 0000000..87b78d7
--- /dev/null
@@ -0,0 +1,544 @@
+This file is set.def, from which is created set.c.
+It implements the "set" and "unset" builtins in Bash.
+
+Copyright (C) 1987, 1989, 1991 Free Software Foundation, Inc.
+
+This file is part of GNU Bash, the Bourne Again SHell.
+
+Bash is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 1, or (at your option) any later
+version.
+
+Bash is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License along
+with Bash; see the file COPYING.  If not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+$PRODUCES set.c
+
+#include <stdio.h>
+#include "../shell.h"
+#include "../flags.h"
+
+#include "bashgetopt.h"
+
+extern int interactive;
+extern int noclobber, posixly_correct;
+#if defined (READLINE)
+extern int rl_editing_mode, no_line_editing;
+#endif /* READLINE */
+
+$BUILTIN set
+$FUNCTION set_builtin
+$SHORT_DOC set [--abefhkmnptuvxldBCHP] [-o option] [arg ...]
+    -a  Mark variables which are modified or created for export.
+    -b  Notify of job termination immediately.
+    -e  Exit immediately if a command exits with a non-zero status.
+    -f  Disable file name generation (globbing).
+    -h  Locate and remember function commands as functions are
+        defined.  Function commands are normally looked up when
+        the function is executed.
+    -i  Force the shell to be an "interactive" one.  Interactive shells
+        always read `~/.bashrc' on startup.
+    -k  All keyword arguments are placed in the environment for a
+        command, not just those that precede the command name.
+    -m  Job control is enabled.
+    -n  Read commands but do not execute them.
+    -o option-name
+        Set the variable corresponding to option-name:
+            allexport    same as -a
+            braceexpand  same as -B
+#if defined (READLINE)
+            emacs        use an emacs-style line editing interface
+#endif /* READLINE */
+            errexit      same as -e
+            histexpand   same as -H
+            ignoreeof    the shell will not exit upon reading EOF
+            interactive-comments
+                         allow comments to appear in interactive commands
+            monitor      same as -m
+            noclobber    disallow redirection to existing files
+            noexec       same as -n
+            noglob       same as -f
+            nohash       same as -d
+            notify       save as -b
+            nounset      same as -u
+           physical     same as -P
+           posix        change the behavior of bash where the default
+                        operation differs from the 1003.2 standard to
+                        match the standard
+           privileged   same as -p
+            verbose      same as -v
+#if defined (READLINE)
+            vi           use a vi-style line editing interface
+#endif /* READLINE */
+            xtrace       same as -x
+    -p  Turned on whenever the real and effective user ids do not match.
+        Disables processing of the $ENV file and importing of shell
+        functions.  Turning this option off causes the effective uid and
+       gid to be set to the real uid and gid.
+    -t  Exit after reading and executing one command.
+    -u  Treat unset variables as an error when substituting.
+    -v  Print shell input lines as they are read.
+    -x  Print commands and their arguments as they are executed.
+    -l  Save and restore the binding of the NAME in a FOR command.
+    -d  Disable the hashing of commands that are looked up for execution.
+        Normally, commands are remembered in a hash table, and once
+        found, do not have to be looked up again.
+#if defined (BRACE_EXPANSION)
+    -B  the shell will perform brace expansion
+#endif /* BRACE_EXPANSION */
+#if defined (BANG_HISTORY)
+    -H  Enable ! style history substitution.  This flag is on
+        by default.
+#endif /* BANG_HISTORY */
+    -C  If set, disallow existing regular files to be overwritten
+        by redirection of output.
+    -P  If set, do not follow symbolic links when executing commands
+        such as cd which change the current directory.
+
+Using + rather than - causes these flags to be turned off.  The
+flags can also be used upon invocation of the shell.  The current
+set of flags may be found in $-.  The remaining n ARGs are positional
+parameters and are assigned, in order, to $1, $2, .. $n.  If no
+ARGs are given, all shell variables are printed.
+$END
+
+/* An a-list used to match long options for set -o to the corresponding
+   option letter. */
+struct {
+  char *name;
+  int letter;
+} o_options[] = {
+  { "allexport",  'a' },
+#if defined (BRACE_EXPANSION)
+  { "braceexpand",'B' },
+#endif
+  { "errexit",   'e' },
+  { "histexpand", 'H' },
+  { "monitor",   'm' },
+  { "noexec",    'n' },
+  { "noglob",    'f' },
+  { "nohash",    'd' },
+#if defined (JOB_CONTROL)
+  { "notify",    'b' },
+#endif /* JOB_CONTROL */
+  {"nounset",    'u' },
+  {"physical",    'P' },
+  {"privileged",  'p' },
+  {"verbose",    'v' },
+  {"xtrace",     'x' },
+  {(char *)NULL, 0},
+};
+
+#define MINUS_O_FORMAT "%-15s\t%s\n"
+
+void
+list_minus_o_opts ()
+{
+  register int i;
+  char *on = "on", *off = "off";
+
+  printf (MINUS_O_FORMAT, "noclobber", (noclobber == 1) ? on : off);
+
+  if (find_variable ("ignoreeof") || find_variable ("IGNOREEOF"))
+    printf (MINUS_O_FORMAT, "ignoreeof", on);
+  else
+    printf (MINUS_O_FORMAT, "ignoreeof", off);
+
+  printf (MINUS_O_FORMAT, "interactive-comments",
+         interactive_comments ? on : off);
+
+  printf (MINUS_O_FORMAT, "posix", posixly_correct ? on : off);
+
+#if defined (READLINE)
+  if (no_line_editing)
+    {
+      printf (MINUS_O_FORMAT, "emacs", off);
+      printf (MINUS_O_FORMAT, "vi", off);
+    }
+  else
+    {
+      /* Magic.  This code `knows' how readline handles rl_editing_mode. */
+      printf (MINUS_O_FORMAT, "emacs", (rl_editing_mode == 1) ? on : off);
+      printf (MINUS_O_FORMAT, "vi", (rl_editing_mode == 0) ? on : off);
+    }
+#endif /* READLINE */
+
+  for (i = 0; o_options[i].name; i++)
+    {
+      int *on_or_off, zero = 0;
+
+      on_or_off = find_flag (o_options[i].letter);
+      if (on_or_off == FLAG_UNKNOWN)
+       on_or_off = &zero;
+      printf (MINUS_O_FORMAT, o_options[i].name, (*on_or_off == 1) ? on : off);
+    }
+}
+
+set_minus_o_option (on_or_off, option_name)
+     int on_or_off;
+     char *option_name;
+{
+  int option_char = -1;
+
+  if (STREQ (option_name, "noclobber"))
+    {
+      if (on_or_off == FLAG_ON)
+       bind_variable ("noclobber", "");
+      else
+       unbind_variable ("noclobber");
+      stupidly_hack_special_variables ("noclobber");
+    }
+  else if (STREQ (option_name, "ignoreeof"))
+    {
+      unbind_variable ("ignoreeof");
+      unbind_variable ("IGNOREEOF");
+      if (on_or_off == FLAG_ON)
+       bind_variable ("IGNOREEOF", "10");
+      stupidly_hack_special_variables ("IGNOREEOF");
+    }
+  
+#if defined (READLINE)
+  else if ((STREQ (option_name, "emacs")) || (STREQ (option_name, "vi")))
+    {
+      if (on_or_off == FLAG_ON)
+       {
+         rl_variable_bind ("editing-mode", option_name);
+
+         if (interactive)
+           with_input_from_stdin ();
+         no_line_editing = 0;
+       }
+      else
+       {
+         int isemacs = (rl_editing_mode == 1);
+         if ((isemacs && STREQ (option_name, "emacs")) ||
+             (!isemacs && STREQ (option_name, "vi")))
+           {
+             if (interactive)
+               with_input_from_stream (stdin, "stdin");
+             no_line_editing = 1;
+           }
+         else
+           builtin_error ("not in %s editing mode", option_name);
+       }
+    }
+#endif /* READLINE */
+  else if (STREQ (option_name, "interactive-comments"))
+    interactive_comments = (on_or_off == FLAG_ON);
+  else if (STREQ (option_name, "posix"))
+    {
+      posixly_correct = (on_or_off == FLAG_ON);
+      unbind_variable ("POSIXLY_CORRECT");
+      unbind_variable ("POSIX_PEDANTIC");
+      if (on_or_off == FLAG_ON)
+       {
+         bind_variable ("POSIXLY_CORRECT", "");
+         stupidly_hack_special_variables ("POSIXLY_CORRECT");
+       }
+    }
+  else
+    {
+      register int i;
+      for (i = 0; o_options[i].name; i++)
+       {
+         if (STREQ (option_name, o_options[i].name))
+           {
+             option_char = o_options[i].letter;
+             break;
+           }
+       }
+      if (option_char == -1)
+       {
+         builtin_error ("%s: unknown option name", option_name);
+         return (EXECUTION_FAILURE);
+       }
+      if (change_flag (option_char, on_or_off) == FLAG_ERROR)
+       {
+         bad_option (option_name);
+         return (EXECUTION_FAILURE);
+       }
+    }
+  return (EXECUTION_SUCCESS);
+}
+
+/* Set some flags from the word values in the input list.  If LIST is empty,
+   then print out the values of the variables instead.  If LIST contains
+   non-flags, then set $1 - $9 to the successive words of LIST. */
+set_builtin (list)
+     WORD_LIST *list;
+{
+  int on_or_off, flag_name, force_assignment = 0;
+
+  if (!list)
+    {
+      SHELL_VAR **vars;
+
+      vars = all_shell_variables ();
+      if (vars)
+       {
+         print_var_list (vars);
+         free (vars);
+       }
+
+      vars = all_shell_functions ();
+      if (vars)
+       {
+         print_var_list (vars);
+         free (vars);
+       }
+
+      return (EXECUTION_SUCCESS);
+    }
+
+  /* Check validity of flag arguments. */
+  if (*list->word->word == '-' || *list->word->word == '+')
+    {
+      register char *arg;
+      WORD_LIST *save_list = list;
+
+      while (list && (arg = list->word->word))
+       {
+         char c;
+
+         if (arg[0] != '-' && arg[0] != '+')
+           break;
+
+         /* `-' or `--' signifies end of flag arguments. */
+         if (arg[0] == '-' &&
+             (!arg[1] || (arg[1] == '-' && !arg[2])))
+           break;
+
+         while (c = *++arg)
+           {
+             if (find_flag (c) == FLAG_UNKNOWN && c != 'o')
+               {
+                 char s[2];
+                 s[0] = c; s[1] = '\0';
+                 bad_option (s);
+                 if (c == '?')
+                   builtin_usage ();
+                 return (c == '?' ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
+               }
+           }
+         list = list->next;
+       }
+      list = save_list;
+    }
+
+  /* Do the set command.  While the list consists of words starting with
+     '-' or '+' treat them as flags, otherwise, start assigning them to
+     $1 ... $n. */
+  while (list)
+    {
+      char *string = list->word->word;
+
+      /* If the argument is `--' or `-' then signal the end of the list
+        and remember the remaining arguments. */
+      if (string[0] == '-' && (!string[1] || (string[1] == '-' && !string[2])))
+       {
+         list = list->next;
+
+         /* `set --' unsets the positional parameters. */
+         if (string[1] == '-')
+           force_assignment = 1;
+
+         /* Until told differently, the old shell behaviour of
+            `set - [arg ...]' being equivalent to `set +xv [arg ...]'
+            stands.  Posix.2 says the behaviour is marked as obsolescent. */
+         else
+           {
+             change_flag ('x', '+');
+             change_flag ('v', '+');
+           }
+
+         break;
+       }
+
+      if ((on_or_off = *string) &&
+         (on_or_off == '-' || on_or_off == '+'))
+       {
+         int i = 1;
+         while (flag_name = string[i++])
+           {
+             if (flag_name == '?')
+               {
+                 builtin_usage ();
+                 return (EXECUTION_SUCCESS);
+               }
+             else if (flag_name == 'o') /* -+o option-name */
+               {
+                 char *option_name;
+                 WORD_LIST *opt;
+
+                 opt = list->next;
+
+                 if (!opt)
+                   {
+                     list_minus_o_opts ();
+                     continue;
+                   }
+
+                 option_name = opt->word->word;
+
+                 if (!option_name || !*option_name || (*option_name == '-'))
+                   {
+                     list_minus_o_opts ();
+                     continue;
+                   }
+                 list = list->next; /* Skip over option name. */
+
+                 if (set_minus_o_option (on_or_off, option_name) != EXECUTION_SUCCESS)
+                   return (EXECUTION_FAILURE);
+               }
+             else
+               {
+                 if (change_flag (flag_name, on_or_off) == FLAG_ERROR)
+                   {
+                     char opt[3];
+                     opt[0] = on_or_off;
+                     opt[1] = flag_name;
+                     opt[2] = '\0';
+                     bad_option (opt);
+                     builtin_usage ();
+                     return (EXECUTION_FAILURE);
+                   }
+               }
+           }
+       }
+      else
+       {
+         break;
+       }
+      list = list->next;
+    }
+
+  /* Assigning $1 ... $n */
+  if (list || force_assignment)
+    remember_args (list, 1);
+  return (EXECUTION_SUCCESS);
+}
+
+$BUILTIN unset
+$FUNCTION unset_builtin
+$SHORT_DOC unset [-f] [-v] [name ...]
+For each NAME, remove the corresponding variable or function.  Given
+the `-v', unset will only act on variables.  Given the `-f' flag,
+unset will only act on functions.  With neither flag, unset first
+tries to unset a variable, and if that fails, then tries to unset a
+function.  Some variables (such as PATH and IFS) cannot be unset; also
+see readonly.
+$END
+
+#define NEXT_VARIABLE()        any_failed++; list = list->next; continue;
+
+unset_builtin (list)
+  WORD_LIST *list;
+{
+  int unset_function, unset_variable, unset_array, opt, any_failed;
+  char *name;
+
+  unset_function = unset_variable = unset_array = any_failed = 0;
+
+  reset_internal_getopt ();
+  while ((opt = internal_getopt (list, "fv")) != -1)
+    {
+      switch (opt)
+       {
+       case 'f':
+         unset_function = 1;
+         break;
+       case 'v':
+         unset_variable = 1;
+         break;
+       default:
+         builtin_usage ();
+         return (EXECUTION_FAILURE);
+       }
+    }
+
+  list = loptend;
+
+  if (unset_function && unset_variable)
+    {
+      builtin_error ("cannot simultaneously unset a function and a variable");
+      return (EXECUTION_FAILURE);
+    }
+
+  while (list)
+    {
+      SHELL_VAR *var;
+      int tem;
+#if defined (ARRAY_VARS)
+      char *t;
+#endif
+
+      name = list->word->word;
+
+#if defined (ARRAY_VARS)
+      if (!unset_function && valid_array_reference (name))
+       {
+         t = strchr (name, '[');
+         *t++ = '\0';
+         unset_array++;
+       }
+#endif
+
+      var = unset_function ? find_function (name) : find_variable (name);
+
+      if (var && !unset_function && non_unsettable_p (var))
+       {
+         builtin_error ("%s: cannot unset", name);
+         NEXT_VARIABLE ();
+       }
+
+      /* Posix.2 says that unsetting readonly variables is an error. */
+      if (var && readonly_p (var))
+       {
+         builtin_error ("%s: cannot unset: readonly %s",
+                        name, unset_function ? "function" : "variable");
+         NEXT_VARIABLE ();
+       }
+
+      /* Unless the -f option is supplied, the name refers to a variable. */
+#if defined (ARRAY_VARS)
+      if (var && unset_array)
+       {
+         if (array_p (var) == 0)
+           {
+             builtin_error ("%s: not an array variable", name);
+             NEXT_VARIABLE ();
+           }
+         else
+           tem = unbind_array_element (var, t);
+       }
+      else
+#endif /* ARRAY_VARS */
+      tem = makunbound (name, unset_function ? shell_functions : shell_variables);
+
+      /* This is what Posix.2 draft 11+ says.  ``If neither -f nor -v
+        is specified, the name refers to a variable; if a variable by
+        that name does not exist, a function by that name, if any,
+        shall be unset.'' */
+      if ((tem == -1) && !unset_function && !unset_variable)
+       tem = makunbound (name, shell_functions);
+
+      if (tem == -1)
+       any_failed++;
+      else if (!unset_function)
+       stupidly_hack_special_variables (name);
+
+      list = list->next;
+    }
+
+  if (any_failed)
+    return (EXECUTION_FAILURE);
+  else
+    return (EXECUTION_SUCCESS);
+}
diff --git a/CWRU/save/unwind_prot.h.save b/CWRU/save/unwind_prot.h.save
new file mode 100644 (file)
index 0000000..998fd72
--- /dev/null
@@ -0,0 +1,50 @@
+/* unwind_prot.h - Macros and functions for hacking unwind protection. */
+
+/* Copyright (C) 1993 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash, the Bourne Again SHell.
+
+   Bash is free software; you can redistribute it and/or modify it under
+   the terms of the GNU General Public License as published by the Free
+   Software Foundation; either version 2, or (at your option) any later
+   version.
+
+   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+   for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with Bash; see the file COPYING.  If not, write to the Free Software
+   Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#if !defined (_UNWIND_PROT_H)
+#define _UNWIND_PROT_H
+
+/* Run a function without interrupts. */
+extern void begin_unwind_frame ();
+extern void discard_unwind_frame ();
+extern void run_unwind_frame ();
+extern void add_unwind_protect ();
+extern void remove_unwind_protect ();
+extern void run_unwind_protects ();
+extern void unwind_protect_var ();
+
+/* Define for people who like their code to look a certain way. */
+#define end_unwind_frame()
+
+/* How to protect an integer. */
+#define unwind_protect_int(X) unwind_protect_var (&(X), (char *)(X), sizeof (int))
+
+/* How to protect a pointer to a string. */
+#define unwind_protect_string(X) \
+  unwind_protect_var ((int *)&(X), (X), sizeof (char *))
+
+/* How to protect any old pointer. */
+#define unwind_protect_pointer(X) unwind_protect_string (X)
+
+/* How to protect the contents of a jmp_buf. */
+#define unwind_protect_jmp_buf(X) \
+  unwind_protect_var ((int *)(X), (char *)(X), sizeof (procenv_t))
+
+#endif /* _UNWIND_PROT_H */
index 121135f..b5b377d 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -463,7 +463,6 @@ po/Rules-builtins   f
 po/Rules-quot          f
 po/bash.pot            f
 po/boldquot.sed                f
-po/builtins.pot                f
 po/en@quot.header      f
 po/en@boldquot.header  f
 po/en@quot.po          f
diff --git a/array.c b/array.c
index 7b0a5d7..bfc83c3 100644 (file)
--- a/array.c
+++ b/array.c
@@ -451,7 +451,7 @@ char        *v;
                         */
                        array_dispose_element(new);
                        free(element_value(ae));
-                       ae->value = savestring(v);
+                       ae->value = v ? savestring(v) : (char *)NULL;
                        return(0);
                } else if (element_index(ae) > i) {
                        ADD_BEFORE(ae, new);
index 141a689..703bc0b 100644 (file)
@@ -1,5 +1,5 @@
 @%:@! /bin/sh
-@%:@ From configure.in for Bash 3.0, version 3.165, from autoconf version AC_ACVERSION.
+@%:@ From configure.in for Bash 3.0, version 3.166, from autoconf version AC_ACVERSION.
 @%:@ Guess values for system-dependent variables and create Makefiles.
 @%:@ Generated by GNU Autoconf 2.57 for bash 3.0-release.
 @%:@
@@ -13074,223 +13074,6 @@ done
 
 
 
-for ac_header in stdlib.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-@%:@include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-         { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-@%:@include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc in
-  yes:no )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-@%:@@%:@ ------------------------------------ @%:@@%:@
-@%:@@%:@ Report this to bug-autoconf@gnu.org. @%:@@%:@
-@%:@@%:@ ------------------------------------ @%:@@%:@
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-  no:yes )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    (
-      cat <<\_ASBOX
-@%:@@%:@ ------------------------------------ @%:@@%:@
-@%:@@%:@ Report this to bug-autoconf@gnu.org. @%:@@%:@
-@%:@@%:@ ------------------------------------ @%:@@%:@
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-fi
-
-done
-
-echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
-echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6
-if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_malloc_0_nonnull=no
-else
-  cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#if STDC_HEADERS || HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-char *malloc ();
-#endif
-
-int
-main ()
-{
-exit (malloc (0) ? 0 : 1);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_malloc_0_nonnull=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_malloc_0_nonnull=no
-fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5
-echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6
-if test $ac_cv_func_malloc_0_nonnull = yes; then
-  
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_MALLOC 1
-_ACEOF
-
-else
-  cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_MALLOC 0
-_ACEOF
-
-   LIB@&t@OBJS="$LIB@&t@OBJS malloc.$ac_objext"
-   
-cat >>confdefs.h <<\_ACEOF
-@%:@define malloc rpl_malloc
-_ACEOF
-
-fi
-
-
-
-
 
 for ac_header in stdlib.h unistd.h
 do
index f2d7826..9f0cac6 100644 (file)
                         'configure.in'
                       ],
                       {
-                        'AC_HEADER_DIRENT' => 1,
-                        'AC_PROG_CC' => 1,
+                        'AC_STRUCT_TM' => 1,
                         'AC_TYPE_PID_T' => 1,
-                        'AC_FUNC_MALLOC' => 1,
-                        'AC_FUNC_MBRTOWC' => 1,
-                        'AC_FUNC_LSTAT' => 1,
-                        'AC_HEADER_TIME' => 1,
-                        'AH_OUTPUT' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'AC_FUNC_OBSTACK' => 1,
+                        'AC_PROG_LEX' => 1,
                         'AC_FUNC_GETMNTENT' => 1,
-                        'AC_PROG_CPP' => 1,
+                        'AC_FUNC_REALLOC' => 1,
+                        'AC_FUNC_MEMCMP' => 1,
+                        'AC_FUNC_GETPGRP' => 1,
+                        'AC_CANONICAL_HOST' => 1,
+                        'AC_HEADER_DIRENT' => 1,
+                        'AC_PROG_AWK' => 1,
+                        'AC_HEADER_SYS_WAIT' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AC_FUNC_ALLOCA' => 1,
+                        'AC_FUNC_MMAP' => 1,
                         'AC_TYPE_MODE_T' => 1,
-                        'm4_pattern_allow' => 1,
-                        'AC_PROG_YACC' => 1,
+                        'AC_TYPE_SIZE_T' => 1,
+                        'AC_C_INLINE' => 1,
+                        'AC_FUNC_GETGROUPS' => 1,
+                        'AC_FUNC_FSEEKO' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'AC_FUNC_STRCOLL' => 1,
+                        'AC_INIT' => 1,
+                        'AC_CONFIG_SUBDIRS' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'AC_FUNC_STRFTIME' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'AC_TYPE_OFF_T' => 1,
+                        'AC_PROG_LN_S' => 1,
                         'AC_FUNC_MKTIME' => 1,
-                        'AC_CHECK_TYPES' => 1,
-                        'AC_PROG_CXX' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_TYPE_UID_T' => 1,
+                        'AC_FUNC_MALLOC' => 1,
                         'AC_HEADER_MAJOR' => 1,
-                        'AC_CHECK_FUNCS' => 1,
+                        'AC_FUNC_MBRTOWC' => 1,
+                        'AC_PROG_CPP' => 1,
+                        'AC_FUNC_UTIME_NULL' => 1,
+                        'AC_DECL_SYS_SIGLIST' => 1,
                         'AC_CHECK_HEADERS' => 1,
-                        'AC_INIT' => 1,
-                        'AC_STRUCT_TIMEZONE' => 1,
-                        'AM_MAINTAINER_MODE' => 1,
-                        'AC_PROG_MAKE_SET' => 1,
-                        'AC_FUNC_CHOWN' => 1,
-                        'AC_FUNC_ERROR_AT_LINE' => 1,
-                        'AC_CONFIG_FILES' => 1,
-                        'AC_CANONICAL_HOST' => 1,
-                        'AC_LIBSOURCE' => 1,
+                        'm4_include' => 1,
+                        'AC_HEADER_STAT' => 1,
+                        'AC_FUNC_GETLOADAVG' => 1,
+                        'AC_PROG_GCC_TRADITIONAL' => 1,
+                        'AC_TYPE_SIGNAL' => 1,
                         'AC_PROG_RANLIB' => 1,
-                        'AC_FUNC_MMAP' => 1,
-                        'AC_CHECK_MEMBERS' => 1,
-                        'AC_FUNC_STRTOD' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'AC_FUNC_CLOSEDIR_VOID' => 1,
                         'AC_FUNC_VPRINTF' => 1,
-                        'AC_PROG_LEX' => 1,
-                        'AC_FUNC_STAT' => 1,
-                        'AC_REPLACE_FNMATCH' => 1,
-                        'AC_STRUCT_TM' => 1,
-                        'AC_FUNC_STRCOLL' => 1,
+                        'AC_PROG_YACC' => 1,
                         'AC_FUNC_STRNLEN' => 1,
-                        'm4_include' => 1,
-                        'AC_CONFIG_AUX_DIR' => 1,
-                        'AC_FUNC_STRERROR_R' => 1,
-                        'AC_CANONICAL_SYSTEM' => 1,
-                        'AC_CHECK_LIB' => 1,
-                        'AC_STRUCT_ST_BLOCKS' => 1,
-                        'AC_PATH_X' => 1,
+                        'AC_FUNC_FORK' => 1,
+                        'AH_OUTPUT' => 1,
+                        'AC_STRUCT_TIMEZONE' => 1,
+                        'AC_HEADER_TIME' => 1,
+                        'AC_FUNC_STAT' => 1,
                         'AC_FUNC_SELECT_ARGTYPES' => 1,
-                        'AC_FUNC_MEMCMP' => 1,
+                        'AC_PROG_CC' => 1,
                         'include' => 1,
-                        'AC_C_VOLATILE' => 1,
+                        'AC_CHECK_MEMBERS' => 1,
+                        'AC_PROG_INSTALL' => 1,
+                        'AC_FUNC_ERROR_AT_LINE' => 1,
                         'AM_GNU_GETTEXT' => 1,
-                        'AC_DECL_SYS_SIGLIST' => 1,
+                        'AC_FUNC_STRTOD' => 1,
+                        'AC_HEADER_STDC' => 1,
+                        'AC_CHECK_FUNCS' => 1,
+                        'AC_LIBSOURCE' => 1,
+                        'AC_REPLACE_FNMATCH' => 1,
+                        'AC_CONFIG_FILES' => 1,
+                        'AC_CHECK_TYPES' => 1,
+                        'AC_CONFIG_HEADERS' => 1,
+                        'AC_FUNC_CLOSEDIR_VOID' => 1,
+                        'AC_C_CONST' => 1,
+                        'AC_FUNC_STRERROR_R' => 1,
+                        'AC_FUNC_CHOWN' => 1,
                         'AC_FUNC_SETPGRP' => 1,
-                        'AC_FUNC_OBSTACK' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AC_FUNC_REALLOC' => 1,
-                        'AC_FUNC_WAIT3' => 1,
-                        'AC_FUNC_STRFTIME' => 1,
-                        'AC_SUBST' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'AC_FUNC_FSEEKO' => 1,
-                        'AC_HEADER_STAT' => 1,
-                        'AC_C_INLINE' => 1,
-                        'AC_DEFINE_TRACE_LITERAL' => 1,
-                        'AC_FUNC_GETGROUPS' => 1,
-                        'AC_FUNC_GETLOADAVG' => 1,
-                        'AC_PROG_INSTALL' => 1,
-                        'm4_pattern_forbid' => 1,
                         'AC_FUNC_SETVBUF_REVERSED' => 1,
-                        'AC_TYPE_SIGNAL' => 1,
-                        'AC_PROG_GCC_TRADITIONAL' => 1,
-                        'AC_PROG_LN_S' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AC_FUNC_ALLOCA' => 1,
-                        'AC_PROG_AWK' => 1,
-                        'AC_CONFIG_HEADERS' => 1,
-                        'AC_FUNC_GETPGRP' => 1,
-                        'AC_TYPE_OFF_T' => 1,
-                        'AC_FUNC_UTIME_NULL' => 1,
-                        'AC_TYPE_SIZE_T' => 1,
+                        'AC_CHECK_LIB' => 1,
+                        'AC_FUNC_WAIT3' => 1,
+                        'AC_PROG_MAKE_SET' => 1,
                         'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1,
-                        'AC_CONFIG_SUBDIRS' => 1,
-                        'AC_FUNC_FORK' => 1,
-                        'AC_TYPE_UID_T' => 1,
-                        'AC_HEADER_SYS_WAIT' => 1,
-                        'AC_HEADER_STDC' => 1,
-                        'AC_C_CONST' => 1
+                        'AC_FUNC_LSTAT' => 1,
+                        'm4_pattern_allow' => 1,
+                        'AC_CONFIG_AUX_DIR' => 1,
+                        'AC_PROG_CXX' => 1,
+                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'AC_C_VOLATILE' => 1,
+                        'AC_PATH_X' => 1,
+                        'AC_STRUCT_ST_BLOCKS' => 1,
+                        'AC_SUBST' => 1
                       }
                     ], 'Request' )
            );
index 64b184d..542a0a6 100644 (file)
@@ -823,20 +823,6 @@ m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_MALLOC_H], [/* Define to 1 if you
 #undef HAVE_MALLOC_H])
 m4trace:configure.in:682: -1- AH_OUTPUT([HAVE_STDIO_EXT_H], [/* Define to 1 if you have the <stdio_ext.h> header file. */
 #undef HAVE_STDIO_EXT_H])
-m4trace:configure.in:684: -1- AC_FUNC_MALLOC
-m4trace:configure.in:684: -1- AC_CHECK_HEADERS([stdlib.h])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H])
-m4trace:configure.in:684: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC])
-m4trace:configure.in:684: -1- AH_OUTPUT([HAVE_MALLOC], [/* Define to 1 if your system has a GNU libc compatible `malloc\' function, and
-   to 0 otherwise. */
-#undef HAVE_MALLOC])
-m4trace:configure.in:684: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC])
-m4trace:configure.in:684: -1- AC_LIBSOURCE([malloc.c])
-m4trace:configure.in:684: -1- AC_SUBST([LIB@&t@OBJS])
-m4trace:configure.in:684: -1- AC_DEFINE_TRACE_LITERAL([malloc])
-m4trace:configure.in:684: -1- AH_OUTPUT([malloc], [/* Define to rpl_malloc if the replacement function should be used. */
-#undef malloc])
 m4trace:configure.in:685: -1- AC_FUNC_MMAP
 m4trace:configure.in:685: -1- AC_CHECK_HEADERS([stdlib.h unistd.h])
 m4trace:configure.in:685: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
index 6a4963a..6e8c814 100644 (file)
@@ -292,7 +292,7 @@ enable_hostname_completion (on_or_off)
       /* See if we have anything to do. */
       at = strchr (rl_completer_word_break_characters, '@');
       if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0))
-        return;
+        return old_value;
 
       /* We have something to do.  Do it. */
       nval = (char *)xmalloc (strlen (rl_completer_word_break_characters) + 1 + on_or_off);
index c17e547..c87991a 100644 (file)
@@ -39,6 +39,7 @@
 #include "../flags.h"
 #include "../input.h"
 #include "../execute_cmd.h"
+#include "../trap.h"
 
 #if defined (HISTORY)
 #  include "../bashhist.h"
index 0f293d3..50a942f 100644 (file)
@@ -145,9 +145,8 @@ $BUILTIN variables
 $DOCNAME variable_help
 $SHORT_DOC variables - Some variable names and meanings
 BASH_VERSION    Version information for this Bash.
-CDPATH          A colon separated list of directories to search
-               when the argument to `cd' is not found in the current
-               directory.
+CDPATH          A colon-separated list of directories to search
+               for directries given as arguments to `cd'.
 GLOBIGNORE     A colon-separated list of patterns describing filenames to
                be ignored by pathname expansion.
 #if defined (HISTORY)
diff --git a/doc/FAQ-2.05b b/doc/FAQ-2.05b
new file mode 100644 (file)
index 0000000..f0f3d1b
--- /dev/null
@@ -0,0 +1,1771 @@
+This is the Bash FAQ, version 3.26, for Bash version 2.05b.
+
+This document contains a set of frequently-asked questions concerning
+Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
+interpreter with advanced features for both interactive use and shell
+programming.
+
+Another good source of basic information about shells is the collection
+of FAQ articles periodically posted to comp.unix.shell.
+
+Questions and comments concerning this document should be sent to
+chet@po.cwru.edu.
+
+This document is available for anonymous FTP with the URL
+
+ftp://ftp.cwru.edu/pub/bash/FAQ
+
+The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
+
+----------
+Contents:
+
+Section A:  The Basics
+
+A1) What is it?
+A2) What's the latest version?
+A3) Where can I get it?
+A4) On what machines will bash run?
+A5) Will bash run on operating systems other than Unix?
+A6) How can I build bash with gcc?
+A7) How can I make bash my login shell?
+A8) I just changed my login shell to bash, and now I can't FTP into my
+    machine.  Why not?
+A9) What's the `POSIX Shell and Utilities standard'?
+A10) What is the bash `posix mode'?
+
+Section B:  The latest version
+
+B1) What's new in version 2.05b?
+B2) Are there any user-visible incompatibilities between bash-2.05b and
+    bash-1.14.7?
+
+Section C:  Differences from other Unix shells
+
+C1) How does bash differ from sh, the Bourne shell?
+C2) How does bash differ from the Korn shell, version ksh88?
+C3) Which new features in ksh-93 are not in bash, and which are?
+
+Section D:  Why does bash do some things differently than other Unix shells?
+
+D1) Why does bash run a different version of `command' than
+    `which command' says it will?
+D2) Why doesn't bash treat brace expansions exactly like csh?
+D3) Why doesn't bash have csh variable modifiers?
+D4) How can I make my csh aliases work when I convert to bash?
+D5) How can I pipe standard output and standard error from one command to
+    another, like csh does with `|&'?
+D6) Now that I've converted from ksh to bash, are there equivalents to
+    ksh features like autoloaded functions and the `whence' command?
+
+Section E:  Why does bash do certain things the way it does?
+
+E1) Why is the bash builtin `test' slightly different from /bin/test?
+E2) Why does bash sometimes say `Broken pipe'?
+E3) When I have terminal escape sequences in my prompt, why does bash
+    wrap lines at the wrong column?
+E4) If I pipe the output of a command into `read variable', why doesn't
+    the output show up in $variable when the read command finishes?
+E5) I have a bunch of shell scripts that use backslash-escaped characters
+    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
+    not, and how can I make it understand them?
+E6) Why doesn't a while or for loop get suspended when I type ^Z?
+E7) What about empty for loops in Makefiles?
+E8) Why does the arithmetic evaluation code complain about `08'?
+E9) Why does the pattern matching expression [A-Z]* match files beginning
+    with every letter except `z'?
+E10) Why does `cd //' leave $PWD as `//'?
+E11) If I resize my xterm while another program is running, why doesn't bash
+     notice the change?
+E12) Why don't negative offsets in substring expansion work like I expect?
+
+Section F:  Things to watch out for on certain Unix versions
+
+F1) Why can't I use command line editing in my `cmdtool'?
+F2) I built bash on Solaris 2.  Why do globbing expansions and filename
+    completion chop off the first few characters of each filename?
+F3) Why does bash dump core after I interrupt username completion or
+    `~user' tilde expansion on a machine running NIS?
+F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
+F5) Why does bash report syntax errors when my C News scripts use a
+    redirection before a subshell command?
+F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
+F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
+    HP/UX 11.x?
+
+Section G:  How can I get bash to do certain common things?
+
+G1) How can I get bash to read and display eight-bit characters?
+G2) How do I write a function `x' to replace builtin command `x', but
+    still invoke the command from within the function?
+G3) How can I find the value of a shell variable whose name is the value
+    of another shell variable?
+G4) How can I make the bash `time' reserved word print timing output that
+    looks like the output from my system's /usr/bin/time?
+G5) How do I get the current directory into my prompt?
+G6) How can I rename "*.foo" to "*.bar"?
+G7) How can I translate a filename from uppercase to lowercase?
+G8) How can I write a filename expansion (globbing) pattern that will match
+    all files in the current directory except "." and ".."?
+
+Section H:  Where do I go from here?
+
+H1) How do I report bugs in bash, and where should I look for fixes and
+    advice?
+H2) What kind of bash documentation is there?
+H3) What's coming in future versions?
+H4) What's on the bash `wish list'?
+H5) When will the next release appear?
+
+----------
+Section A:  The Basics
+
+A1)  What is it?
+
+Bash is a Unix command interpreter (shell).  It is an implementation of
+the Posix 1003.2 shell standard, and resembles the Korn and System V
+shells.
+
+Bash contains a number of enhancements over those shells, both
+for interactive use and shell programming.  Features geared
+toward interactive use include command line editing, command
+history, job control, aliases, and prompt expansion.  Programming
+features include additional variable expansions, shell
+arithmetic, and a number of variables and options to control
+shell behavior.
+
+Bash was originally written by Brian Fox of the Free Software
+Foundation.  The current developer and maintainer is Chet Ramey
+of Case Western Reserve University.
+
+A2)  What's the latest version?
+
+The latest version is 2.05b, first made available on Wednesday, 17
+July, 2002.
+
+A3)  Where can I get it?
+
+Bash is the GNU project's shell, and so is available from the
+master GNU archive site, ftp.gnu.org, and its mirrors.  The
+latest version is also available for FTP from ftp.cwru.edu.
+The following URLs tell how to get version 2.05b:
+
+ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz
+ftp://ftp.cwru.edu/pub/bash/bash-2.05b.tar.gz
+
+Formatted versions of the documentation are available with the URLs:
+
+ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05b.tar.gz
+ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05b.tar.gz
+
+A4)  On what machines will bash run?
+
+Bash has been ported to nearly every version of UNIX.  All you
+should have to do to build it on a machine for which a port
+exists is to type `configure' and then `make'.  The build process
+will attempt to discover the version of UNIX you have and tailor
+itself accordingly, using a script created by GNU autoconf.
+
+More information appears in the file `INSTALL' in the distribution.
+
+The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
+explains how to obtain binary versions of bash for most of the major
+commercial Unix systems.
+
+A5) Will bash run on operating systems other than Unix?
+
+Configuration specifics for Unix-like systems such as QNX and
+LynxOS are included in the distribution.  Bash-2.05 and later
+versions should compile and run on Minix 2.0 (patches were
+contributed), but I don't believe anyone has built bash-2.x on
+earlier Minix versions yet. 
+
+Bash has been ported to versions of Windows implementing the Win32
+programming interface.  This includes Windows 95 and Windows NT.
+The port was done by Cygnus Solutions as part of their CYGWIN
+project.  For more information about the project, look at the URLs
+
+http://www.cygwin.com/
+http://sourceware.cygnus.com/cygwin
+
+Cygnus originally ported bash-1.14.7, and that port was part of their
+early GNU-Win32 (the original name) releases.  Cygnus has also done a
+port of bash-2.05 to the CYGWIN environment, and it is available as
+part of their current release.
+
+Bash-2.05b should require no local Cygnus changes to build and run under
+CYGWIN.
+
+The Cygnus port works only on Intel machines.  There is a port of bash
+(I don't know which version) to the alpha/NT environment available from
+
+ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz
+
+DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
+of the DJGPP project.  For more information on the project, see
+
+http://www.delorie.com/djgpp/
+
+I have been told that the original DJGPP port was done by Daisuke Aoyama.
+
+Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
+is available for DJGPP V2.  The files are available as:
+
+ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
+ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
+ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
+
+Mark has begun to work with bash-2.05, but I don't know the status.
+
+Ports of bash-1.12 and bash-2.0 are available for OS/2 from
+
+ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip
+ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip
+
+I haven't looked at either, but the second appears to be a binary-only
+distribution.  Beware.
+
+I have received word that Bash (I'm not sure which version, but I
+believe that it's at least bash-2.02.1) is the standard shell on
+BeOS.
+
+A6) How can I build bash with gcc? 
+
+Bash configures to use gcc by default if it is available.  Read the
+file INSTALL in the distribution for more information.
+
+A7)  How can I make bash my login shell?
+
+Some machines let you use `chsh' to change your login shell.  Other
+systems use `passwd -s' or `passwd -e'.  If one of these works for
+you, that's all you need.  Note that many systems require the full
+pathname to a shell to appear in /etc/shells before you can make it
+your login shell.  For this, you may need the assistance of your
+friendly local system administrator. 
+
+If you cannot do this, you can still use bash as your login shell, but
+you need to perform some tricks.  The basic idea is to add a command
+to your login shell's startup file to replace your login shell with
+bash.
+
+For example, if your login shell is csh or tcsh, and you have installed
+bash in /usr/gnu/bin/bash, add the following line to ~/.login:
+
+       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
+
+(the `--login' tells bash that it is a login shell).
+
+It's not a good idea to put this command into ~/.cshrc, because every
+csh you run without the `-f' option, even ones started to run csh scripts,
+reads that file.  If you must put the command in ~/.cshrc, use something
+like
+
+       if ( $?prompt ) exec /usr/gnu/bin/bash --login
+
+to ensure that bash is exec'd only when the csh is interactive.
+
+If your login shell is sh or ksh, you have to do two things.
+
+First, create an empty file in your home directory named `.bash_profile'.
+The existence of this file will prevent the exec'd bash from trying to
+read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
+is the first file bash tries to read initialization commands from when
+it is invoked as a login shell.
+
+Next, add a line similar to the above to ~/.profile:
+
+       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
+               exec /usr/gnu/bin/bash --login
+
+This will cause login shells to replace themselves with bash running as
+a login shell.  Once you have this working, you can copy your initialization
+code from ~/.profile to ~/.bash_profile.
+
+I have received word that the recipe supplied above is insufficient for
+machines running CDE.  CDE has a maze of twisty little startup files, all
+slightly different.
+
+If you cannot change your login shell in the password file to bash, you
+will have to (apparently) live with CDE using the shell in the password
+file to run its startup scripts.  If you have changed your shell to bash,
+there is code in the CDE startup files (on Solaris, at least) that attempts
+to do the right thing.  It is, however, often broken, and may require that
+you use the $BASH_ENV trick described below.
+
+`dtterm' claims to use $SHELL as the default program to start, so if you
+can change $SHELL in the CDE startup files, you should be able to use bash
+in your terminal windows.
+
+Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
+to read your login shell's startup files.  You may be able to use bash for
+the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
+well, but I have not tried this.
+
+You can use the above `exec' recipe to start bash when not logging in with
+CDE by testing the value of the DT variable:
+
+       if [ -n "$DT" ]; then
+               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
+       fi
+
+If CDE starts its shells non-interactively during login, the login shell
+startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
+To get around this problem, append a line similar to the following to your
+~/.dtprofile:
+
+       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
+
+and add the following line to the beginning of ~/.bash_profile:
+
+       unset BASH_ENV
+
+A8) I just changed my login shell to bash, and now I can't FTP into my
+   machine.  Why not?
+
+You must add the full pathname to bash to the file /etc/shells.  As
+noted in the answer to the previous question, many systems require
+this before you can make bash your login shell. 
+
+Most versions of ftpd use this file to prohibit `special' users
+such as `uucp' and `news' from using FTP. 
+
+A9)  What's the `POSIX Shell and Utilities standard'?
+
+POSIX is a name originally coined by Richard Stallman for a
+family of open system standards based on UNIX.  There are a
+number of aspects of UNIX under consideration for
+standardization, from the basic system services at the system
+call and C library level to applications and tools to system
+administration and management.  Each area of standardization is
+assigned to a working group in the 1003 series. 
+
+The POSIX Shell and Utilities standard was originally developed by
+IEEE Working Group 1003.2 (POSIX.2).  Today it has been merged with
+the original 1003.1 Working Group and is maintained by the Austin
+Group (a joint working group of the IEEE, The Open Group and
+ISO/IEC SC22/WG15).  Today the Shell and Utilities are a volume
+within the set of documents that make up IEEE Std 1003.1-2001, and
+thus now the former POSIX.2 (from 1992) is now part of the current
+POSIX.1 standard (POSIX 1003.1-2001). 
+
+The Shell and Utilities volume concentrates on the command
+interpreter interface and utility programs commonly executed from
+the command line or by other programs.  The standard is freely
+available on the web at http://www.UNIX-systems.org/version3/ . 
+Work continues at the Austin Group on maintenance issues; see
+http://www.opengroup.org/austin/ to join the discussions. 
+
+Bash is concerned with the aspects of the shell's behavior defined
+by the POSIX Shell and Utilities volume.  The shell command
+language has of course been standardized, including the basic flow
+control and program execution constructs, I/O redirection and
+pipelining, argument handling, variable expansion, and quoting. 
+
+The `special' builtins, which must be implemented as part of the
+shell to provide the desired functionality, are specified as
+being part of the shell; examples of these are `eval' and
+`export'.  Other utilities appear in the sections of POSIX not
+devoted to the shell which are commonly (and in some cases must
+be) implemented as builtin commands, such as `read' and `test'. 
+POSIX also specifies aspects of the shell's interactive
+behavior as part of the UPE, including job control and command
+line editing.  Only vi-style line editing commands have been
+standardized; emacs editing commands were left out due to
+objections.
+
+The latest version of the POSIX Shell and Utilities standard is
+available (now updated to the 2003 Edition incorporating the
+Technical Corrigendum 1), as part of the Single UNIX Specification
+Version 3 at
+
+http://www.UNIX-systems.org/version3/
+
+A10)  What is the bash `posix mode'?
+
+Although bash is an implementation of the POSIX shell
+specification, there are areas where the bash default behavior
+differs from that spec.  The bash `posix mode' changes the bash
+behavior in these areas so that it obeys the spec more closely. 
+
+Posix mode is entered by starting bash with the --posix or
+'-o posix' option or executing `set -o posix' after bash is running.
+
+The specific aspects of bash which change when posix mode is
+active are listed in the file POSIX in the bash distribution.
+They are also listed in a section in the Bash Reference Manual
+(from which that file is generated).
+
+Section B:  The latest version
+
+B1) What's new in version 2.05b?
+
+The raison d'etre for bash-2.05b is to make a second intermediate
+release containing the first of the new features to be available
+in bash-3.0 and get feedback on those features before proceeding.
+The major new feature is multibyte character support in both Bash
+and Readline.
+
+Bash-2.05b contains the following new features (see the manual page for
+complete descriptions and the CHANGES and NEWS files in the bash-2.05b
+distribution):
+
+o support for multibyte characters has been added to both bash and readline
+
+o the DEBUG trap is now run *before* simple commands, ((...)) commands,
+  [[...]] conditional commands, and for ((...)) loops
+
+o the shell now performs arithmetic in the largest integer size the machine
+  supports (intmax_t)
+
+o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
+  and inserts the result into the expanded prompt
+
+o there is a new `here-string' redirection operator:  <<< word
+
+o when displaying variables, function attributes and definitions are shown
+  separately, allowing them to be re-used as input (attempting to re-use
+  the old output would result in syntax errors).
+
+o `read' has a new `-u fd' option to read from a specified file descriptor
+
+o the bash debugger in examples/bashdb has been modified to work with the
+  new DEBUG trap semantics, the command set has been made more gdb-like,
+  and the changes to $LINENO make debugging functions work better
+
+o the expansion of $LINENO inside a shell function is only relative to the
+  function start if the shell is interactive -- if the shell is running a
+  script, $LINENO expands to the line number in the script.  This is as
+  POSIX-2001 requires
+
+
+A short feature history dating from Bash-2.0:
+
+Bash-2.05a introduced the following new features:
+
+o The `printf' builtin has undergone major work
+
+o There is a new read-only `shopt' option: login_shell, which is set by
+  login shells and unset otherwise
+
+o New `\A' prompt string escape sequence; expanding to time in 24-hour
+  HH:MM format
+
+o New `-A group/-g' option to complete and compgen; goes group name
+  completion
+
+o New [+-]O invocation option to set and unset `shopt' options at startup
+
+o ksh-like `ERR' trap
+
+o `for' loops now allow empty word lists after the `in' reserved word
+
+o new `hard' and `soft' arguments for the `ulimit' builtin
+
+o Readline can be configured to place the user at the same point on the line
+  when retrieving commands from the history list
+
+o Readline can be configured to skip `hidden' files (filenames with a leading
+  `.' on Unix) when performing completion
+
+Bash-2.05 introduced the following new features:
+
+o This version has once again reverted to using locales and strcoll(3) when
+  processing pattern matching bracket expressions, as POSIX requires. 
+o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
+  per the new GNU coding standards.
+o The /dev/tcp and /dev/udp redirections now accept service names as well as
+  port numbers.
+o `complete' and `compgen' now take a `-o value' option, which controls some
+   of the aspects of that compspec.  Valid values are:
+
+        default - perform bash default completion if programmable
+                  completion produces no matches
+        dirnames - perform directory name completion if programmable
+                   completion produces no matches
+        filenames - tell readline that the compspec produces filenames,
+                    so it can do things like append slashes to
+                    directory names and suppress trailing spaces
+o A new loadable builtin, realpath, which canonicalizes and expands symlinks
+  in pathname arguments.
+o When `set' is called without options, it prints function defintions in a
+  way that allows them to be reused as input.  This affects `declare' and 
+  `declare -p' as well.  This only happens when the shell is not in POSIX
+   mode, since POSIX.2 forbids this behavior.
+
+Bash-2.04 introduced the following new features:
+
+o Programmable word completion with the new `complete' and `compgen' builtins;
+  examples are provided in examples/complete/complete-examples
+o `history' has a new `-d' option to delete a history entry
+o `bind' has a new `-x' option to bind key sequences to shell commands
+o The prompt expansion code has new `\j' and `\l' escape sequences
+o The `no_empty_cmd_completion' shell option, if enabled, inhibits
+  command completion when TAB is typed on an empty line
+o `help' has a new `-s' option to print a usage synopsis
+o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
+o New ksh93-style arithmetic for command:
+       for ((expr1 ; expr2; expr3 )); do list; done
+o `read' has new options: `-t', `-n', `-d', `-s'
+o The redirection code handles several filenames specially:  /dev/fd/N,
+  /dev/stdin, /dev/stdout, /dev/stderr
+o The redirection code now recognizes /dev/tcp/HOST/PORT and
+  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
+  to the specified port on the specified host
+o The ${!prefix*} expansion has been implemented
+o A new FUNCNAME variable, which expands to the name of a currently-executing
+  function
+o The GROUPS variable is no longer readonly
+o A new shopt `xpg_echo' variable, to control the behavior of echo with
+  respect to backslash-escape sequences at runtime
+o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
+
+The version of Readline released with Bash-2.04, Readline-4.1, had several
+new features as well:
+
+o Parentheses matching is always compiled into readline, and controllable
+  with the new `blink-matching-paren' variable
+o The history-search-forward and history-search-backward functions now leave
+  point at the end of the line when the search string is empty, like
+  reverse-search-history, and forward-search-history
+o A new function for applications:  rl_on_new_line_with_prompt()
+o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
+
+
+Bash-2.03 had very few new features, in keeping with the convention
+that odd-numbered releases provide mainly bug fixes.  A number of new
+features were added to Readline, mostly at the request of the Cygnus
+folks.
+
+A new shopt option, `restricted_shell', so that startup files can test
+       whether or not the shell was started in restricted mode
+Filename generation is now performed on the words between ( and ) in
+       compound array assignments (this is really a bug fix)
+OLDPWD is now auto-exported, as POSIX.2 requires
+ENV and BASH_ENV are read-only variables in a restricted shell
+Bash may now be linked against an already-installed Readline library,
+       as long as the Readline library is version 4 or newer
+All shells begun with the `--login' option will source the login shell
+       startup files, even if the shell is not interactive
+
+There were lots of changes to the version of the Readline library released
+along with Bash-2.03.  For a complete list of the changes, read the file
+CHANGES in the Bash-2.03 distribution.
+
+Bash-2.02 contained the following new features:
+
+a new version of malloc (based on the old GNU malloc code in previous
+       bash versions) that is more page-oriented, more conservative
+       with memory usage, does not `orphan' large blocks when they
+       are freed, is usable on 64-bit machines, and has allocation
+       checking turned on unconditionally
+POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
+POSIX.2-style globbing equivalence classes
+POSIX.2-style globbing collating symbols
+the ksh [[...]] extended conditional command
+the ksh egrep-style extended pattern matching operators
+a new `printf' builtin
+the ksh-like $(<filename) command substitution, which is equivalent to
+       $(cat filename)
+new tilde prefixes that expand to directories from the directory stack
+new `**' arithmetic operator to do exponentiation
+case-insensitive globbing (filename expansion)
+menu completion a la tcsh
+`magic-space' history expansion function like tcsh
+the readline inputrc `language' has a new file inclusion directive ($include)
+
+Bash-2.01 contained only a few new features:
+
+new `GROUPS' builtin array variable containing the user's group list
+new bindable readline commands: history-and-alias-expand-line and
+       alias-expand-line
+
+Bash-2.0 contained extensive changes and new features from bash-1.14.7.
+Here's a short list:
+
+new `time' reserved word to time pipelines, shell builtins, and
+       shell functions
+one-dimensional arrays with a new compound assignment statement,
+        appropriate expansion constructs and modifications to some
+       of the builtins (read, declare, etc.) to use them
+new quoting syntaxes for ANSI-C string expansion and locale-specific
+       string translation
+new expansions to do substring extraction, pattern replacement, and
+       indirect variable expansion
+new builtins: `disown' and `shopt'
+new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
+              MACHTYPE, BASH_VERSINFO
+special handling of many unused or redundant variables removed
+       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
+dynamic loading of new builtin commands; many loadable examples provided
+new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
+history and aliases available in shell scripts
+new readline variables: enable-keypad, mark-directories, input-meta,
+       visible-stats, disable-completion, comment-begin
+new readline commands to manipulate the mark and operate on the region
+new readline emacs mode commands and bindings for ksh-88 compatibility
+updated and extended builtins
+new DEBUG trap
+expanded (and now documented) restricted shell mode
+
+implementation stuff:  
+autoconf-based configuration
+nearly all of the bugs reported since version 1.14 have been fixed
+most builtins converted to use builtin `getopt' for consistency
+most builtins use -p option to display output in a reusable form
+       (for consistency)
+grammar tighter and smaller (66 reduce-reduce conflicts gone)
+lots of code now smaller and faster
+test suite greatly expanded
+
+B2) Are there any user-visible incompatibilities between bash-2.05b and
+    bash-1.14.7?
+
+There are a few incompatibilities between version 1.14.7 and version 2.05b.
+They are detailed in the file COMPAT in the bash distribution.  That file
+is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
+if if you find something that's not mentioned there.
+
+Section C:  Differences from other Unix shells
+
+C1) How does bash differ from sh, the Bourne shell?
+
+This is a non-comprehensive list of features that differentiate bash
+from the SVR4.2 shell.  The bash manual page explains these more
+completely.
+
+Things bash has that sh does not:
+       long invocation options
+       [+-]O invocation option
+       -l invocation option
+       `!' reserved word to invert pipeline return value
+       `time' reserved word to time pipelines and shell builtins
+       the `function' reserved word
+       the `select' compound command and reserved word
+       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
+       new $'...' and $"..." quoting
+       the $(...) form of command substitution
+       the $(<filename) form of command substitution, equivalent to
+               $(cat filename)
+       the ${#param} parameter value length operator
+       the ${!param} indirect parameter expansion operator
+       the ${!param*} prefix expansion operator
+       the ${param:offset[:length]} parameter substring operator
+       the ${param/pat[/string]} parameter pattern substitution operator
+       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
+       expansion of positional parameters beyond $9 with ${num}
+       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
+                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
+                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
+                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
+                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
+                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
+                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
+                  auto_resume
+       DEBUG trap
+       ERR trap
+       variable arrays with new compound assignment syntax
+       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
+       prompt string special char translation and variable expansion
+       auto-export of variables in initial environment
+       command search finds functions before builtins
+       bash return builtin will exit a file sourced with `.'
+       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
+                 export -n/-f/-p/name=value, pwd -L/-P,
+                 read -e/-p/-a/-t/-n/-d/-s/-u,
+                 readonly -a/-f/name=value, trap -l, set +o,
+                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
+                 unset -f/-v, ulimit -m/-p/-u,
+                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
+                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
+       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
+       bash restricted shell mode is more extensive
+       bash allows functions and variables with the same name
+       brace expansion
+       tilde expansion
+       arithmetic expansion with $((...)) and `let' builtin
+       the `[[...]]' extended conditional command
+       process substitution
+       aliases and alias/unalias builtins
+       local variables in functions and `local' builtin
+       readline and command-line editing with programmable completion
+       command history and history/fc builtins
+       csh-like history expansion
+       other new bash builtins: bind, command, compgen, complete, builtin,
+                                declare/typeset, dirs, enable, fc, help,
+                                history, logout, popd, pushd, disown, shopt,
+                                printf
+       exported functions
+       filename generation when using output redirection (command >a*)
+       POSIX.2-style globbing character classes
+       POSIX.2-style globbing equivalence classes
+       POSIX.2-style globbing collating symbols
+       egrep-like extended pattern matching operators
+       case-insensitive pattern matching and globbing
+       variable assignments preceding commands affect only that command,
+               even for builtins and functions
+       posix mode
+       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
+               /dev/tcp/host/port, /dev/udp/host/port
+
+Things sh has that bash does not:
+       uses variable SHACCT to do shell accounting
+       includes `stop' builtin (bash can use alias stop='kill -s STOP')
+       `newgrp' builtin
+       turns on job control if called as `jsh'
+       $TIMEOUT (like bash $TMOUT)
+       `^' is a synonym for `|'
+       new SVR4.2 sh builtins: mldmode, priv
+
+Implementation differences:
+       redirection to/from compound commands causes sh to create a subshell
+       bash does not allow unbalanced quotes; sh silently inserts them at EOF
+       bash does not mess with signal 11
+       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
+       bash splits only the results of expansions on IFS, using POSIX.2
+               field splitting rules; sh splits all words on IFS
+       sh does not allow MAILCHECK to be unset (?)
+       sh does not allow traps on SIGALRM or SIGCHLD
+       bash allows multiple option arguments when invoked (e.g. -x -v);
+               sh allows only a single option argument (`sh -x -v' attempts
+               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
+               On Solaris 2.4 and earlier versions, sh goes into an infinite
+               loop.)
+       sh exits a script if any builtin fails; bash exits only if one of
+               the POSIX.2 `special' builtins fails
+
+C2)  How does bash differ from the Korn shell, version ksh88?
+
+Things bash has or uses that ksh88 does not:
+       long invocation options
+       [-+]O invocation option
+       -l invocation option
+       `!' reserved word
+       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
+       arithmetic in largest machine-supported size (intmax_t)
+       posix mode and posix conformance
+       command hashing
+       tilde expansion for assignment statements that look like $PATH
+       process substitution with named pipes if /dev/fd is not available
+       the ${!param} indirect parameter expansion operator
+       the ${!param*} prefix expansion operator
+       the ${param:offset[:length]} parameter substring operator
+       the ${param/pat[/string]} parameter pattern substitution operator
+       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
+                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
+                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
+                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
+                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
+                  GROUPS, FUNCNAME, histchars, auto_resume
+       prompt expansion with backslash escapes and command substitution
+       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
+       more extensive and extensible editing and programmable completion
+       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
+                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
+                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
+                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
+                 set -o braceexpand/-o histexpand/-o interactive-comments/
+                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
+                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
+                 typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt,
+                 disown, printf, complete, compgen
+       `!' csh-style history expansion
+       POSIX.2-style globbing character classes
+       POSIX.2-style globbing equivalence classes
+       POSIX.2-style globbing collating symbols
+       egrep-like extended pattern matching operators
+       case-insensitive pattern matching and globbing
+       `**' arithmetic operator to do exponentiation
+       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
+       arrays of unlimited size
+       TMOUT is default timeout for `read' and `select'
+
+Things ksh88 has or uses that bash does not:
+       tracked aliases (alias -t)
+       variables: ERRNO, FPATH, EDITOR, VISUAL
+       co-processes (|&, >&p, <&p)
+       weirdly-scoped functions
+       typeset +f to list all function names without definitions
+       text of command history kept in a file, not memory
+       builtins: alias -x, cd old new, fc -e -, newgrp, print,
+                 read -p/-s/var?prompt, set -A/-o gmacs/
+                 -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s,
+                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
+       using environment to pass attributes of exported variables
+       arithmetic evaluation done on arguments to some builtins
+       reads .profile from $PWD when invoked as login shell
+
+Implementation differences:
+       ksh runs last command of a pipeline in parent shell context
+       bash has brace expansion by default (ksh88 compile-time option)
+       bash has fixed startup file for all interactive shells; ksh reads $ENV
+       bash has exported functions
+       bash command search finds functions before builtins
+       bash waits for all commands in pipeline to exit before returning status
+       emacs-mode editing has some slightly different key bindings
+
+C3)  Which new features in ksh-93 are not in bash, and which are?
+
+New things in ksh-93 not in bash-2.05b:
+       associative arrays
+       floating point arithmetic and variables
+       math library functions
+       ${!name[sub]} name of subscript for associative array
+       `.' is allowed in variable names to create a hierarchical namespace
+       more extensive compound assignment syntax
+       discipline functions
+       `sleep' and `getconf' builtins (bash has loadable versions)
+       typeset -n and `nameref' variables
+       KEYBD trap
+       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
+                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
+       backreferences in pattern matching (\N)
+       `&' operator in pattern lists for matching
+       print -f (bash uses printf)
+       `fc' has been renamed to `hist'
+       `.' can execute shell functions
+       exit statuses between 0 and 255
+       set -o pipefail
+       `+=' variable assignment operator
+       FPATH and PATH mixing
+       getopts -a
+       -I invocation option
+       DEBUG trap now executed before each simple command, instead of after
+       printf %H, %P, %T, %Z modifiers, output base for %d
+       lexical scoping for local variables in `ksh' functions
+       no scoping for local variables in `POSIX' functions
+
+New things in ksh-93 present in bash-2.05b:
+       [n]<&word- and [n]>&word- redirections (combination dup and close)
+        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
+        ?:, ++, --, `expr1 , expr2' arithmetic operators
+       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
+                   ${!param*}
+       compound array assignment
+       the `!' reserved word
+       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
+       `command', `builtin', `disown' builtins
+       new $'...' and $"..." quoting
+       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
+       set -o notify/-C
+       changes to kill builtin
+       read -A (bash uses read -a)
+        read -t/-d
+       trap -p
+       exec -c/-a
+       `.' restores the positional parameters when it completes
+       POSIX.2 `test'
+       umask -S
+       unalias -a
+       command and arithmetic substitution performed on PS1, PS4, and ENV
+       command name completion
+       ENV processed only for interactive shells
+
+Section D:  Why does bash do some things differently than other Unix shells?
+
+D1) Why does bash run a different version of `command' than
+    `which command' says it will?
+
+On many systems, `which' is actually a csh script that assumes
+you're running csh.  In tcsh, `which' and its cousin `where'
+are builtins.  On other Unix systems, `which' is a perl script
+that uses the PATH environment variable.
+
+The csh script version reads the csh startup files from your
+home directory and uses those to determine which `command' will
+be invoked.  Since bash doesn't use any of those startup files,
+there's a good chance that your bash environment differs from
+your csh environment.  The bash `type' builtin does everything
+`which' does, and will report correct results for the running
+shell.  If you're really wedded to the name `which', try adding
+the following function definition to your .bashrc:
+
+       which()
+       {
+               builtin type "$@"
+       }
+
+If you're moving from tcsh and would like to bring `where' along
+as well, use this function:
+
+       where()
+       {
+               builtin type -a "$@"
+       }
+
+D2) Why doesn't bash treat brace expansions exactly like csh?
+
+The only difference between bash and csh brace expansion is that
+bash requires a brace expression to contain at least one unquoted
+comma if it is to be expanded.  Any brace-surrounded word not
+containing an unquoted comma is left unchanged by the brace
+expansion code.  This affords the greatest degree of sh
+compatibility. 
+
+Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
+
+D3) Why doesn't bash have csh variable modifiers?
+
+Posix has specified a more powerful, albeit somewhat more cryptic,
+mechanism cribbed from ksh, and bash implements it.
+
+${parameter%word}
+        Remove smallest suffix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        smallest portion of the suffix matched by the pattern deleted.
+
+        x=file.c
+        echo ${x%.c}.o
+        -->file.o
+
+${parameter%%word}
+
+        Remove largest suffix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        largest portion of the suffix matched by the pattern deleted.
+
+        x=posix/src/std
+        echo ${x%%/*}
+        -->posix
+
+${parameter#word}
+        Remove smallest prefix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        smallest portion of the prefix matched by the pattern deleted.
+
+        x=$HOME/src/cmd
+        echo ${x#$HOME}
+        -->/src/cmd
+
+${parameter##word}
+        Remove largest prefix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        largest portion of the prefix matched by the pattern deleted.
+
+        x=/one/two/three
+        echo ${x##*/}
+        -->three
+
+
+Given
+       a=/a/b/c/d
+       b=b.xxx
+
+       csh                     bash            result
+       ---                     ----            ------
+       $a:h                    ${a%/*}            /a/b/c
+       $a:t                    ${a##*/}           d
+       $b:r                    ${b%.*}            b
+       $b:e                    ${b##*.}           xxx
+
+
+D4) How can I make my csh aliases work when I convert to bash?
+
+Bash uses a different syntax to support aliases than csh does. 
+The details can be found in the documentation.  We have provided
+a shell script which does most of the work of conversion for you;
+this script can be found in ./examples/misc/aliasconv.sh.  Here is
+how you use it:
+  
+Start csh in the normal way for you.  (e.g., `csh')
+  
+Pipe the output of `alias' through `aliasconv.sh', saving the
+results into `bash_aliases':
+  
+       alias | bash aliasconv.sh >bash_aliases
+  
+Edit `bash_aliases', carefully reading through any created
+functions.  You will need to change the names of some csh specific
+variables to the bash equivalents.  The script converts $cwd to
+$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
+to $PS1.  You may also have to add quotes to avoid unwanted
+expansion.
+
+For example, the csh alias:
+  
+       alias cd 'cd \!*; echo $cwd'
+  
+is converted to the bash function:
+
+       cd () { command cd "$@"; echo $PWD ; }
+
+The only thing that needs to be done is to quote $PWD:
+  
+       cd () { command cd "$@"; echo "$PWD" ; }
+  
+Merge the edited file into your ~/.bashrc.
+
+There is an additional, more ambitious, script in
+examples/misc/cshtobash that attempts to convert your entire csh
+environment to its bash equivalent.  This script can be run as
+simply `cshtobash' to convert your normal interactive
+environment, or as `cshtobash ~/.login' to convert your login
+environment. 
+
+D5) How can I pipe standard output and standard error from one command to
+    another, like csh does with `|&'?
+
+Use
+       command 2>&1 | command2
+
+The key is to remember that piping is performed before redirection, so
+file descriptor 1 points to the pipe when it is duplicated onto file
+descriptor 2.
+
+D6) Now that I've converted from ksh to bash, are there equivalents to
+    ksh features like autoloaded functions and the `whence' command?
+
+There are features in ksh-88 and ksh-93 that do not have direct bash
+equivalents.  Most, however, can be emulated with very little trouble.
+
+ksh-88 feature         Bash equivalent
+--------------         ---------------
+compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
+                       bash builtins (hash, history, type)
+coprocesses            named pipe pairs (one for read, one for write)
+typeset +f             declare -F
+cd, print, whence      function substitutes in examples/functions/kshenv
+autoloaded functions   examples/functions/autoload is the same as typeset -fu
+read var?prompt                read -p prompt var
+
+ksh-93 feature         Bash equivalent
+--------------         ---------------
+sleep, getconf         Bash has loadable versions in examples/loadables
+${.sh.version}         $BASH_VERSION
+print -f               printf
+hist                   alias hist=fc
+$HISTEDIT              $FCEDIT
+
+Section E:  How can I get bash to do certain things, and why does bash do
+           things the way it does?
+
+E1) Why is the bash builtin `test' slightly different from /bin/test?
+
+The specific example used here is [ ! x -o x ], which is false.
+
+Bash's builtin `test' implements the Posix.2 spec, which can be
+summarized as follows (the wording is due to David Korn):
+   
+Here is the set of rules for processing test arguments.
+  
+    0 Args: False
+    1 Arg:  True iff argument is not null.
+    2 Args: If first arg is !, True iff second argument is null.
+           If first argument is unary, then true if unary test is true
+           Otherwise error.
+    3 Args: If second argument is a binary operator, do binary test of $1 $3
+           If first argument is !, negate two argument test of $2 $3
+           If first argument is `(' and third argument is `)', do the
+           one-argument test of the second argument.
+           Otherwise error.
+    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
+           Otherwise unspecified
+    5 or more Args: unspecified.  (Historical shells would use their
+    current algorithm).
+   
+The operators -a and -o are considered binary operators for the purpose
+of the 3 Arg case.
+   
+As you can see, the test becomes (not (x or x)), which is false.
+
+E2) Why does bash sometimes say `Broken pipe'?
+
+If a sequence of commands appears in a pipeline, and one of the
+reading commands finishes before the writer has finished, the
+writer receives a SIGPIPE signal.  Many other shells special-case
+SIGPIPE as an exit status in the pipeline and do not report it. 
+For example, in:
+  
+      ps -aux | head
+  
+`head' can finish before `ps' writes all of its output, and ps
+will try to write on a pipe without a reader.  In that case, bash
+will print `Broken pipe' to stderr when ps is killed by a
+SIGPIPE. 
+
+You can build a version of bash that will not report SIGPIPE errors
+by uncommenting the definition of DONT_REPORT_SIGPIPE in the file
+config-top.h.
+
+E3) When I have terminal escape sequences in my prompt, why does bash
+    wrap lines at the wrong column?
+
+Readline, the line editing library that bash uses, does not know
+that the terminal escape sequences do not take up space on the
+screen.  The redisplay code assumes, unless told otherwise, that
+each character in the prompt is a `printable' character that
+takes up one character position on the screen. 
+
+You can use the bash prompt expansion facility (see the PROMPTING
+section in the manual page) to tell readline that sequences of
+characters in the prompt strings take up no screen space. 
+
+Use the \[ escape to begin a sequence of non-printing characters,
+and the \] escape to signal the end of such a sequence. 
+
+E4) If I pipe the output of a command into `read variable', why doesn't
+    the output show up in $variable when the read command finishes?
+
+This has to do with the parent-child relationship between Unix
+processes.  It affects all commands run in pipelines, not just
+simple calls to `read'.  For example, piping a command's output
+into a `while' loop that repeatedly calls `read' will result in
+the same behavior.
+
+Each element of a pipeline runs in a separate process, a child of
+the shell running the pipeline.  A subprocess cannot affect its
+parent's environment.  When the `read' command sets the variable
+to the input, that variable is set only in the subshell, not the
+parent shell.  When the subshell exits, the value of the variable
+is lost. 
+
+Many pipelines that end with `read variable' can be converted
+into command substitutions, which will capture the output of
+a specified command.  The output can then be assigned to a
+variable:
+
+       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
+
+can be converted into
+
+       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
+
+This does not, unfortunately, work to split the text among
+multiple variables, as read does when given multiple variable
+arguments.  If you need to do this, you can either use the
+command substitution above to read the output into a variable
+and chop up the variable using the bash pattern removal
+expansion operators or use some variant of the following
+approach.
+
+Say /usr/local/bin/ipaddr is the following shell script:
+
+#! /bin/sh
+host `hostname` | awk '/address/ {print $NF}'
+
+Instead of using
+
+       /usr/local/bin/ipaddr | read A B C D
+
+to break the local machine's IP address into separate octets, use
+
+       OIFS="$IFS"
+       IFS=.
+       set -- $(/usr/local/bin/ipaddr)
+       IFS="$OIFS"
+       A="$1" B="$2" C="$3" D="$4"
+
+Beware, however, that this will change the shell's positional
+parameters.  If you need them, you should save them before doing
+this.
+
+This is the general approach -- in most cases you will not need to
+set $IFS to a different value.
+
+Some other user-supplied alternatives include:
+
+read A B C D << HERE
+    $(IFS=.; echo $(/usr/local/bin/ipaddr))
+HERE
+
+and, where process substitution is available,
+
+read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
+
+E5) I have a bunch of shell scripts that use backslash-escaped characters
+    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
+    not, and how can I make it understand them?
+
+This is the behavior of echo on most Unix System V machines.
+
+The bash builtin `echo' is modeled after the 9th Edition
+Research Unix version of `echo'.  It does not interpret
+backslash-escaped characters in its argument strings by default;
+it requires the use of the -e option to enable the
+interpretation.  The System V echo provides no way to disable the
+special characters; the bash echo has a -E option to disable
+them. 
+
+There is a configuration option that will make bash behave like
+the System V echo and interpret things like `\t' by default.  Run
+configure with the --enable-xpg-echo-default option to turn this
+on.  Be aware that this will cause some of the tests run when you
+type `make tests' to fail.
+
+There is a shell option, `xpg_echo', settable with `shopt', that will
+change the behavior of echo at runtime.  Enabling this option turns
+on expansion of backslash-escape sequences.
+
+E6) Why doesn't a while or for loop get suspended when I type ^Z?
+
+This is a consequence of how job control works on Unix.  The only
+thing that can be suspended is the process group.  This is a single
+command or pipeline of commands that the shell forks and executes.
+
+When you run a while or for loop, the only thing that the shell forks
+and executes are any commands in the while loop test and commands in
+the loop bodies.  These, therefore, are the only things that can be
+suspended when you type ^Z.
+
+If you want to be able to stop the entire loop, you need to put it
+within parentheses, which will force the loop into a subshell that
+may be stopped (and subsequently restarted) as a single unit.
+
+E7) What about empty for loops in Makefiles?
+
+It's fairly common to see constructs like this in automatically-generated
+Makefiles:
+
+SUBDIRS = @SUBDIRS@
+
+       ...
+
+subdirs-clean:
+       for d in ${SUBDIRS}; do \
+               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
+       done
+
+When SUBDIRS is empty, this results in a command like this being passed to
+bash:
+
+       for d in ; do
+               ( cd $d && ${MAKE} ${MFLAGS} clean )
+       done
+
+In versions of bash before bash-2.05a, this was a syntax error.  If the
+reserved word `in' was present, a word must follow it before the semicolon
+or newline.  The language in the manual page referring to the list of words
+being empty referred to the list after it is expanded.  These versions of
+bash required that there be at least one word following the `in' when the
+construct was parsed.
+
+The idiomatic Makefile solution is something like:
+
+SUBDIRS = @SUBDIRS@
+
+subdirs-clean:
+       subdirs=$SUBDIRS ; for d in $$subdirs; do \
+               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
+       done
+
+The latest drafts of the updated POSIX standard have changed this:  the
+word list is no longer required.  Bash versions 2.05a and later accept
+the new syntax.
+
+E8) Why does the arithmetic evaluation code complain about `08'?
+
+The bash arithmetic evaluation code (used for `let', $(()), (()), and in
+other places), interprets a leading `0' in numeric constants as denoting
+an octal number, and a leading `0x' as denoting hexadecimal.  This is
+in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
+arithmetic constants should be handled as signed long integers as defined
+by the ANSI/ISO C standard.
+
+The POSIX.2 interpretation committee has confirmed this:
+
+http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
+
+E9) Why does the pattern matching expression [A-Z]* match files beginning
+    with every letter except `z'?
+
+Bash-2.03, Bash-2.05 and later versions honor the current locale setting
+when processing ranges within pattern matching bracket expressions ([A-Z]). 
+This is what POSIX.2 and SUSv3/XPG6 specify. 
+
+The behavior of the matcher in bash-2.05 and later versions depends on the
+current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
+result in the traditional behavior ([A-Z] matches all uppercase ASCII
+characters).  Many other locales, including the en_US locale (the default
+on many US versions of Linux) collate the upper and lower case letters like
+this:
+
+       AaBb...Zz
+
+which means that [A-Z] matches every letter except `z'.  Others collate like
+
+       aAbBcC...zZ
+
+which means that [A-Z] matches every letter except `a'.
+
+The portable way to specify upper case letters is [:upper:] instead of
+A-Z; lower case may be specified as [:lower:] instead of a-z.
+
+Look at the manual pages for setlocale(3), strcoll(3), and, if it is
+present, locale(1).  If you have locale(1), you can use it to find
+your current locale information even if you do not have any of the
+LC_ variables set.
+
+My advice is to put
+
+       export LC_COLLATE=C
+
+into /etc/profile and inspect any shell scripts run from cron for
+constructs like [A-Z].  This will prevent things like
+
+       rm [A-Z]*
+
+from removing every file in the current directory except those beginning
+with `z' and still allow individual users to change the collation order.
+Users may put the above command into their own profiles as well, of course.
+
+E10) Why does `cd //' leave $PWD as `//'?
+
+POSIX.2, in its description of `cd', says that *three* or more leading
+slashes may be replaced with a single slash when canonicalizing the
+current working directory.
+
+This is, I presume, for historical compatibility.  Certain versions of
+Unix, and early network file systems, used paths of the form
+//hostname/path to access `path' on server `hostname'.
+
+E11) If I resize my xterm while another program is running, why doesn't bash
+     notice the change?
+
+This is another issue that deals with job control.
+
+The kernel maintains a notion of a current terminal process group.  Members
+of this process group (processes whose process group ID is equal to the
+current terminal process group ID) receive terminal-generated signals like
+SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
+man page.)
+
+If a terminal is resized, the kernel sends SIGWINCH to each member of
+the terminal's current process group (the `foreground' process group).
+
+When bash is running with job control enabled, each pipeline (which may be
+a single command) is run in its own process group, different from bash's
+process group.  This foreground process group receives the SIGWINCH; bash
+does not.  Bash has no way of knowing that the terminal has been resized.
+
+There is a `checkwinsize' option, settable with the `shopt' builtin, that
+will cause bash to check the window size and adjust its idea of the
+terminal's dimensions each time a process stops or exits and returns control
+of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
+
+E12) Why don't negative offsets in substring expansion work like I expect?
+
+When substring expansion of the form ${param:offset[:length} is used,
+an `offset' that evaluates to a number less than zero counts back from
+the end of the expanded value of $param.
+
+When a negative `offset' begins with a minus sign, however, unexpected things
+can happen.  Consider
+
+       a=12345678
+       echo ${a:-4}
+
+intending to print the last four characters of $a.  The problem is that
+${param:-word} already has a well-defined meaning: expand to word if the
+expanded value of param is unset or null, and $param otherwise.
+
+To use negative offsets that begin with a minus sign, separate the
+minus sign and the colon with a space.
+
+Section F:  Things to watch out for on certain Unix versions
+
+F1) Why can't I use command line editing in my `cmdtool'?
+
+The problem is `cmdtool' and bash fighting over the input.  When
+scrolling is enabled in a cmdtool window, cmdtool puts the tty in
+`raw mode' to permit command-line editing using the mouse for
+applications that cannot do it themselves.  As a result, bash and
+cmdtool each try to read keyboard input immediately, with neither
+getting enough of it to be useful.
+
+This mode also causes cmdtool to not implement many of the
+terminal functions and control sequences appearing in the
+`sun-cmd' termcap entry.  For a more complete explanation, see
+that file examples/suncmd.termcap in the bash distribution. 
+
+`xterm' is a better choice, and gets along with bash much more
+smoothly.
+
+If you must use cmdtool, you can use the termcap description in
+examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
+description contained in that file, i.e.
+
+TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
+
+Then export TERMCAP and start a new cmdtool window from that shell.
+The bash command-line editing should behave better in the new
+cmdtool.  If this works, you can put the assignment to TERMCAP
+in your bashrc file.
+
+F2) I built bash on Solaris 2.  Why do globbing expansions and filename
+    completion chop off the first few characters of each filename?
+
+This is the consequence of building bash on SunOS 5 and linking
+with the libraries in /usr/ucblib, but using the definitions
+and structures from files in /usr/include. 
+
+The actual conflict is between the dirent structure in
+/usr/include/dirent.h and the struct returned by the version of
+`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
+
+Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
+when configuring and building bash.  This will ensure that you
+use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
+link with libc before libucb. 
+
+If you have installed the Sun C compiler, you may also need to
+put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
+/usr/ucb.
+
+F3) Why does bash dump core after I interrupt username completion or
+    `~user' tilde expansion on a machine running NIS?
+
+This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
+client library, which is part of libc.
+
+The YP library code keeps static state -- a pointer into the data
+returned from the server.  When YP initializes itself (setpwent),
+it looks at this pointer and calls free on it if it's non-null. 
+So far, so good. 
+
+If one of the YP functions is interrupted during getpwent (the
+exact function is interpretwithsave()), and returns NULL, the
+pointer is freed without being reset to NULL, and the function
+returns.  The next time getpwent is called, it sees that this
+pointer is non-null, calls free, and the bash free() blows up
+because it's being asked to free freed memory. 
+
+The traditional Unix mallocs allow memory to be freed multiple
+times; that's probably why this has never been fixed.  You can
+run configure with the `--without-gnu-malloc' option to use
+the C library malloc and avoid the problem.
+
+F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
+
+The `@' character is the default `line kill' character in most
+versions of System V, including SVR4.2.  You can change this
+character to whatever you want using `stty'.  For example, to
+change the line kill character to control-u, type
+
+       stty kill ^U
+
+where the `^' and `U' can be two separate characters.
+
+F5) Why does bash report syntax errors when my C News scripts use a
+    redirection before a subshell command?
+
+The actual command in question is something like
+
+       < file ( command )
+
+According to the grammar given in the POSIX.2 standard, this construct
+is, in fact, a syntax error.  Redirections may only precede `simple
+commands'.  A subshell construct such as the above is one of the shell's
+`compound commands'.  A redirection may only follow a compound command.
+
+This affects the mechanical transformation of commands that use `cat'
+to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
+comp.unix.shell).  While most commands of the form
+
+       cat file | command
+
+can be converted to `< file command', shell control structures such as
+loops and subshells require `command < file'.
+
+The file CWRU/sh-redir-hack in the bash-2.05a distribution is an
+(unofficial) patch to parse.y that will modify the grammar to
+support this construct.  It will not apply with `patch'; you must
+modify parse.y by hand.  Note that if you apply this, you must
+recompile with -DREDIRECTION_HACK.  This introduces a large
+number of reduce/reduce conflicts into the shell grammar. 
+
+F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
+
+The short answer is that Red Hat screwed up.
+
+The long answer is that they shipped an /etc/inputrc that only works
+for emacs mode editing, and then screwed all the vi users by setting
+INPUTRC to /etc/inputrc in /etc/profile.
+
+The short fix is to do one of the following: remove or rename
+/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
+but make sure you export it if you do), remove the assignment to
+INPUTRC from /etc/profile, add
+
+        set keymap emacs
+
+to the beginning of /etc/inputrc, or bracket the key bindings in
+/etc/inputrc with these lines
+
+       $if mode=emacs
+               [...]
+       $endif
+
+F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
+    HP/UX 11.x?
+
+HP/UX's support for long double is imperfect at best.
+
+GCC will support it without problems, but the HP C library functions
+like strtold(3) and printf(3) don't actually work with long doubles.
+HP implemented a `long_double' type as a 4-element array of 32-bit
+ints, and that is what the library functions use.  The ANSI C
+`long double' type is a 128-bit floating point scalar.
+
+The easiest fix, until HP fixes things up, is to edit the generated
+config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
+the compilation should complete successfully.
+
+Section G:  How can I get bash to do certain common things?
+
+G1) How can I get bash to read and display eight-bit characters?
+
+This is a process requiring several steps.
+
+First, you must ensure that the `physical' data path is a full eight
+bits.  For xterms, for example, the `vt100' resources `eightBitInput'
+and `eightBitOutput' should be set to `true'.
+
+Once you have set up an eight-bit path, you must tell the kernel and
+tty driver to leave the eighth bit of characters alone when processing
+keyboard input.  Use `stty' to do this:
+
+       stty cs8 -istrip -parenb
+
+For old BSD-style systems, you can use
+
+       stty pass8
+
+You may also need
+
+       stty even odd
+
+Finally, you need to tell readline that you will be inputting and
+displaying eight-bit characters.  You use readline variables to do
+this.  These variables can be set in your .inputrc or using the bash
+`bind' builtin.  Here's an example using `bind':
+
+       bash$ bind 'set convert-meta off'
+       bash$ bind 'set meta-flag on'
+       bash$ bind 'set output-meta on'
+
+The `set' commands between the single quotes may also be placed
+in ~/.inputrc.
+
+G2) How do I write a function `x' to replace builtin command `x', but
+    still invoke the command from within the function?
+
+This is why the `command' and `builtin' builtins exist.  The
+`command' builtin executes the command supplied as its first
+argument, skipping over any function defined with that name.  The
+`builtin' builtin executes the builtin command given as its first
+argument directly. 
+
+For example, to write a function to replace `cd' that writes the
+hostname and current directory to an xterm title bar, use
+something like the following:
+
+       cd()
+       {
+               builtin cd "$@" && xtitle "$HOST: $PWD"
+       }
+
+This could also be written using `command' instead of `builtin';
+the version above is marginally more efficient. 
+
+G3) How can I find the value of a shell variable whose name is the value
+    of another shell variable?
+
+Versions of Bash newer than Bash-2.0 support this directly.  You can use 
+
+       ${!var}
+
+For example, the following sequence of commands will echo `z':
+
+       var1=var2
+       var2=z
+       echo ${!var1}
+
+For sh compatibility, use the `eval' builtin.  The important
+thing to remember is that `eval' expands the arguments you give
+it again, so you need to quote the parts of the arguments that
+you want `eval' to act on. 
+
+For example, this expression prints the value of the last positional
+parameter:
+
+       eval echo \"\$\{$#\}\"
+
+The expansion of the quoted portions of this expression will be
+deferred until `eval' runs, while the `$#' will be expanded
+before `eval' is executed.  In versions of bash later than bash-2.0,
+
+       echo ${!#}
+
+does the same thing.
+
+This is not the same thing as ksh93 `nameref' variables, though the syntax
+is similar.  I may add namerefs in a future bash version.
+
+G4) How can I make the bash `time' reserved word print timing output that
+     looks like the output from my system's /usr/bin/time?
+
+The bash command timing code looks for a variable `TIMEFORMAT' and
+uses its value as a format string to decide how to display the
+timing statistics.
+
+The value of TIMEFORMAT is a string with `%' escapes expanded in a
+fashion similar in spirit to printf(3).  The manual page explains
+the meanings of the escape sequences in the format string.
+
+If TIMEFORMAT is not set, bash acts as if the following assignment had
+been performed:
+
+       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
+
+The POSIX.2 default time format (used by `time -p command') is
+
+       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
+
+The BSD /usr/bin/time format can be emulated with:
+
+       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
+
+The System V /usr/bin/time format can be emulated with:
+
+       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
+
+The ksh format can be emulated with:
+
+       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
+
+G5) How do I get the current directory into my prompt?
+
+Bash provides a number of backslash-escape sequences which are expanded
+when the prompt string (PS1 or PS2) is displayed.  The full list is in
+the manual page.
+
+The \w expansion gives the full pathname of the current directory, with
+a tilde (`~') substituted for the current value of $HOME.  The \W
+expansion gives the basename of the current directory.  To put the full
+pathname of the current directory into the path without any tilde
+subsitution, use $PWD.  Here are some examples:
+
+       PS1='\w$ '      # current directory with tilde
+       PS1='\W$ '      # basename of current directory
+       PS1='$PWD$ '    # full pathname of current directory
+
+The single quotes are important in the final example to prevent $PWD from
+being expanded when the assignment to PS1 is performed.
+
+G6) How can I rename "*.foo" to "*.bar"?
+
+Use the pattern removal functionality described in D3.  The following `for'
+loop will do the trick:
+
+       for f in *.foo; do
+               mv $f ${f%foo}bar
+       done
+
+G7) How can I translate a filename from uppercase to lowercase?
+
+The script examples/functions/lowercase, originally written by John DuBois,
+will do the trick.  The converse is left as an exercise.
+
+G8) How can I write a filename expansion (globbing) pattern that will match
+    all files in the current directory except "." and ".."?
+
+You must have set the `extglob' shell option using `shopt -s extglob' to use
+this:
+
+       echo .!(.|) *
+
+A solution that works without extended globbing is given in the Unix Shell
+FAQ, posted periodically to comp.unix.shell.
+
+Section H:  Where do I go from here?
+
+H1) How do I report bugs in bash, and where should I look for fixes and
+    advice?
+
+Use the `bashbug' script to report bugs.  It is built and
+installed at the same time as bash.  It provides a standard
+template for reporting a problem and automatically includes
+information about your configuration and build environment. 
+
+`bashbug' sends its reports to bug-bash@gnu.org, which
+is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
+
+Bug fixes, answers to questions, and announcements of new releases
+are all posted to gnu.bash.bug.  Discussions concerning bash features
+and problems also take place there.
+
+To reach the bash maintainers directly, send mail to
+bash-maintainers@gnu.org.
+
+H2) What kind of bash documentation is there?
+
+First, look in the doc directory in the bash distribution.  It should
+contain at least the following files:
+
+bash.1         an extensive, thorough Unix-style manual page
+builtins.1     a manual page covering just bash builtin commands
+bashref.texi   a reference manual in GNU tex`info format
+bashref.info   an info version of the reference manual
+FAQ            this file
+article.ms     text of an article written for The Linux Journal
+readline.3     a man page describing readline
+
+Postscript, HTML, and ASCII files created from the above source are
+available in the documentation distribution.
+
+There is additional documentation available for anonymous FTP from host
+ftp.cwru.edu in the `pub/bash' directory.
+
+Cameron Newham and Bill Rosenblatt have written a book on bash, published
+by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
+Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
+is 1-56592-147-X.  Look for it in fine bookstores near you.  This book
+covers bash-1.14, but has an appendix describing some of the new features
+in bash-2.0.  
+
+A second edition of this book is available, published in January, 1998.
+The ISBN number is 1-56592-347-2.  Look for it in the same fine bookstores
+or on the web.
+
+The GNU Bash Reference Manual has been published as a printed book by
+Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003).  It covers
+bash-2.0 and is available from most online bookstores (see
+http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
+will donate $1 to the Free Software Foundation for each copy sold. 
+
+H3) What's coming in future versions?
+
+These are features I hope to include in a future version of bash.
+
+a better bash debugger (a minimally-tested version is included with bash-2.05b)
+associative arrays
+co-processes, but with a new-style syntax that looks like function declaration
+
+H4) What's on the bash `wish list' for future versions?
+
+These are features that may or may not appear in a future version of bash.
+
+breaking some of the shell functionality into embeddable libraries
+a module system like zsh's, using dynamic loading like builtins
+better internationalization using GNU `gettext'
+date-stamped command history
+a bash programmer's guide with a chapter on creating loadable builtins
+a better loadable interface to perl with access to the shell builtins and
+       variables (contributions gratefully accepted)
+ksh93-like `nameref' variables
+ksh93-like `+=' variable assignment operator
+ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
+       associated disipline functions
+Some of the new ksh93 pattern matching operators, like backreferencing
+
+H5) When will the next release appear?
+
+The next version will appear sometime in 2003.  Never make predictions. 
+
+
+This document is Copyright 1995-2003 by Chester Ramey.
+
+Permission is hereby granted, without written agreement and
+without license or royalty fees, to use, copy, and distribute
+this document for any purpose, provided that the above copyright
+notice appears in all copies of this document and that the
+contents of this document remain unaltered.
diff --git a/doc/FAQ.orig b/doc/FAQ.orig
new file mode 100644 (file)
index 0000000..1cff3c8
--- /dev/null
@@ -0,0 +1,1745 @@
+This is the Bash FAQ, version 3.24, for Bash version 2.05b.
+
+This document contains a set of frequently-asked questions concerning
+Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
+interpreter with advanced features for both interactive use and shell
+programming.
+
+Another good source of basic information about shells is the collection
+of FAQ articles periodically posted to comp.unix.shell.
+
+Questions and comments concerning this document should be sent to
+chet@po.cwru.edu.
+
+This document is available for anonymous FTP with the URL
+
+ftp://ftp.cwru.edu/pub/bash/FAQ
+
+The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
+
+----------
+Contents:
+
+Section A:  The Basics
+
+A1) What is it?
+A2) What's the latest version?
+A3) Where can I get it?
+A4) On what machines will bash run?
+A5) Will bash run on operating systems other than Unix?
+A6) How can I build bash with gcc?
+A7) How can I make bash my login shell?
+A8) I just changed my login shell to bash, and now I can't FTP into my
+    machine.  Why not?
+A9) What's the `POSIX 1003.2 standard'?
+A10) What is the bash `posix mode'?
+
+Section B:  The latest version
+
+B1) What's new in version 2.05b?
+B2) Are there any user-visible incompatibilities between bash-2.05b and
+    bash-1.14.7?
+
+Section C:  Differences from other Unix shells
+
+C1) How does bash differ from sh, the Bourne shell?
+C2) How does bash differ from the Korn shell, version ksh88?
+C3) Which new features in ksh-93 are not in bash, and which are?
+
+Section D:  Why does bash do some things differently than other Unix shells?
+
+D1) Why does bash run a different version of `command' than
+    `which command' says it will?
+D2) Why doesn't bash treat brace expansions exactly like csh?
+D3) Why doesn't bash have csh variable modifiers?
+D4) How can I make my csh aliases work when I convert to bash?
+D5) How can I pipe standard output and standard error from one command to
+    another, like csh does with `|&'?
+D6) Now that I've converted from ksh to bash, are there equivalents to
+    ksh features like autoloaded functions and the `whence' command?
+
+Section E:  Why does bash do certain things the way it does?
+
+E1) Why is the bash builtin `test' slightly different from /bin/test?
+E2) Why does bash sometimes say `Broken pipe'?
+E3) When I have terminal escape sequences in my prompt, why does bash
+    wrap lines at the wrong column?
+E4) If I pipe the output of a command into `read variable', why doesn't
+    the output show up in $variable when the read command finishes?
+E5) I have a bunch of shell scripts that use backslash-escaped characters
+    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
+    not, and how can I make it understand them?
+E6) Why doesn't a while or for loop get suspended when I type ^Z?
+E7) What about empty for loops in Makefiles?
+E8) Why does the arithmetic evaluation code complain about `08'?
+E9) Why does the pattern matching expression [A-Z]* match files beginning
+    with every letter except `z'?
+E10) Why does `cd //' leave $PWD as `//'?
+E11) If I resize my xterm while another program is running, why doesn't bash
+     notice the change?
+
+Section F:  Things to watch out for on certain Unix versions
+
+F1) Why can't I use command line editing in my `cmdtool'?
+F2) I built bash on Solaris 2.  Why do globbing expansions and filename
+    completion chop off the first few characters of each filename?
+F3) Why does bash dump core after I interrupt username completion or
+    `~user' tilde expansion on a machine running NIS?
+F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
+F5) Why does bash report syntax errors when my C News scripts use a
+    redirection before a subshell command?
+F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
+F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
+    HP/UX 11.x?
+
+Section G:  How can I get bash to do certain common things?
+
+G1) How can I get bash to read and display eight-bit characters?
+G2) How do I write a function `x' to replace builtin command `x', but
+    still invoke the command from within the function?
+G3) How can I find the value of a shell variable whose name is the value
+    of another shell variable?
+G4) How can I make the bash `time' reserved word print timing output that
+    looks like the output from my system's /usr/bin/time?
+G5) How do I get the current directory into my prompt?
+G6) How can I rename "*.foo" to "*.bar"?
+G7) How can I translate a filename from uppercase to lowercase?
+G8) How can I write a filename expansion (globbing) pattern that will match
+    all files in the current directory except "." and ".."?
+
+Section H:  Where do I go from here?
+
+H1) How do I report bugs in bash, and where should I look for fixes and
+    advice?
+H2) What kind of bash documentation is there?
+H3) What's coming in future versions?
+H4) What's on the bash `wish list'?
+H5) When will the next release appear?
+
+----------
+Section A:  The Basics
+
+A1)  What is it?
+
+Bash is a Unix command interpreter (shell).  It is an implementation of
+the Posix 1003.2 shell standard, and resembles the Korn and System V
+shells.
+
+Bash contains a number of enhancements over those shells, both
+for interactive use and shell programming.  Features geared
+toward interactive use include command line editing, command
+history, job control, aliases, and prompt expansion.  Programming
+features include additional variable expansions, shell
+arithmetic, and a number of variables and options to control
+shell behavior.
+
+Bash was originally written by Brian Fox of the Free Software
+Foundation.  The current developer and maintainer is Chet Ramey
+of Case Western Reserve University.
+
+A2)  What's the latest version?
+
+The latest version is 2.05b, first made available on Wednesday, 17
+July, 2002.
+
+A3)  Where can I get it?
+
+Bash is the GNU project's shell, and so is available from the
+master GNU archive site, ftp.gnu.org, and its mirrors.  The
+latest version is also available for FTP from ftp.cwru.edu.
+The following URLs tell how to get version 2.05b:
+
+ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz
+ftp://ftp.cwru.edu/pub/bash/bash-2.05b.tar.gz
+
+Formatted versions of the documentation are available with the URLs:
+
+ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05b.tar.gz
+ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05b.tar.gz
+
+A4)  On what machines will bash run?
+
+Bash has been ported to nearly every version of UNIX.  All you
+should have to do to build it on a machine for which a port
+exists is to type `configure' and then `make'.  The build process
+will attempt to discover the version of UNIX you have and tailor
+itself accordingly, using a script created by GNU autoconf.
+
+More information appears in the file `INSTALL' in the distribution.
+
+The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
+explains how to obtain binary versions of bash for most of the major
+commercial Unix systems.
+
+A5) Will bash run on operating systems other than Unix?
+
+Configuration specifics for Unix-like systems such as QNX and
+LynxOS are included in the distribution.  Bash-2.05 and later
+versions should compile and run on Minix 2.0 (patches were
+contributed), but I don't believe anyone has built bash-2.x on
+earlier Minix versions yet. 
+
+Bash has been ported to versions of Windows implementing the Win32
+programming interface.  This includes Windows 95 and Windows NT.
+The port was done by Cygnus Solutions as part of their CYGWIN
+project.  For more information about the project, look at the URLs
+
+http://www.cygwin.com/
+http://sourceware.cygnus.com/cygwin
+
+Cygnus originally ported bash-1.14.7, and that port was part of their
+early GNU-Win32 (the original name) releases.  Cygnus has also done a
+port of bash-2.05 to the CYGWIN environment, and it is available as
+part of their current release.
+
+Bash-2.05b should require no local Cygnus changes to build and run under
+CYGWIN.
+
+The Cygnus port works only on Intel machines.  There is a port of bash
+(I don't know which version) to the alpha/NT environment available from
+
+ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz
+
+DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
+of the DJGPP project.  For more information on the project, see
+
+http://www.delorie.com/djgpp/
+
+I have been told that the original DJGPP port was done by Daisuke Aoyama.
+
+Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
+is available for DJGPP V2.  The files are available as:
+
+ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
+ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
+ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
+
+Mark has begun to work with bash-2.05, but I don't know the status.
+
+Ports of bash-1.12 and bash-2.0 are available for OS/2 from
+
+ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip
+ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip
+
+I haven't looked at either, but the second appears to be a binary-only
+distribution.  Beware.
+
+I have received word that Bash (I'm not sure which version, but I
+believe that it's at least bash-2.02.1) is the standard shell on
+BeOS.
+
+A6) How can I build bash with gcc? 
+
+Bash configures to use gcc by default if it is available.  Read the
+file INSTALL in the distribution for more information.
+
+A7)  How can I make bash my login shell?
+
+Some machines let you use `chsh' to change your login shell.  Other
+systems use `passwd -s' or `passwd -e'.  If one of these works for
+you, that's all you need.  Note that many systems require the full
+pathname to a shell to appear in /etc/shells before you can make it
+your login shell.  For this, you may need the assistance of your
+friendly local system administrator. 
+
+If you cannot do this, you can still use bash as your login shell, but
+you need to perform some tricks.  The basic idea is to add a command
+to your login shell's startup file to replace your login shell with
+bash.
+
+For example, if your login shell is csh or tcsh, and you have installed
+bash in /usr/gnu/bin/bash, add the following line to ~/.login:
+
+       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
+
+(the `--login' tells bash that it is a login shell).
+
+It's not a good idea to put this command into ~/.cshrc, because every
+csh you run without the `-f' option, even ones started to run csh scripts,
+reads that file.  If you must put the command in ~/.cshrc, use something
+like
+
+       if ( $?prompt ) exec /usr/gnu/bin/bash --login
+
+to ensure that bash is exec'd only when the csh is interactive.
+
+If your login shell is sh or ksh, you have to do two things.
+
+First, create an empty file in your home directory named `.bash_profile'.
+The existence of this file will prevent the exec'd bash from trying to
+read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
+is the first file bash tries to read initialization commands from when
+it is invoked as a login shell.
+
+Next, add a line similar to the above to ~/.profile:
+
+       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
+               exec /usr/gnu/bin/bash --login
+
+This will cause login shells to replace themselves with bash running as
+a login shell.  Once you have this working, you can copy your initialization
+code from ~/.profile to ~/.bash_profile.
+
+I have received word that the recipe supplied above is insufficient for
+machines running CDE.  CDE has a maze of twisty little startup files, all
+slightly different.
+
+If you cannot change your login shell in the password file to bash, you
+will have to (apparently) live with CDE using the shell in the password
+file to run its startup scripts.  If you have changed your shell to bash,
+there is code in the CDE startup files (on Solaris, at least) that attempts
+to do the right thing.  It is, however, often broken, and may require that
+you use the $BASH_ENV trick described below.
+
+`dtterm' claims to use $SHELL as the default program to start, so if you
+can change $SHELL in the CDE startup files, you should be able to use bash
+in your terminal windows.
+
+Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
+to read your login shell's startup files.  You may be able to use bash for
+the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
+well, but I have not tried this.
+
+You can use the above `exec' recipe to start bash when not logging in with
+CDE by testing the value of the DT variable:
+
+       if [ -n "$DT" ]; then
+               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
+       fi
+
+If CDE starts its shells non-interactively during login, the login shell
+startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
+To get around this problem, append a line similar to the following to your
+~/.dtprofile:
+
+       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
+
+and add the following line to the beginning of ~/.bash_profile:
+
+       unset BASH_ENV
+
+A8) I just changed my login shell to bash, and now I can't FTP into my
+   machine.  Why not?
+
+You must add the full pathname to bash to the file /etc/shells.  As
+noted in the answer to the previous question, many systems require
+this before you can make bash your login shell. 
+
+Most versions of ftpd use this file to prohibit `special' users
+such as `uucp' and `news' from using FTP. 
+
+A9)  What's the `POSIX 1003.2 standard'?
+
+POSIX is a name originally coined by Richard Stallman for a
+family of open system standards based on UNIX.  There are a
+number of aspects of UNIX under consideration for
+standardization, from the basic system services at the system
+call and C library level to applications and tools to system
+administration and management.  Each area of standardization is
+assigned to a working group in the 1003 series. 
+
+The POSIX Shell and Utilities standard has been developed by IEEE
+Working Group 1003.2 (POSIX.2).  It concentrates on the command
+interpreter interface and utility programs commonly executed from
+the command line or by other programs.  An initial version of the
+standard has been approved and published by the IEEE, and work is
+currently underway to update it. 
+
+Bash is concerned with the aspects of the shell's behavior
+defined by POSIX.2.  The shell command language has of course
+been standardized, including the basic flow control and program
+execution constructs, I/O redirection and pipelining, argument
+handling, variable expansion, and quoting. 
+
+The `special' builtins, which must be implemented as part of the
+shell to provide the desired functionality, are specified as
+being part of the shell; examples of these are `eval' and
+`export'.  Other utilities appear in the sections of POSIX.2 not
+devoted to the shell which are commonly (and in some cases must
+be) implemented as builtin commands, such as `read' and `test'. 
+POSIX.2 also specifies aspects of the shell's interactive
+behavior as part of the UPE, including job control and command
+line editing.  Only vi-style line editing commands have been
+standardized; emacs editing commands were left out due to
+objections.
+
+The Open Group has made an older version of its Single Unix
+Specification (version 2), which is very similar to POSIX.2,
+available on the web at
+
+http://www.opengroup.org/onlinepubs/007908799/
+
+The Single Unix Specification, version 3, is available on the web at
+
+http://www.opengroup.org/onlinepubs/007904975/
+
+A10)  What is the bash `posix mode'?
+
+Although bash is an implementation of the POSIX.2 shell
+specification, there are areas where the bash default behavior
+differs from that spec.  The bash `posix mode' changes the bash
+behavior in these areas so that it obeys the spec more closely. 
+
+Posix mode is entered by starting bash with the --posix or
+'-o posix' option or executing `set -o posix' after bash is running.
+
+The specific aspects of bash which change when posix mode is
+active are listed in the file POSIX in the bash distribution.
+They are also listed in a section in the Bash Reference Manual
+(from which that file is generated).
+
+Section B:  The latest version
+
+B1) What's new in version 2.05b?
+
+The raison d'etre for bash-2.05b is to make a second intermediate
+release containing the first of the new features to be available
+in bash-3.0 and get feedback on those features before proceeding.
+The major new feature is multibyte character support in both Bash
+and Readline.
+
+Bash-2.05b contains the following new features (see the manual page for
+complete descriptions and the CHANGES and NEWS files in the bash-2.05b
+distribution):
+
+o support for multibyte characters has been added to both bash and readline
+
+o the DEBUG trap is now run *before* simple commands, ((...)) commands,
+  [[...]] conditional commands, and for ((...)) loops
+
+o the shell now performs arithmetic in the largest integer size the machine
+  supports (intmax_t)
+
+o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
+  and inserts the result into the expanded prompt
+
+o there is a new `here-string' redirection operator:  <<< word
+
+o when displaying variables, function attributes and definitions are shown
+  separately, allowing them to be re-used as input (attempting to re-use
+  the old output would result in syntax errors).
+
+o `read' has a new `-u fd' option to read from a specified file descriptor
+
+o the bash debugger in examples/bashdb has been modified to work with the
+  new DEBUG trap semantics, the command set has been made more gdb-like,
+  and the changes to $LINENO make debugging functions work better
+
+o the expansion of $LINENO inside a shell function is only relative to the
+  function start if the shell is interactive -- if the shell is running a
+  script, $LINENO expands to the line number in the script.  This is as
+  POSIX-2001 requires
+
+
+A short feature history dating from Bash-2.0:
+
+Bash-2.05a introduced the following new features:
+
+o The `printf' builtin has undergone major work
+
+o There is a new read-only `shopt' option: login_shell, which is set by
+  login shells and unset otherwise
+
+o New `\A' prompt string escape sequence; expanding to time in 24-hour
+  HH:MM format
+
+o New `-A group/-g' option to complete and compgen; goes group name
+  completion
+
+o New [+-]O invocation option to set and unset `shopt' options at startup
+
+o ksh-like `ERR' trap
+
+o `for' loops now allow empty word lists after the `in' reserved word
+
+o new `hard' and `soft' arguments for the `ulimit' builtin
+
+o Readline can be configured to place the user at the same point on the line
+  when retrieving commands from the history list
+
+o Readline can be configured to skip `hidden' files (filenames with a leading
+  `.' on Unix) when performing completion
+
+Bash-2.05 introduced the following new features:
+
+o This version has once again reverted to using locales and strcoll(3) when
+  processing pattern matching bracket expressions, as POSIX requires. 
+o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
+  per the new GNU coding standards.
+o The /dev/tcp and /dev/udp redirections now accept service names as well as
+  port numbers.
+o `complete' and `compgen' now take a `-o value' option, which controls some
+   of the aspects of that compspec.  Valid values are:
+
+        default - perform bash default completion if programmable
+                  completion produces no matches
+        dirnames - perform directory name completion if programmable
+                   completion produces no matches
+        filenames - tell readline that the compspec produces filenames,
+                    so it can do things like append slashes to
+                    directory names and suppress trailing spaces
+o A new loadable builtin, realpath, which canonicalizes and expands symlinks
+  in pathname arguments.
+o When `set' is called without options, it prints function defintions in a
+  way that allows them to be reused as input.  This affects `declare' and 
+  `declare -p' as well.  This only happens when the shell is not in POSIX
+   mode, since POSIX.2 forbids this behavior.
+
+Bash-2.04 introduced the following new features:
+
+o Programmable word completion with the new `complete' and `compgen' builtins;
+  examples are provided in examples/complete/complete-examples
+o `history' has a new `-d' option to delete a history entry
+o `bind' has a new `-x' option to bind key sequences to shell commands
+o The prompt expansion code has new `\j' and `\l' escape sequences
+o The `no_empty_cmd_completion' shell option, if enabled, inhibits
+  command completion when TAB is typed on an empty line
+o `help' has a new `-s' option to print a usage synopsis
+o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
+o New ksh93-style arithmetic for command:
+       for ((expr1 ; expr2; expr3 )); do list; done
+o `read' has new options: `-t', `-n', `-d', `-s'
+o The redirection code handles several filenames specially:  /dev/fd/N,
+  /dev/stdin, /dev/stdout, /dev/stderr
+o The redirection code now recognizes /dev/tcp/HOST/PORT and
+  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
+  to the specified port on the specified host
+o The ${!prefix*} expansion has been implemented
+o A new FUNCNAME variable, which expands to the name of a currently-executing
+  function
+o The GROUPS variable is no longer readonly
+o A new shopt `xpg_echo' variable, to control the behavior of echo with
+  respect to backslash-escape sequences at runtime
+o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
+
+The version of Readline released with Bash-2.04, Readline-4.1, had several
+new features as well:
+
+o Parentheses matching is always compiled into readline, and controllable
+  with the new `blink-matching-paren' variable
+o The history-search-forward and history-search-backward functions now leave
+  point at the end of the line when the search string is empty, like
+  reverse-search-history, and forward-search-history
+o A new function for applications:  rl_on_new_line_with_prompt()
+o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
+
+
+Bash-2.03 had very few new features, in keeping with the convention
+that odd-numbered releases provide mainly bug fixes.  A number of new
+features were added to Readline, mostly at the request of the Cygnus
+folks.
+
+A new shopt option, `restricted_shell', so that startup files can test
+       whether or not the shell was started in restricted mode
+Filename generation is now performed on the words between ( and ) in
+       compound array assignments (this is really a bug fix)
+OLDPWD is now auto-exported, as POSIX.2 requires
+ENV and BASH_ENV are read-only variables in a restricted shell
+Bash may now be linked against an already-installed Readline library,
+       as long as the Readline library is version 4 or newer
+All shells begun with the `--login' option will source the login shell
+       startup files, even if the shell is not interactive
+
+There were lots of changes to the version of the Readline library released
+along with Bash-2.03.  For a complete list of the changes, read the file
+CHANGES in the Bash-2.03 distribution.
+
+Bash-2.02 contained the following new features:
+
+a new version of malloc (based on the old GNU malloc code in previous
+       bash versions) that is more page-oriented, more conservative
+       with memory usage, does not `orphan' large blocks when they
+       are freed, is usable on 64-bit machines, and has allocation
+       checking turned on unconditionally
+POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
+POSIX.2-style globbing equivalence classes
+POSIX.2-style globbing collating symbols
+the ksh [[...]] extended conditional command
+the ksh egrep-style extended pattern matching operators
+a new `printf' builtin
+the ksh-like $(<filename) command substitution, which is equivalent to
+       $(cat filename)
+new tilde prefixes that expand to directories from the directory stack
+new `**' arithmetic operator to do exponentiation
+case-insensitive globbing (filename expansion)
+menu completion a la tcsh
+`magic-space' history expansion function like tcsh
+the readline inputrc `language' has a new file inclusion directive ($include)
+
+Bash-2.01 contained only a few new features:
+
+new `GROUPS' builtin array variable containing the user's group list
+new bindable readline commands: history-and-alias-expand-line and
+       alias-expand-line
+
+Bash-2.0 contained extensive changes and new features from bash-1.14.7.
+Here's a short list:
+
+new `time' reserved word to time pipelines, shell builtins, and
+       shell functions
+one-dimensional arrays with a new compound assignment statement,
+        appropriate expansion constructs and modifications to some
+       of the builtins (read, declare, etc.) to use them
+new quoting syntaxes for ANSI-C string expansion and locale-specific
+       string translation
+new expansions to do substring extraction, pattern replacement, and
+       indirect variable expansion
+new builtins: `disown' and `shopt'
+new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
+              MACHTYPE, BASH_VERSINFO
+special handling of many unused or redundant variables removed
+       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
+dynamic loading of new builtin commands; many loadable examples provided
+new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
+history and aliases available in shell scripts
+new readline variables: enable-keypad, mark-directories, input-meta,
+       visible-stats, disable-completion, comment-begin
+new readline commands to manipulate the mark and operate on the region
+new readline emacs mode commands and bindings for ksh-88 compatibility
+updated and extended builtins
+new DEBUG trap
+expanded (and now documented) restricted shell mode
+
+implementation stuff:  
+autoconf-based configuration
+nearly all of the bugs reported since version 1.14 have been fixed
+most builtins converted to use builtin `getopt' for consistency
+most builtins use -p option to display output in a reusable form
+       (for consistency)
+grammar tighter and smaller (66 reduce-reduce conflicts gone)
+lots of code now smaller and faster
+test suite greatly expanded
+
+B2) Are there any user-visible incompatibilities between bash-2.05b and
+    bash-1.14.7?
+
+There are a few incompatibilities between version 1.14.7 and version 2.05b.
+They are detailed in the file COMPAT in the bash distribution.  That file
+is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
+if if you find something that's not mentioned there.
+
+Section C:  Differences from other Unix shells
+
+C1) How does bash differ from sh, the Bourne shell?
+
+This is a non-comprehensive list of features that differentiate bash
+from the SVR4.2 shell.  The bash manual page explains these more
+completely.
+
+Things bash has that sh does not:
+       long invocation options
+       [+-]O invocation option
+       -l invocation option
+       `!' reserved word to invert pipeline return value
+       `time' reserved word to time pipelines and shell builtins
+       the `function' reserved word
+       the `select' compound command and reserved word
+       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
+       new $'...' and $"..." quoting
+       the $(...) form of command substitution
+       the $(<filename) form of command substitution, equivalent to
+               $(cat filename)
+       the ${#param} parameter value length operator
+       the ${!param} indirect parameter expansion operator
+       the ${!param*} prefix expansion operator
+       the ${param:offset[:length]} parameter substring operator
+       the ${param/pat[/string]} parameter pattern substitution operator
+       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
+       expansion of positional parameters beyond $9 with ${num}
+       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
+                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
+                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
+                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
+                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
+                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
+                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
+                  auto_resume
+       DEBUG trap
+       ERR trap
+       variable arrays with new compound assignment syntax
+       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
+       prompt string special char translation and variable expansion
+       auto-export of variables in initial environment
+       command search finds functions before builtins
+       bash return builtin will exit a file sourced with `.'
+       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
+                 export -n/-f/-p/name=value, pwd -L/-P,
+                 read -e/-p/-a/-t/-n/-d/-s/-u,
+                 readonly -a/-f/name=value, trap -l, set +o,
+                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
+                 unset -f/-v, ulimit -m/-p/-u,
+                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
+                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
+       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
+       bash restricted shell mode is more extensive
+       bash allows functions and variables with the same name
+       brace expansion
+       tilde expansion
+       arithmetic expansion with $((...)) and `let' builtin
+       the `[[...]]' extended conditional command
+       process substitution
+       aliases and alias/unalias builtins
+       local variables in functions and `local' builtin
+       readline and command-line editing with programmable completion
+       command history and history/fc builtins
+       csh-like history expansion
+       other new bash builtins: bind, command, compgen, complete, builtin,
+                                declare/typeset, dirs, enable, fc, help,
+                                history, logout, popd, pushd, disown, shopt,
+                                printf
+       exported functions
+       filename generation when using output redirection (command >a*)
+       POSIX.2-style globbing character classes
+       POSIX.2-style globbing equivalence classes
+       POSIX.2-style globbing collating symbols
+       egrep-like extended pattern matching operators
+       case-insensitive pattern matching and globbing
+       variable assignments preceding commands affect only that command,
+               even for builtins and functions
+       posix mode
+       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
+               /dev/tcp/host/port, /dev/udp/host/port
+
+Things sh has that bash does not:
+       uses variable SHACCT to do shell accounting
+       includes `stop' builtin (bash can use alias stop='kill -s STOP')
+       `newgrp' builtin
+       turns on job control if called as `jsh'
+       $TIMEOUT (like bash $TMOUT)
+       `^' is a synonym for `|'
+       new SVR4.2 sh builtins: mldmode, priv
+
+Implementation differences:
+       redirection to/from compound commands causes sh to create a subshell
+       bash does not allow unbalanced quotes; sh silently inserts them at EOF
+       bash does not mess with signal 11
+       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
+       bash splits only the results of expansions on IFS, using POSIX.2
+               field splitting rules; sh splits all words on IFS
+       sh does not allow MAILCHECK to be unset (?)
+       sh does not allow traps on SIGALRM or SIGCHLD
+       bash allows multiple option arguments when invoked (e.g. -x -v);
+               sh allows only a single option argument (`sh -x -v' attempts
+               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
+               On Solaris 2.4 and earlier versions, sh goes into an infinite
+               loop.)
+       sh exits a script if any builtin fails; bash exits only if one of
+               the POSIX.2 `special' builtins fails
+
+C2)  How does bash differ from the Korn shell, version ksh88?
+
+Things bash has or uses that ksh88 does not:
+       long invocation options
+       [-+]O invocation option
+       -l invocation option
+       `!' reserved word
+       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
+       arithmetic in largest machine-supported size (intmax_t)
+       posix mode and posix conformance
+       command hashing
+       tilde expansion for assignment statements that look like $PATH
+       process substitution with named pipes if /dev/fd is not available
+       the ${!param} indirect parameter expansion operator
+       the ${!param*} prefix expansion operator
+       the ${param:offset[:length]} parameter substring operator
+       the ${param/pat[/string]} parameter pattern substitution operator
+       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
+                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
+                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
+                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
+                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
+                  GROUPS, FUNCNAME, histchars, auto_resume
+       prompt expansion with backslash escapes and command substitution
+       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
+       more extensive and extensible editing and programmable completion
+       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
+                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
+                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
+                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
+                 set -o braceexpand/-o histexpand/-o interactive-comments/
+                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
+                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
+                 typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt,
+                 disown, printf, complete, compgen
+       `!' csh-style history expansion
+       POSIX.2-style globbing character classes
+       POSIX.2-style globbing equivalence classes
+       POSIX.2-style globbing collating symbols
+       egrep-like extended pattern matching operators
+       case-insensitive pattern matching and globbing
+       `**' arithmetic operator to do exponentiation
+       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
+       arrays of unlimited size
+       TMOUT is default timeout for `read' and `select'
+
+Things ksh88 has or uses that bash does not:
+       tracked aliases (alias -t)
+       variables: ERRNO, FPATH, EDITOR, VISUAL
+       co-processes (|&, >&p, <&p)
+       weirdly-scoped functions
+       typeset +f to list all function names without definitions
+       text of command history kept in a file, not memory
+       builtins: alias -x, cd old new, fc -e -, newgrp, print,
+                 read -p/-s/var?prompt, set -A/-o gmacs/
+                 -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s,
+                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
+       using environment to pass attributes of exported variables
+       arithmetic evaluation done on arguments to some builtins
+       reads .profile from $PWD when invoked as login shell
+
+Implementation differences:
+       ksh runs last command of a pipeline in parent shell context
+       bash has brace expansion by default (ksh88 compile-time option)
+       bash has fixed startup file for all interactive shells; ksh reads $ENV
+       bash has exported functions
+       bash command search finds functions before builtins
+       bash waits for all commands in pipeline to exit before returning status
+       emacs-mode editing has some slightly different key bindings
+
+C3)  Which new features in ksh-93 are not in bash, and which are?
+
+New things in ksh-93 not in bash-2.05b:
+       associative arrays
+       floating point arithmetic and variables
+       math library functions
+       ${!name[sub]} name of subscript for associative array
+       `.' is allowed in variable names to create a hierarchical namespace
+       more extensive compound assignment syntax
+       discipline functions
+       `sleep' and `getconf' builtins (bash has loadable versions)
+       typeset -n and `nameref' variables
+       KEYBD trap
+       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
+                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
+       backreferences in pattern matching (\N)
+       `&' operator in pattern lists for matching
+       print -f (bash uses printf)
+       `fc' has been renamed to `hist'
+       `.' can execute shell functions
+       exit statuses between 0 and 255
+       set -o pipefail
+       `+=' variable assignment operator
+       FPATH and PATH mixing
+       getopts -a
+       -I invocation option
+       DEBUG trap now executed before each simple command, instead of after
+       printf %H, %P, %T, %Z modifiers, output base for %d
+       lexical scoping for local variables in `ksh' functions
+       no scoping for local variables in `POSIX' functions
+
+New things in ksh-93 present in bash-2.05b:
+       [n]<&word- and [n]>&word- redirections (combination dup and close)
+        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
+        ?:, ++, --, `expr1 , expr2' arithmetic operators
+       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
+                   ${!param*}
+       compound array assignment
+       the `!' reserved word
+       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
+       `command', `builtin', `disown' builtins
+       new $'...' and $"..." quoting
+       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
+       set -o notify/-C
+       changes to kill builtin
+       read -A (bash uses read -a)
+        read -t/-d
+       trap -p
+       exec -c/-a
+       `.' restores the positional parameters when it completes
+       POSIX.2 `test'
+       umask -S
+       unalias -a
+       command and arithmetic substitution performed on PS1, PS4, and ENV
+       command name completion
+       ENV processed only for interactive shells
+
+Section D:  Why does bash do some things differently than other Unix shells?
+
+D1) Why does bash run a different version of `command' than
+    `which command' says it will?
+
+On many systems, `which' is actually a csh script that assumes
+you're running csh.  In tcsh, `which' and its cousin `where'
+are builtins.  On other Unix systems, `which' is a perl script
+that uses the PATH environment variable.
+
+The csh script version reads the csh startup files from your
+home directory and uses those to determine which `command' will
+be invoked.  Since bash doesn't use any of those startup files,
+there's a good chance that your bash environment differs from
+your csh environment.  The bash `type' builtin does everything
+`which' does, and will report correct results for the running
+shell.  If you're really wedded to the name `which', try adding
+the following function definition to your .bashrc:
+
+       which()
+       {
+               builtin type "$@"
+       }
+
+If you're moving from tcsh and would like to bring `where' along
+as well, use this function:
+
+       where()
+       {
+               builtin type -a "$@"
+       }
+
+D2) Why doesn't bash treat brace expansions exactly like csh?
+
+The only difference between bash and csh brace expansion is that
+bash requires a brace expression to contain at least one unquoted
+comma if it is to be expanded.  Any brace-surrounded word not
+containing an unquoted comma is left unchanged by the brace
+expansion code.  This affords the greatest degree of sh
+compatibility. 
+
+Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
+
+D3) Why doesn't bash have csh variable modifiers?
+
+Posix has specified a more powerful, albeit somewhat more cryptic,
+mechanism cribbed from ksh, and bash implements it.
+
+${parameter%word}
+        Remove smallest suffix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        smallest portion of the suffix matched by the pattern deleted.
+
+        x=file.c
+        echo ${x%.c}.o
+        -->file.o
+
+${parameter%%word}
+
+        Remove largest suffix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        largest portion of the suffix matched by the pattern deleted.
+
+        x=posix/src/std
+        echo ${x%%/*}
+        -->posix
+
+${parameter#word}
+        Remove smallest prefix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        smallest portion of the prefix matched by the pattern deleted.
+
+        x=$HOME/src/cmd
+        echo ${x#$HOME}
+        -->/src/cmd
+
+${parameter##word}
+        Remove largest prefix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        largest portion of the prefix matched by the pattern deleted.
+
+        x=/one/two/three
+        echo ${x##*/}
+        -->three
+
+
+Given
+       a=/a/b/c/d
+       b=b.xxx
+
+       csh                     bash            result
+       ---                     ----            ------
+       $a:h                    ${a%/*}            /a/b/c
+       $a:t                    ${a##*/}           d
+       $b:r                    ${b%.*}            b
+       $b:e                    ${b##*.}           xxx
+
+
+D4) How can I make my csh aliases work when I convert to bash?
+
+Bash uses a different syntax to support aliases than csh does. 
+The details can be found in the documentation.  We have provided
+a shell script which does most of the work of conversion for you;
+this script can be found in ./examples/misc/aliasconv.sh.  Here is
+how you use it:
+  
+Start csh in the normal way for you.  (e.g., `csh')
+  
+Pipe the output of `alias' through `aliasconv.sh', saving the
+results into `bash_aliases':
+  
+       alias | bash aliasconv.sh >bash_aliases
+  
+Edit `bash_aliases', carefully reading through any created
+functions.  You will need to change the names of some csh specific
+variables to the bash equivalents.  The script converts $cwd to
+$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
+to $PS1.  You may also have to add quotes to avoid unwanted
+expansion.
+
+For example, the csh alias:
+  
+       alias cd 'cd \!*; echo $cwd'
+  
+is converted to the bash function:
+
+       cd () { command cd "$@"; echo $PWD ; }
+
+The only thing that needs to be done is to quote $PWD:
+  
+       cd () { command cd "$@"; echo "$PWD" ; }
+  
+Merge the edited file into your ~/.bashrc.
+
+There is an additional, more ambitious, script in
+examples/misc/cshtobash that attempts to convert your entire csh
+environment to its bash equivalent.  This script can be run as
+simply `cshtobash' to convert your normal interactive
+environment, or as `cshtobash ~/.login' to convert your login
+environment. 
+
+D5) How can I pipe standard output and standard error from one command to
+    another, like csh does with `|&'?
+
+Use
+       command 2>&1 | command2
+
+The key is to remember that piping is performed before redirection, so
+file descriptor 1 points to the pipe when it is duplicated onto file
+descriptor 2.
+
+D6) Now that I've converted from ksh to bash, are there equivalents to
+    ksh features like autoloaded functions and the `whence' command?
+
+There are features in ksh-88 and ksh-93 that do not have direct bash
+equivalents.  Most, however, can be emulated with very little trouble.
+
+ksh-88 feature         Bash equivalent
+--------------         ---------------
+compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
+                       bash builtins (hash, history, type)
+coprocesses            named pipe pairs (one for read, one for write)
+typeset +f             declare -F
+cd, print, whence      function substitutes in examples/functions/kshenv
+autoloaded functions   examples/functions/autoload is the same as typeset -fu
+read var?prompt                read -p prompt var
+
+ksh-93 feature         Bash equivalent
+--------------         ---------------
+sleep, getconf         Bash has loadable versions in examples/loadables
+${.sh.version}         $BASH_VERSION
+print -f               printf
+hist                   alias hist=fc
+$HISTEDIT              $FCEDIT
+
+Section E:  How can I get bash to do certain things, and why does bash do
+           things the way it does?
+
+E1) Why is the bash builtin `test' slightly different from /bin/test?
+
+The specific example used here is [ ! x -o x ], which is false.
+
+Bash's builtin `test' implements the Posix.2 spec, which can be
+summarized as follows (the wording is due to David Korn):
+   
+Here is the set of rules for processing test arguments.
+  
+    0 Args: False
+    1 Arg:  True iff argument is not null.
+    2 Args: If first arg is !, True iff second argument is null.
+           If first argument is unary, then true if unary test is true
+           Otherwise error.
+    3 Args: If second argument is a binary operator, do binary test of $1 $3
+           If first argument is !, negate two argument test of $2 $3
+           If first argument is `(' and third argument is `)', do the
+           one-argument test of the second argument.
+           Otherwise error.
+    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
+           Otherwise unspecified
+    5 or more Args: unspecified.  (Historical shells would use their
+    current algorithm).
+   
+The operators -a and -o are considered binary operators for the purpose
+of the 3 Arg case.
+   
+As you can see, the test becomes (not (x or x)), which is false.
+
+E2) Why does bash sometimes say `Broken pipe'?
+
+If a sequence of commands appears in a pipeline, and one of the
+reading commands finishes before the writer has finished, the
+writer receives a SIGPIPE signal.  Many other shells special-case
+SIGPIPE as an exit status in the pipeline and do not report it. 
+For example, in:
+  
+      ps -aux | head
+  
+`head' can finish before `ps' writes all of its output, and ps
+will try to write on a pipe without a reader.  In that case, bash
+will print `Broken pipe' to stderr when ps is killed by a
+SIGPIPE. 
+
+You can build a version of bash that will not report SIGPIPE errors
+by uncommenting the definition of DONT_REPORT_SIGPIPE in the file
+config-top.h.
+
+E3) When I have terminal escape sequences in my prompt, why does bash
+    wrap lines at the wrong column?
+
+Readline, the line editing library that bash uses, does not know
+that the terminal escape sequences do not take up space on the
+screen.  The redisplay code assumes, unless told otherwise, that
+each character in the prompt is a `printable' character that
+takes up one character position on the screen. 
+
+You can use the bash prompt expansion facility (see the PROMPTING
+section in the manual page) to tell readline that sequences of
+characters in the prompt strings take up no screen space. 
+
+Use the \[ escape to begin a sequence of non-printing characters,
+and the \] escape to signal the end of such a sequence. 
+
+E4) If I pipe the output of a command into `read variable', why doesn't
+    the output show up in $variable when the read command finishes?
+
+This has to do with the parent-child relationship between Unix
+processes.  It affects all commands run in pipelines, not just
+simple calls to `read'.  For example, piping a command's output
+into a `while' loop that repeatedly calls `read' will result in
+the same behavior.
+
+Each element of a pipeline runs in a separate process, a child of
+the shell running the pipeline.  A subprocess cannot affect its
+parent's environment.  When the `read' command sets the variable
+to the input, that variable is set only in the subshell, not the
+parent shell.  When the subshell exits, the value of the variable
+is lost. 
+
+Many pipelines that end with `read variable' can be converted
+into command substitutions, which will capture the output of
+a specified command.  The output can then be assigned to a
+variable:
+
+       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
+
+can be converted into
+
+       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
+
+This does not, unfortunately, work to split the text among
+multiple variables, as read does when given multiple variable
+arguments.  If you need to do this, you can either use the
+command substitution above to read the output into a variable
+and chop up the variable using the bash pattern removal
+expansion operators or use some variant of the following
+approach.
+
+Say /usr/local/bin/ipaddr is the following shell script:
+
+#! /bin/sh
+host `hostname` | awk '/address/ {print $NF}'
+
+Instead of using
+
+       /usr/local/bin/ipaddr | read A B C D
+
+to break the local machine's IP address into separate octets, use
+
+       OIFS="$IFS"
+       IFS=.
+       set -- $(/usr/local/bin/ipaddr)
+       IFS="$OIFS"
+       A="$1" B="$2" C="$3" D="$4"
+
+Beware, however, that this will change the shell's positional
+parameters.  If you need them, you should save them before doing
+this.
+
+This is the general approach -- in most cases you will not need to
+set $IFS to a different value.
+
+Some other user-supplied alternatives include:
+
+read A B C D << HERE
+    $(IFS=.; echo $(/usr/local/bin/ipaddr))
+HERE
+
+and, where process substitution is available,
+
+read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
+
+E5) I have a bunch of shell scripts that use backslash-escaped characters
+    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
+    not, and how can I make it understand them?
+
+This is the behavior of echo on most Unix System V machines.
+
+The bash builtin `echo' is modeled after the 9th Edition
+Research Unix version of `echo'.  It does not interpret
+backslash-escaped characters in its argument strings by default;
+it requires the use of the -e option to enable the
+interpretation.  The System V echo provides no way to disable the
+special characters; the bash echo has a -E option to disable
+them. 
+
+There is a configuration option that will make bash behave like
+the System V echo and interpret things like `\t' by default.  Run
+configure with the --enable-xpg-echo-default option to turn this
+on.  Be aware that this will cause some of the tests run when you
+type `make tests' to fail.
+
+There is a shell option, `xpg_echo', settable with `shopt', that will
+change the behavior of echo at runtime.  Enabling this option turns
+on expansion of backslash-escape sequences.
+
+E6) Why doesn't a while or for loop get suspended when I type ^Z?
+
+This is a consequence of how job control works on Unix.  The only
+thing that can be suspended is the process group.  This is a single
+command or pipeline of commands that the shell forks and executes.
+
+When you run a while or for loop, the only thing that the shell forks
+and executes are any commands in the while loop test and commands in
+the loop bodies.  These, therefore, are the only things that can be
+suspended when you type ^Z.
+
+If you want to be able to stop the entire loop, you need to put it
+within parentheses, which will force the loop into a subshell that
+may be stopped (and subsequently restarted) as a single unit.
+
+E7) What about empty for loops in Makefiles?
+
+It's fairly common to see constructs like this in automatically-generated
+Makefiles:
+
+SUBDIRS = @SUBDIRS@
+
+       ...
+
+subdirs-clean:
+       for d in ${SUBDIRS}; do \
+               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
+       done
+
+When SUBDIRS is empty, this results in a command like this being passed to
+bash:
+
+       for d in ; do
+               ( cd $d && ${MAKE} ${MFLAGS} clean )
+       done
+
+In versions of bash before bash-2.05a, this was a syntax error.  If the
+reserved word `in' was present, a word must follow it before the semicolon
+or newline.  The language in the manual page referring to the list of words
+being empty referred to the list after it is expanded.  These versions of
+bash required that there be at least one word following the `in' when the
+construct was parsed.
+
+The idiomatic Makefile solution is something like:
+
+SUBDIRS = @SUBDIRS@
+
+subdirs-clean:
+       subdirs=$SUBDIRS ; for d in $$subdirs; do \
+               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
+       done
+
+The latest drafts of the updated POSIX standard have changed this:  the
+word list is no longer required.  Bash versions 2.05a and later accept
+the new syntax.
+
+E8) Why does the arithmetic evaluation code complain about `08'?
+
+The bash arithmetic evaluation code (used for `let', $(()), (()), and in
+other places), interprets a leading `0' in numeric constants as denoting
+an octal number, and a leading `0x' as denoting hexadecimal.  This is
+in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
+arithmetic constants should be handled as signed long integers as defined
+by the ANSI/ISO C standard.
+
+The POSIX.2 interpretation committee has confirmed this:
+
+http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
+
+E9) Why does the pattern matching expression [A-Z]* match files beginning
+    with every letter except `z'?
+
+Bash-2.03, Bash-2.05 and later versions honor the current locale setting
+when processing ranges within pattern matching bracket expressions ([A-Z]). 
+This is what POSIX.2 and SUSv3/XPG6 specify. 
+
+The behavior of the matcher in bash-2.05 and later versions depends on the
+current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
+result in the traditional behavior ([A-Z] matches all uppercase ASCII
+characters).  Many other locales, including the en_US locale (the default
+on many US versions of Linux) collate the upper and lower case letters like
+this:
+
+       AaBb...Zz
+
+which means that [A-Z] matches every letter except `z'.  Others collate like
+
+       aAbBcC...zZ
+
+which means that [A-Z] matches every letter except `a'.
+
+The portable way to specify upper case letters is [:upper:] instead of
+A-Z; lower case may be specified as [:lower:] instead of a-z.
+
+Look at the manual pages for setlocale(3), strcoll(3), and, if it is
+present, locale(1).  If you have locale(1), you can use it to find
+your current locale information even if you do not have any of the
+LC_ variables set.
+
+My advice is to put
+
+       export LC_COLLATE=C
+
+into /etc/profile and inspect any shell scripts run from cron for
+constructs like [A-Z].  This will prevent things like
+
+       rm [A-Z]*
+
+from removing every file in the current directory except those beginning
+with `z' and still allow individual users to change the collation order.
+Users may put the above command into their own profiles as well, of course.
+
+E10) Why does `cd //' leave $PWD as `//'?
+
+POSIX.2, in its description of `cd', says that *three* or more leading
+slashes may be replaced with a single slash when canonicalizing the
+current working directory.
+
+This is, I presume, for historical compatibility.  Certain versions of
+Unix, and early network file systems, used paths of the form
+//hostname/path to access `path' on server `hostname'.
+
+E11) If I resize my xterm while another program is running, why doesn't bash
+     notice the change?
+
+This is another issue that deals with job control.
+
+The kernel maintains a notion of a current terminal process group.  Members
+of this process group (processes whose process group ID is equal to the
+current terminal process group ID) receive terminal-generated signals like
+SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
+man page.)
+
+If a terminal is resized, the kernel sends SIGWINCH to each member of
+the terminal's current process group (the `foreground' process group).
+
+When bash is running with job control enabled, each pipeline (which may be
+a single command) is run in its own process group, different from bash's
+process group.  This foreground process group receives the SIGWINCH; bash
+does not.  Bash has no way of knowing that the terminal has been resized.
+
+There is a `checkwinsize' option, settable with the `shopt' builtin, that
+will cause bash to check the window size and adjust its idea of the
+terminal's dimensions each time a process stops or exits and returns control
+of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
+
+Section F:  Things to watch out for on certain Unix versions
+
+F1) Why can't I use command line editing in my `cmdtool'?
+
+The problem is `cmdtool' and bash fighting over the input.  When
+scrolling is enabled in a cmdtool window, cmdtool puts the tty in
+`raw mode' to permit command-line editing using the mouse for
+applications that cannot do it themselves.  As a result, bash and
+cmdtool each try to read keyboard input immediately, with neither
+getting enough of it to be useful.
+
+This mode also causes cmdtool to not implement many of the
+terminal functions and control sequences appearing in the
+`sun-cmd' termcap entry.  For a more complete explanation, see
+that file examples/suncmd.termcap in the bash distribution. 
+
+`xterm' is a better choice, and gets along with bash much more
+smoothly.
+
+If you must use cmdtool, you can use the termcap description in
+examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
+description contained in that file, i.e.
+
+TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
+
+Then export TERMCAP and start a new cmdtool window from that shell.
+The bash command-line editing should behave better in the new
+cmdtool.  If this works, you can put the assignment to TERMCAP
+in your bashrc file.
+
+F2) I built bash on Solaris 2.  Why do globbing expansions and filename
+    completion chop off the first few characters of each filename?
+
+This is the consequence of building bash on SunOS 5 and linking
+with the libraries in /usr/ucblib, but using the definitions
+and structures from files in /usr/include. 
+
+The actual conflict is between the dirent structure in
+/usr/include/dirent.h and the struct returned by the version of
+`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
+
+Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
+when configuring and building bash.  This will ensure that you
+use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
+link with libc before libucb. 
+
+If you have installed the Sun C compiler, you may also need to
+put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
+/usr/ucb.
+
+F3) Why does bash dump core after I interrupt username completion or
+    `~user' tilde expansion on a machine running NIS?
+
+This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
+client library, which is part of libc.
+
+The YP library code keeps static state -- a pointer into the data
+returned from the server.  When YP initializes itself (setpwent),
+it looks at this pointer and calls free on it if it's non-null. 
+So far, so good. 
+
+If one of the YP functions is interrupted during getpwent (the
+exact function is interpretwithsave()), and returns NULL, the
+pointer is freed without being reset to NULL, and the function
+returns.  The next time getpwent is called, it sees that this
+pointer is non-null, calls free, and the bash free() blows up
+because it's being asked to free freed memory. 
+
+The traditional Unix mallocs allow memory to be freed multiple
+times; that's probably why this has never been fixed.  You can
+run configure with the `--without-gnu-malloc' option to use
+the C library malloc and avoid the problem.
+
+F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
+
+The `@' character is the default `line kill' character in most
+versions of System V, including SVR4.2.  You can change this
+character to whatever you want using `stty'.  For example, to
+change the line kill character to control-u, type
+
+       stty kill ^U
+
+where the `^' and `U' can be two separate characters.
+
+F5) Why does bash report syntax errors when my C News scripts use a
+    redirection before a subshell command?
+
+The actual command in question is something like
+
+       < file ( command )
+
+According to the grammar given in the POSIX.2 standard, this construct
+is, in fact, a syntax error.  Redirections may only precede `simple
+commands'.  A subshell construct such as the above is one of the shell's
+`compound commands'.  A redirection may only follow a compound command.
+
+This affects the mechanical transformation of commands that use `cat'
+to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
+comp.unix.shell).  While most commands of the form
+
+       cat file | command
+
+can be converted to `< file command', shell control structures such as
+loops and subshells require `command < file'.
+
+The file CWRU/sh-redir-hack in the bash-2.05a distribution is an
+(unofficial) patch to parse.y that will modify the grammar to
+support this construct.  It will not apply with `patch'; you must
+modify parse.y by hand.  Note that if you apply this, you must
+recompile with -DREDIRECTION_HACK.  This introduces a large
+number of reduce/reduce conflicts into the shell grammar. 
+
+F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
+
+The short answer is that Red Hat screwed up.
+
+The long answer is that they shipped an /etc/inputrc that only works
+for emacs mode editing, and then screwed all the vi users by setting
+INPUTRC to /etc/inputrc in /etc/profile.
+
+The short fix is to do one of the following: remove or rename
+/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
+but make sure you export it if you do), remove the assignment to
+INPUTRC from /etc/profile, add
+
+        set keymap emacs
+
+to the beginning of /etc/inputrc, or bracket the key bindings in
+/etc/inputrc with these lines
+
+       $if mode=emacs
+               [...]
+       $endif
+
+F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
+    HP/UX 11.x?
+
+HP/UX's support for long double is imperfect at best.
+
+GCC will support it without problems, but the HP C library functions
+like strtold(3) and printf(3) don't actually work with long doubles.
+HP implemented a `long_double' type as a 4-element array of 32-bit
+ints, and that is what the library functions use.  The ANSI C
+`long double' type is a 128-bit floating point scalar.
+
+The easiest fix, until HP fixes things up, is to edit the generated
+config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
+the compilation should complete successfully.
+
+Section G:  How can I get bash to do certain common things?
+
+G1) How can I get bash to read and display eight-bit characters?
+
+This is a process requiring several steps.
+
+First, you must ensure that the `physical' data path is a full eight
+bits.  For xterms, for example, the `vt100' resources `eightBitInput'
+and `eightBitOutput' should be set to `true'.
+
+Once you have set up an eight-bit path, you must tell the kernel and
+tty driver to leave the eighth bit of characters alone when processing
+keyboard input.  Use `stty' to do this:
+
+       stty cs8 -istrip -parenb
+
+For old BSD-style systems, you can use
+
+       stty pass8
+
+You may also need
+
+       stty even odd
+
+Finally, you need to tell readline that you will be inputting and
+displaying eight-bit characters.  You use readline variables to do
+this.  These variables can be set in your .inputrc or using the bash
+`bind' builtin.  Here's an example using `bind':
+
+       bash$ bind 'set convert-meta off'
+       bash$ bind 'set meta-flag on'
+       bash$ bind 'set output-meta on'
+
+The `set' commands between the single quotes may also be placed
+in ~/.inputrc.
+
+G2) How do I write a function `x' to replace builtin command `x', but
+    still invoke the command from within the function?
+
+This is why the `command' and `builtin' builtins exist.  The
+`command' builtin executes the command supplied as its first
+argument, skipping over any function defined with that name.  The
+`builtin' builtin executes the builtin command given as its first
+argument directly. 
+
+For example, to write a function to replace `cd' that writes the
+hostname and current directory to an xterm title bar, use
+something like the following:
+
+       cd()
+       {
+               builtin cd "$@" && xtitle "$HOST: $PWD"
+       }
+
+This could also be written using `command' instead of `builtin';
+the version above is marginally more efficient. 
+
+G3) How can I find the value of a shell variable whose name is the value
+    of another shell variable?
+
+Versions of Bash newer than Bash-2.0 support this directly.  You can use 
+
+       ${!var}
+
+For example, the following sequence of commands will echo `z':
+
+       var1=var2
+       var2=z
+       echo ${!var1}
+
+For sh compatibility, use the `eval' builtin.  The important
+thing to remember is that `eval' expands the arguments you give
+it again, so you need to quote the parts of the arguments that
+you want `eval' to act on. 
+
+For example, this expression prints the value of the last positional
+parameter:
+
+       eval echo \"\$\{$#\}\"
+
+The expansion of the quoted portions of this expression will be
+deferred until `eval' runs, while the `$#' will be expanded
+before `eval' is executed.  In versions of bash later than bash-2.0,
+
+       echo ${!#}
+
+does the same thing.
+
+This is not the same thing as ksh93 `nameref' variables, though the syntax
+is similar.  I may add namerefs in a future bash version.
+
+G4) How can I make the bash `time' reserved word print timing output that
+     looks like the output from my system's /usr/bin/time?
+
+The bash command timing code looks for a variable `TIMEFORMAT' and
+uses its value as a format string to decide how to display the
+timing statistics.
+
+The value of TIMEFORMAT is a string with `%' escapes expanded in a
+fashion similar in spirit to printf(3).  The manual page explains
+the meanings of the escape sequences in the format string.
+
+If TIMEFORMAT is not set, bash acts as if the following assignment had
+been performed:
+
+       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
+
+The POSIX.2 default time format (used by `time -p command') is
+
+       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
+
+The BSD /usr/bin/time format can be emulated with:
+
+       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
+
+The System V /usr/bin/time format can be emulated with:
+
+       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
+
+The ksh format can be emulated with:
+
+       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
+
+G5) How do I get the current directory into my prompt?
+
+Bash provides a number of backslash-escape sequences which are expanded
+when the prompt string (PS1 or PS2) is displayed.  The full list is in
+the manual page.
+
+The \w expansion gives the full pathname of the current directory, with
+a tilde (`~') substituted for the current value of $HOME.  The \W
+expansion gives the basename of the current directory.  To put the full
+pathname of the current directory into the path without any tilde
+subsitution, use $PWD.  Here are some examples:
+
+       PS1='\w$ '      # current directory with tilde
+       PS1='\W$ '      # basename of current directory
+       PS1='$PWD$ '    # full pathname of current directory
+
+The single quotes are important in the final example to prevent $PWD from
+being expanded when the assignment to PS1 is performed.
+
+G6) How can I rename "*.foo" to "*.bar"?
+
+Use the pattern removal functionality described in D3.  The following `for'
+loop will do the trick:
+
+       for f in *.foo; do
+               mv $f ${f%foo}bar
+       done
+
+G7) How can I translate a filename from uppercase to lowercase?
+
+The script examples/functions/lowercase, originally written by John DuBois,
+will do the trick.  The converse is left as an exercise.
+
+G8) How can I write a filename expansion (globbing) pattern that will match
+    all files in the current directory except "." and ".."?
+
+You must have set the `extglob' shell option using `shopt -s extglob' to use
+this:
+
+       echo .!(.|) *
+
+A solution that works without extended globbing is given in the Unix Shell
+FAQ, posted periodically to comp.unix.shell.
+
+Section H:  Where do I go from here?
+
+H1) How do I report bugs in bash, and where should I look for fixes and
+    advice?
+
+Use the `bashbug' script to report bugs.  It is built and
+installed at the same time as bash.  It provides a standard
+template for reporting a problem and automatically includes
+information about your configuration and build environment. 
+
+`bashbug' sends its reports to bug-bash@gnu.org, which
+is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
+
+Bug fixes, answers to questions, and announcements of new releases
+are all posted to gnu.bash.bug.  Discussions concerning bash features
+and problems also take place there.
+
+To reach the bash maintainers directly, send mail to
+bash-maintainers@gnu.org.
+
+H2) What kind of bash documentation is there?
+
+First, look in the doc directory in the bash distribution.  It should
+contain at least the following files:
+
+bash.1         an extensive, thorough Unix-style manual page
+builtins.1     a manual page covering just bash builtin commands
+bashref.texi   a reference manual in GNU tex`info format
+bashref.info   an info version of the reference manual
+FAQ            this file
+article.ms     text of an article written for The Linux Journal
+readline.3     a man page describing readline
+
+Postscript, HTML, and ASCII files created from the above source are
+available in the documentation distribution.
+
+There is additional documentation available for anonymous FTP from host
+ftp.cwru.edu in the `pub/bash' directory.
+
+Cameron Newham and Bill Rosenblatt have written a book on bash, published
+by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
+Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
+is 1-56592-147-X.  Look for it in fine bookstores near you.  This book
+covers bash-1.14, but has an appendix describing some of the new features
+in bash-2.0.  
+
+A second edition of this book is available, published in January, 1998.
+The ISBN number is 1-56592-347-2.  Look for it in the same fine bookstores
+or on the web.
+
+The GNU Bash Reference Manual has been published as a printed book by
+Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003).  It covers
+bash-2.0 and is available from most online bookstores (see
+http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
+will donate $1 to the Free Software Foundation for each copy sold. 
+
+H3) What's coming in future versions?
+
+These are features I hope to include in a future version of bash.
+
+a better bash debugger (a minimally-tested version is included with bash-2.05b)
+associative arrays
+co-processes, but with a new-style syntax that looks like function declaration
+
+H4) What's on the bash `wish list' for future versions?
+
+These are features that may or may not appear in a future version of bash.
+
+breaking some of the shell functionality into embeddable libraries
+a module system like zsh's, using dynamic loading like builtins
+better internationalization using GNU `gettext'
+date-stamped command history
+a bash programmer's guide with a chapter on creating loadable builtins
+a better loadable interface to perl with access to the shell builtins and
+       variables (contributions gratefully accepted)
+ksh93-like `nameref' variables
+ksh93-like `+=' variable assignment operator
+ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
+       associated disipline functions
+Some of the new ksh93 pattern matching operators, like backreferencing
+
+H5) When will the next release appear?
+
+The next version will appear sometime in 2002.  Never make predictions. 
+
+
+This document is Copyright 1995-2003 by Chester Ramey.
+
+Permission is hereby granted, without written agreement and
+without license or royalty fees, to use, copy, and distribute
+this document for any purpose, provided that the above copyright
+notice appears in all copies of this document and that the
+contents of this document remain unaltered.
diff --git a/doc/FAQ.save b/doc/FAQ.save
new file mode 100644 (file)
index 0000000..1cff3c8
--- /dev/null
@@ -0,0 +1,1745 @@
+This is the Bash FAQ, version 3.24, for Bash version 2.05b.
+
+This document contains a set of frequently-asked questions concerning
+Bash, the GNU Bourne-Again Shell.  Bash is a freely-available command
+interpreter with advanced features for both interactive use and shell
+programming.
+
+Another good source of basic information about shells is the collection
+of FAQ articles periodically posted to comp.unix.shell.
+
+Questions and comments concerning this document should be sent to
+chet@po.cwru.edu.
+
+This document is available for anonymous FTP with the URL
+
+ftp://ftp.cwru.edu/pub/bash/FAQ
+
+The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
+
+----------
+Contents:
+
+Section A:  The Basics
+
+A1) What is it?
+A2) What's the latest version?
+A3) Where can I get it?
+A4) On what machines will bash run?
+A5) Will bash run on operating systems other than Unix?
+A6) How can I build bash with gcc?
+A7) How can I make bash my login shell?
+A8) I just changed my login shell to bash, and now I can't FTP into my
+    machine.  Why not?
+A9) What's the `POSIX 1003.2 standard'?
+A10) What is the bash `posix mode'?
+
+Section B:  The latest version
+
+B1) What's new in version 2.05b?
+B2) Are there any user-visible incompatibilities between bash-2.05b and
+    bash-1.14.7?
+
+Section C:  Differences from other Unix shells
+
+C1) How does bash differ from sh, the Bourne shell?
+C2) How does bash differ from the Korn shell, version ksh88?
+C3) Which new features in ksh-93 are not in bash, and which are?
+
+Section D:  Why does bash do some things differently than other Unix shells?
+
+D1) Why does bash run a different version of `command' than
+    `which command' says it will?
+D2) Why doesn't bash treat brace expansions exactly like csh?
+D3) Why doesn't bash have csh variable modifiers?
+D4) How can I make my csh aliases work when I convert to bash?
+D5) How can I pipe standard output and standard error from one command to
+    another, like csh does with `|&'?
+D6) Now that I've converted from ksh to bash, are there equivalents to
+    ksh features like autoloaded functions and the `whence' command?
+
+Section E:  Why does bash do certain things the way it does?
+
+E1) Why is the bash builtin `test' slightly different from /bin/test?
+E2) Why does bash sometimes say `Broken pipe'?
+E3) When I have terminal escape sequences in my prompt, why does bash
+    wrap lines at the wrong column?
+E4) If I pipe the output of a command into `read variable', why doesn't
+    the output show up in $variable when the read command finishes?
+E5) I have a bunch of shell scripts that use backslash-escaped characters
+    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
+    not, and how can I make it understand them?
+E6) Why doesn't a while or for loop get suspended when I type ^Z?
+E7) What about empty for loops in Makefiles?
+E8) Why does the arithmetic evaluation code complain about `08'?
+E9) Why does the pattern matching expression [A-Z]* match files beginning
+    with every letter except `z'?
+E10) Why does `cd //' leave $PWD as `//'?
+E11) If I resize my xterm while another program is running, why doesn't bash
+     notice the change?
+
+Section F:  Things to watch out for on certain Unix versions
+
+F1) Why can't I use command line editing in my `cmdtool'?
+F2) I built bash on Solaris 2.  Why do globbing expansions and filename
+    completion chop off the first few characters of each filename?
+F3) Why does bash dump core after I interrupt username completion or
+    `~user' tilde expansion on a machine running NIS?
+F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
+F5) Why does bash report syntax errors when my C News scripts use a
+    redirection before a subshell command?
+F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
+F7) Why do bash-2.05a and  bash-2.05b fail to compile `printf.def' on
+    HP/UX 11.x?
+
+Section G:  How can I get bash to do certain common things?
+
+G1) How can I get bash to read and display eight-bit characters?
+G2) How do I write a function `x' to replace builtin command `x', but
+    still invoke the command from within the function?
+G3) How can I find the value of a shell variable whose name is the value
+    of another shell variable?
+G4) How can I make the bash `time' reserved word print timing output that
+    looks like the output from my system's /usr/bin/time?
+G5) How do I get the current directory into my prompt?
+G6) How can I rename "*.foo" to "*.bar"?
+G7) How can I translate a filename from uppercase to lowercase?
+G8) How can I write a filename expansion (globbing) pattern that will match
+    all files in the current directory except "." and ".."?
+
+Section H:  Where do I go from here?
+
+H1) How do I report bugs in bash, and where should I look for fixes and
+    advice?
+H2) What kind of bash documentation is there?
+H3) What's coming in future versions?
+H4) What's on the bash `wish list'?
+H5) When will the next release appear?
+
+----------
+Section A:  The Basics
+
+A1)  What is it?
+
+Bash is a Unix command interpreter (shell).  It is an implementation of
+the Posix 1003.2 shell standard, and resembles the Korn and System V
+shells.
+
+Bash contains a number of enhancements over those shells, both
+for interactive use and shell programming.  Features geared
+toward interactive use include command line editing, command
+history, job control, aliases, and prompt expansion.  Programming
+features include additional variable expansions, shell
+arithmetic, and a number of variables and options to control
+shell behavior.
+
+Bash was originally written by Brian Fox of the Free Software
+Foundation.  The current developer and maintainer is Chet Ramey
+of Case Western Reserve University.
+
+A2)  What's the latest version?
+
+The latest version is 2.05b, first made available on Wednesday, 17
+July, 2002.
+
+A3)  Where can I get it?
+
+Bash is the GNU project's shell, and so is available from the
+master GNU archive site, ftp.gnu.org, and its mirrors.  The
+latest version is also available for FTP from ftp.cwru.edu.
+The following URLs tell how to get version 2.05b:
+
+ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz
+ftp://ftp.cwru.edu/pub/bash/bash-2.05b.tar.gz
+
+Formatted versions of the documentation are available with the URLs:
+
+ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05b.tar.gz
+ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05b.tar.gz
+
+A4)  On what machines will bash run?
+
+Bash has been ported to nearly every version of UNIX.  All you
+should have to do to build it on a machine for which a port
+exists is to type `configure' and then `make'.  The build process
+will attempt to discover the version of UNIX you have and tailor
+itself accordingly, using a script created by GNU autoconf.
+
+More information appears in the file `INSTALL' in the distribution.
+
+The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html)
+explains how to obtain binary versions of bash for most of the major
+commercial Unix systems.
+
+A5) Will bash run on operating systems other than Unix?
+
+Configuration specifics for Unix-like systems such as QNX and
+LynxOS are included in the distribution.  Bash-2.05 and later
+versions should compile and run on Minix 2.0 (patches were
+contributed), but I don't believe anyone has built bash-2.x on
+earlier Minix versions yet. 
+
+Bash has been ported to versions of Windows implementing the Win32
+programming interface.  This includes Windows 95 and Windows NT.
+The port was done by Cygnus Solutions as part of their CYGWIN
+project.  For more information about the project, look at the URLs
+
+http://www.cygwin.com/
+http://sourceware.cygnus.com/cygwin
+
+Cygnus originally ported bash-1.14.7, and that port was part of their
+early GNU-Win32 (the original name) releases.  Cygnus has also done a
+port of bash-2.05 to the CYGWIN environment, and it is available as
+part of their current release.
+
+Bash-2.05b should require no local Cygnus changes to build and run under
+CYGWIN.
+
+The Cygnus port works only on Intel machines.  There is a port of bash
+(I don't know which version) to the alpha/NT environment available from
+
+ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz
+
+DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part
+of the DJGPP project.  For more information on the project, see
+
+http://www.delorie.com/djgpp/
+
+I have been told that the original DJGPP port was done by Daisuke Aoyama.
+
+Mark Elbrecht <snowball3@bigfoot.com> has sent me notice that bash-2.04
+is available for DJGPP V2.  The files are available as:
+
+ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary
+ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation
+ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source
+
+Mark has begun to work with bash-2.05, but I don't know the status.
+
+Ports of bash-1.12 and bash-2.0 are available for OS/2 from
+
+ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip
+ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip
+
+I haven't looked at either, but the second appears to be a binary-only
+distribution.  Beware.
+
+I have received word that Bash (I'm not sure which version, but I
+believe that it's at least bash-2.02.1) is the standard shell on
+BeOS.
+
+A6) How can I build bash with gcc? 
+
+Bash configures to use gcc by default if it is available.  Read the
+file INSTALL in the distribution for more information.
+
+A7)  How can I make bash my login shell?
+
+Some machines let you use `chsh' to change your login shell.  Other
+systems use `passwd -s' or `passwd -e'.  If one of these works for
+you, that's all you need.  Note that many systems require the full
+pathname to a shell to appear in /etc/shells before you can make it
+your login shell.  For this, you may need the assistance of your
+friendly local system administrator. 
+
+If you cannot do this, you can still use bash as your login shell, but
+you need to perform some tricks.  The basic idea is to add a command
+to your login shell's startup file to replace your login shell with
+bash.
+
+For example, if your login shell is csh or tcsh, and you have installed
+bash in /usr/gnu/bin/bash, add the following line to ~/.login:
+
+       if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login
+
+(the `--login' tells bash that it is a login shell).
+
+It's not a good idea to put this command into ~/.cshrc, because every
+csh you run without the `-f' option, even ones started to run csh scripts,
+reads that file.  If you must put the command in ~/.cshrc, use something
+like
+
+       if ( $?prompt ) exec /usr/gnu/bin/bash --login
+
+to ensure that bash is exec'd only when the csh is interactive.
+
+If your login shell is sh or ksh, you have to do two things.
+
+First, create an empty file in your home directory named `.bash_profile'.
+The existence of this file will prevent the exec'd bash from trying to
+read ~/.profile, and re-execing itself over and over again.  ~/.bash_profile
+is the first file bash tries to read initialization commands from when
+it is invoked as a login shell.
+
+Next, add a line similar to the above to ~/.profile:
+
+       [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \
+               exec /usr/gnu/bin/bash --login
+
+This will cause login shells to replace themselves with bash running as
+a login shell.  Once you have this working, you can copy your initialization
+code from ~/.profile to ~/.bash_profile.
+
+I have received word that the recipe supplied above is insufficient for
+machines running CDE.  CDE has a maze of twisty little startup files, all
+slightly different.
+
+If you cannot change your login shell in the password file to bash, you
+will have to (apparently) live with CDE using the shell in the password
+file to run its startup scripts.  If you have changed your shell to bash,
+there is code in the CDE startup files (on Solaris, at least) that attempts
+to do the right thing.  It is, however, often broken, and may require that
+you use the $BASH_ENV trick described below.
+
+`dtterm' claims to use $SHELL as the default program to start, so if you
+can change $SHELL in the CDE startup files, you should be able to use bash
+in your terminal windows.
+
+Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program
+to read your login shell's startup files.  You may be able to use bash for
+the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as
+well, but I have not tried this.
+
+You can use the above `exec' recipe to start bash when not logging in with
+CDE by testing the value of the DT variable:
+
+       if [ -n "$DT" ]; then
+               [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login
+       fi
+
+If CDE starts its shells non-interactively during login, the login shell
+startup files (~/.profile, ~/.bash_profile) will not be sourced at login.
+To get around this problem, append a line similar to the following to your
+~/.dtprofile:
+
+       BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV
+
+and add the following line to the beginning of ~/.bash_profile:
+
+       unset BASH_ENV
+
+A8) I just changed my login shell to bash, and now I can't FTP into my
+   machine.  Why not?
+
+You must add the full pathname to bash to the file /etc/shells.  As
+noted in the answer to the previous question, many systems require
+this before you can make bash your login shell. 
+
+Most versions of ftpd use this file to prohibit `special' users
+such as `uucp' and `news' from using FTP. 
+
+A9)  What's the `POSIX 1003.2 standard'?
+
+POSIX is a name originally coined by Richard Stallman for a
+family of open system standards based on UNIX.  There are a
+number of aspects of UNIX under consideration for
+standardization, from the basic system services at the system
+call and C library level to applications and tools to system
+administration and management.  Each area of standardization is
+assigned to a working group in the 1003 series. 
+
+The POSIX Shell and Utilities standard has been developed by IEEE
+Working Group 1003.2 (POSIX.2).  It concentrates on the command
+interpreter interface and utility programs commonly executed from
+the command line or by other programs.  An initial version of the
+standard has been approved and published by the IEEE, and work is
+currently underway to update it. 
+
+Bash is concerned with the aspects of the shell's behavior
+defined by POSIX.2.  The shell command language has of course
+been standardized, including the basic flow control and program
+execution constructs, I/O redirection and pipelining, argument
+handling, variable expansion, and quoting. 
+
+The `special' builtins, which must be implemented as part of the
+shell to provide the desired functionality, are specified as
+being part of the shell; examples of these are `eval' and
+`export'.  Other utilities appear in the sections of POSIX.2 not
+devoted to the shell which are commonly (and in some cases must
+be) implemented as builtin commands, such as `read' and `test'. 
+POSIX.2 also specifies aspects of the shell's interactive
+behavior as part of the UPE, including job control and command
+line editing.  Only vi-style line editing commands have been
+standardized; emacs editing commands were left out due to
+objections.
+
+The Open Group has made an older version of its Single Unix
+Specification (version 2), which is very similar to POSIX.2,
+available on the web at
+
+http://www.opengroup.org/onlinepubs/007908799/
+
+The Single Unix Specification, version 3, is available on the web at
+
+http://www.opengroup.org/onlinepubs/007904975/
+
+A10)  What is the bash `posix mode'?
+
+Although bash is an implementation of the POSIX.2 shell
+specification, there are areas where the bash default behavior
+differs from that spec.  The bash `posix mode' changes the bash
+behavior in these areas so that it obeys the spec more closely. 
+
+Posix mode is entered by starting bash with the --posix or
+'-o posix' option or executing `set -o posix' after bash is running.
+
+The specific aspects of bash which change when posix mode is
+active are listed in the file POSIX in the bash distribution.
+They are also listed in a section in the Bash Reference Manual
+(from which that file is generated).
+
+Section B:  The latest version
+
+B1) What's new in version 2.05b?
+
+The raison d'etre for bash-2.05b is to make a second intermediate
+release containing the first of the new features to be available
+in bash-3.0 and get feedback on those features before proceeding.
+The major new feature is multibyte character support in both Bash
+and Readline.
+
+Bash-2.05b contains the following new features (see the manual page for
+complete descriptions and the CHANGES and NEWS files in the bash-2.05b
+distribution):
+
+o support for multibyte characters has been added to both bash and readline
+
+o the DEBUG trap is now run *before* simple commands, ((...)) commands,
+  [[...]] conditional commands, and for ((...)) loops
+
+o the shell now performs arithmetic in the largest integer size the machine
+  supports (intmax_t)
+
+o there is a new \D{...} prompt expansion; passes the `...' to strftime(3)
+  and inserts the result into the expanded prompt
+
+o there is a new `here-string' redirection operator:  <<< word
+
+o when displaying variables, function attributes and definitions are shown
+  separately, allowing them to be re-used as input (attempting to re-use
+  the old output would result in syntax errors).
+
+o `read' has a new `-u fd' option to read from a specified file descriptor
+
+o the bash debugger in examples/bashdb has been modified to work with the
+  new DEBUG trap semantics, the command set has been made more gdb-like,
+  and the changes to $LINENO make debugging functions work better
+
+o the expansion of $LINENO inside a shell function is only relative to the
+  function start if the shell is interactive -- if the shell is running a
+  script, $LINENO expands to the line number in the script.  This is as
+  POSIX-2001 requires
+
+
+A short feature history dating from Bash-2.0:
+
+Bash-2.05a introduced the following new features:
+
+o The `printf' builtin has undergone major work
+
+o There is a new read-only `shopt' option: login_shell, which is set by
+  login shells and unset otherwise
+
+o New `\A' prompt string escape sequence; expanding to time in 24-hour
+  HH:MM format
+
+o New `-A group/-g' option to complete and compgen; goes group name
+  completion
+
+o New [+-]O invocation option to set and unset `shopt' options at startup
+
+o ksh-like `ERR' trap
+
+o `for' loops now allow empty word lists after the `in' reserved word
+
+o new `hard' and `soft' arguments for the `ulimit' builtin
+
+o Readline can be configured to place the user at the same point on the line
+  when retrieving commands from the history list
+
+o Readline can be configured to skip `hidden' files (filenames with a leading
+  `.' on Unix) when performing completion
+
+Bash-2.05 introduced the following new features:
+
+o This version has once again reverted to using locales and strcoll(3) when
+  processing pattern matching bracket expressions, as POSIX requires. 
+o Added a new `--init-file' invocation argument as a synonym for `--rcfile',
+  per the new GNU coding standards.
+o The /dev/tcp and /dev/udp redirections now accept service names as well as
+  port numbers.
+o `complete' and `compgen' now take a `-o value' option, which controls some
+   of the aspects of that compspec.  Valid values are:
+
+        default - perform bash default completion if programmable
+                  completion produces no matches
+        dirnames - perform directory name completion if programmable
+                   completion produces no matches
+        filenames - tell readline that the compspec produces filenames,
+                    so it can do things like append slashes to
+                    directory names and suppress trailing spaces
+o A new loadable builtin, realpath, which canonicalizes and expands symlinks
+  in pathname arguments.
+o When `set' is called without options, it prints function defintions in a
+  way that allows them to be reused as input.  This affects `declare' and 
+  `declare -p' as well.  This only happens when the shell is not in POSIX
+   mode, since POSIX.2 forbids this behavior.
+
+Bash-2.04 introduced the following new features:
+
+o Programmable word completion with the new `complete' and `compgen' builtins;
+  examples are provided in examples/complete/complete-examples
+o `history' has a new `-d' option to delete a history entry
+o `bind' has a new `-x' option to bind key sequences to shell commands
+o The prompt expansion code has new `\j' and `\l' escape sequences
+o The `no_empty_cmd_completion' shell option, if enabled, inhibits
+  command completion when TAB is typed on an empty line
+o `help' has a new `-s' option to print a usage synopsis
+o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma)
+o New ksh93-style arithmetic for command:
+       for ((expr1 ; expr2; expr3 )); do list; done
+o `read' has new options: `-t', `-n', `-d', `-s'
+o The redirection code handles several filenames specially:  /dev/fd/N,
+  /dev/stdin, /dev/stdout, /dev/stderr
+o The redirection code now recognizes /dev/tcp/HOST/PORT and
+  /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively,
+  to the specified port on the specified host
+o The ${!prefix*} expansion has been implemented
+o A new FUNCNAME variable, which expands to the name of a currently-executing
+  function
+o The GROUPS variable is no longer readonly
+o A new shopt `xpg_echo' variable, to control the behavior of echo with
+  respect to backslash-escape sequences at runtime
+o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned
+
+The version of Readline released with Bash-2.04, Readline-4.1, had several
+new features as well:
+
+o Parentheses matching is always compiled into readline, and controllable
+  with the new `blink-matching-paren' variable
+o The history-search-forward and history-search-backward functions now leave
+  point at the end of the line when the search string is empty, like
+  reverse-search-history, and forward-search-history
+o A new function for applications:  rl_on_new_line_with_prompt()
+o New variables for applications:  rl_already_prompted, and rl_gnu_readline_p
+
+
+Bash-2.03 had very few new features, in keeping with the convention
+that odd-numbered releases provide mainly bug fixes.  A number of new
+features were added to Readline, mostly at the request of the Cygnus
+folks.
+
+A new shopt option, `restricted_shell', so that startup files can test
+       whether or not the shell was started in restricted mode
+Filename generation is now performed on the words between ( and ) in
+       compound array assignments (this is really a bug fix)
+OLDPWD is now auto-exported, as POSIX.2 requires
+ENV and BASH_ENV are read-only variables in a restricted shell
+Bash may now be linked against an already-installed Readline library,
+       as long as the Readline library is version 4 or newer
+All shells begun with the `--login' option will source the login shell
+       startup files, even if the shell is not interactive
+
+There were lots of changes to the version of the Readline library released
+along with Bash-2.03.  For a complete list of the changes, read the file
+CHANGES in the Bash-2.03 distribution.
+
+Bash-2.02 contained the following new features:
+
+a new version of malloc (based on the old GNU malloc code in previous
+       bash versions) that is more page-oriented, more conservative
+       with memory usage, does not `orphan' large blocks when they
+       are freed, is usable on 64-bit machines, and has allocation
+       checking turned on unconditionally
+POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.)
+POSIX.2-style globbing equivalence classes
+POSIX.2-style globbing collating symbols
+the ksh [[...]] extended conditional command
+the ksh egrep-style extended pattern matching operators
+a new `printf' builtin
+the ksh-like $(<filename) command substitution, which is equivalent to
+       $(cat filename)
+new tilde prefixes that expand to directories from the directory stack
+new `**' arithmetic operator to do exponentiation
+case-insensitive globbing (filename expansion)
+menu completion a la tcsh
+`magic-space' history expansion function like tcsh
+the readline inputrc `language' has a new file inclusion directive ($include)
+
+Bash-2.01 contained only a few new features:
+
+new `GROUPS' builtin array variable containing the user's group list
+new bindable readline commands: history-and-alias-expand-line and
+       alias-expand-line
+
+Bash-2.0 contained extensive changes and new features from bash-1.14.7.
+Here's a short list:
+
+new `time' reserved word to time pipelines, shell builtins, and
+       shell functions
+one-dimensional arrays with a new compound assignment statement,
+        appropriate expansion constructs and modifications to some
+       of the builtins (read, declare, etc.) to use them
+new quoting syntaxes for ANSI-C string expansion and locale-specific
+       string translation
+new expansions to do substring extraction, pattern replacement, and
+       indirect variable expansion
+new builtins: `disown' and `shopt'
+new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE,
+              MACHTYPE, BASH_VERSINFO
+special handling of many unused or redundant variables removed
+       (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec)
+dynamic loading of new builtin commands; many loadable examples provided
+new prompt expansions: \a, \e, \n, \H, \T, \@, \v, \V
+history and aliases available in shell scripts
+new readline variables: enable-keypad, mark-directories, input-meta,
+       visible-stats, disable-completion, comment-begin
+new readline commands to manipulate the mark and operate on the region
+new readline emacs mode commands and bindings for ksh-88 compatibility
+updated and extended builtins
+new DEBUG trap
+expanded (and now documented) restricted shell mode
+
+implementation stuff:  
+autoconf-based configuration
+nearly all of the bugs reported since version 1.14 have been fixed
+most builtins converted to use builtin `getopt' for consistency
+most builtins use -p option to display output in a reusable form
+       (for consistency)
+grammar tighter and smaller (66 reduce-reduce conflicts gone)
+lots of code now smaller and faster
+test suite greatly expanded
+
+B2) Are there any user-visible incompatibilities between bash-2.05b and
+    bash-1.14.7?
+
+There are a few incompatibilities between version 1.14.7 and version 2.05b.
+They are detailed in the file COMPAT in the bash distribution.  That file
+is not meant to be all-encompassing; send mail to bash-maintainers@gnu.org
+if if you find something that's not mentioned there.
+
+Section C:  Differences from other Unix shells
+
+C1) How does bash differ from sh, the Bourne shell?
+
+This is a non-comprehensive list of features that differentiate bash
+from the SVR4.2 shell.  The bash manual page explains these more
+completely.
+
+Things bash has that sh does not:
+       long invocation options
+       [+-]O invocation option
+       -l invocation option
+       `!' reserved word to invert pipeline return value
+       `time' reserved word to time pipelines and shell builtins
+       the `function' reserved word
+       the `select' compound command and reserved word
+       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
+       new $'...' and $"..." quoting
+       the $(...) form of command substitution
+       the $(<filename) form of command substitution, equivalent to
+               $(cat filename)
+       the ${#param} parameter value length operator
+       the ${!param} indirect parameter expansion operator
+       the ${!param*} prefix expansion operator
+       the ${param:offset[:length]} parameter substring operator
+       the ${param/pat[/string]} parameter pattern substitution operator
+       expansions to perform substring removal (${p%[%]w}, ${p#[#]w})
+       expansion of positional parameters beyond $9 with ${num}
+       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, REPLY,
+                  TIMEFORMAT, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS,
+                  LINENO, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, HOSTNAME,
+                  ENV, PS3, PS4, DIRSTACK, PIPESTATUS, HISTSIZE, HISTFILE,
+                  HISTFILESIZE, HISTCONTROL, HISTIGNORE, GLOBIGNORE, GROUPS,
+                  PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC,
+                  SHELLOPTS, OPTERR, HOSTFILE, TMOUT, FUNCNAME, histchars,
+                  auto_resume
+       DEBUG trap
+       ERR trap
+       variable arrays with new compound assignment syntax
+       redirections: <>, &>, >|, <<<, [n]<&word-, [n]>&word-
+       prompt string special char translation and variable expansion
+       auto-export of variables in initial environment
+       command search finds functions before builtins
+       bash return builtin will exit a file sourced with `.'
+       builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t.
+                 export -n/-f/-p/name=value, pwd -L/-P,
+                 read -e/-p/-a/-t/-n/-d/-s/-u,
+                 readonly -a/-f/name=value, trap -l, set +o,
+                 set -b/-m/-o option/-h/-p/-B/-C/-H/-P,
+                 unset -f/-v, ulimit -m/-p/-u,
+                 type -a/-p/-t/-f/-P, suspend -f, kill -n,
+                 test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S
+       bash reads ~/.bashrc for interactive shells, $ENV for non-interactive
+       bash restricted shell mode is more extensive
+       bash allows functions and variables with the same name
+       brace expansion
+       tilde expansion
+       arithmetic expansion with $((...)) and `let' builtin
+       the `[[...]]' extended conditional command
+       process substitution
+       aliases and alias/unalias builtins
+       local variables in functions and `local' builtin
+       readline and command-line editing with programmable completion
+       command history and history/fc builtins
+       csh-like history expansion
+       other new bash builtins: bind, command, compgen, complete, builtin,
+                                declare/typeset, dirs, enable, fc, help,
+                                history, logout, popd, pushd, disown, shopt,
+                                printf
+       exported functions
+       filename generation when using output redirection (command >a*)
+       POSIX.2-style globbing character classes
+       POSIX.2-style globbing equivalence classes
+       POSIX.2-style globbing collating symbols
+       egrep-like extended pattern matching operators
+       case-insensitive pattern matching and globbing
+       variable assignments preceding commands affect only that command,
+               even for builtins and functions
+       posix mode
+       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr,
+               /dev/tcp/host/port, /dev/udp/host/port
+
+Things sh has that bash does not:
+       uses variable SHACCT to do shell accounting
+       includes `stop' builtin (bash can use alias stop='kill -s STOP')
+       `newgrp' builtin
+       turns on job control if called as `jsh'
+       $TIMEOUT (like bash $TMOUT)
+       `^' is a synonym for `|'
+       new SVR4.2 sh builtins: mldmode, priv
+
+Implementation differences:
+       redirection to/from compound commands causes sh to create a subshell
+       bash does not allow unbalanced quotes; sh silently inserts them at EOF
+       bash does not mess with signal 11
+       sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100
+       bash splits only the results of expansions on IFS, using POSIX.2
+               field splitting rules; sh splits all words on IFS
+       sh does not allow MAILCHECK to be unset (?)
+       sh does not allow traps on SIGALRM or SIGCHLD
+       bash allows multiple option arguments when invoked (e.g. -x -v);
+               sh allows only a single option argument (`sh -x -v' attempts
+               to open a file named `-v', and, on SunOS 4.1.4, dumps core.
+               On Solaris 2.4 and earlier versions, sh goes into an infinite
+               loop.)
+       sh exits a script if any builtin fails; bash exits only if one of
+               the POSIX.2 `special' builtins fails
+
+C2)  How does bash differ from the Korn shell, version ksh88?
+
+Things bash has or uses that ksh88 does not:
+       long invocation options
+       [-+]O invocation option
+       -l invocation option
+       `!' reserved word
+       arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done
+       arithmetic in largest machine-supported size (intmax_t)
+       posix mode and posix conformance
+       command hashing
+       tilde expansion for assignment statements that look like $PATH
+       process substitution with named pipes if /dev/fd is not available
+       the ${!param} indirect parameter expansion operator
+       the ${!param*} prefix expansion operator
+       the ${param:offset[:length]} parameter substring operator
+       the ${param/pat[/string]} parameter pattern substitution operator
+       variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL,
+                  TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE,
+                  HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND,
+                  IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK,
+                  PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE,
+                  GROUPS, FUNCNAME, histchars, auto_resume
+       prompt expansion with backslash escapes and command substitution
+       redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-
+       more extensive and extensible editing and programmable completion
+       builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable,
+                 exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history,
+                 jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd,
+                 read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p,
+                 set -o braceexpand/-o histexpand/-o interactive-comments/
+                 -o notify/-o physical/-o posix/-o hashall/-o onecmd/
+                 -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type,
+                 typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt,
+                 disown, printf, complete, compgen
+       `!' csh-style history expansion
+       POSIX.2-style globbing character classes
+       POSIX.2-style globbing equivalence classes
+       POSIX.2-style globbing collating symbols
+       egrep-like extended pattern matching operators
+       case-insensitive pattern matching and globbing
+       `**' arithmetic operator to do exponentiation
+       redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr
+       arrays of unlimited size
+       TMOUT is default timeout for `read' and `select'
+
+Things ksh88 has or uses that bash does not:
+       tracked aliases (alias -t)
+       variables: ERRNO, FPATH, EDITOR, VISUAL
+       co-processes (|&, >&p, <&p)
+       weirdly-scoped functions
+       typeset +f to list all function names without definitions
+       text of command history kept in a file, not memory
+       builtins: alias -x, cd old new, fc -e -, newgrp, print,
+                 read -p/-s/var?prompt, set -A/-o gmacs/
+                 -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s,
+                 typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence
+       using environment to pass attributes of exported variables
+       arithmetic evaluation done on arguments to some builtins
+       reads .profile from $PWD when invoked as login shell
+
+Implementation differences:
+       ksh runs last command of a pipeline in parent shell context
+       bash has brace expansion by default (ksh88 compile-time option)
+       bash has fixed startup file for all interactive shells; ksh reads $ENV
+       bash has exported functions
+       bash command search finds functions before builtins
+       bash waits for all commands in pipeline to exit before returning status
+       emacs-mode editing has some slightly different key bindings
+
+C3)  Which new features in ksh-93 are not in bash, and which are?
+
+New things in ksh-93 not in bash-2.05b:
+       associative arrays
+       floating point arithmetic and variables
+       math library functions
+       ${!name[sub]} name of subscript for associative array
+       `.' is allowed in variable names to create a hierarchical namespace
+       more extensive compound assignment syntax
+       discipline functions
+       `sleep' and `getconf' builtins (bash has loadable versions)
+       typeset -n and `nameref' variables
+       KEYBD trap
+       variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version,
+                  .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT
+       backreferences in pattern matching (\N)
+       `&' operator in pattern lists for matching
+       print -f (bash uses printf)
+       `fc' has been renamed to `hist'
+       `.' can execute shell functions
+       exit statuses between 0 and 255
+       set -o pipefail
+       `+=' variable assignment operator
+       FPATH and PATH mixing
+       getopts -a
+       -I invocation option
+       DEBUG trap now executed before each simple command, instead of after
+       printf %H, %P, %T, %Z modifiers, output base for %d
+       lexical scoping for local variables in `ksh' functions
+       no scoping for local variables in `POSIX' functions
+
+New things in ksh-93 present in bash-2.05b:
+       [n]<&word- and [n]>&word- redirections (combination dup and close)
+        for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command
+        ?:, ++, --, `expr1 , expr2' arithmetic operators
+       expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]},
+                   ${!param*}
+       compound array assignment
+       the `!' reserved word
+       loadable builtins -- but ksh uses `builtin' while bash uses `enable'
+       `command', `builtin', `disown' builtins
+       new $'...' and $"..." quoting
+       FIGNORE (but bash uses GLOBIGNORE), HISTCMD
+       set -o notify/-C
+       changes to kill builtin
+       read -A (bash uses read -a)
+        read -t/-d
+       trap -p
+       exec -c/-a
+       `.' restores the positional parameters when it completes
+       POSIX.2 `test'
+       umask -S
+       unalias -a
+       command and arithmetic substitution performed on PS1, PS4, and ENV
+       command name completion
+       ENV processed only for interactive shells
+
+Section D:  Why does bash do some things differently than other Unix shells?
+
+D1) Why does bash run a different version of `command' than
+    `which command' says it will?
+
+On many systems, `which' is actually a csh script that assumes
+you're running csh.  In tcsh, `which' and its cousin `where'
+are builtins.  On other Unix systems, `which' is a perl script
+that uses the PATH environment variable.
+
+The csh script version reads the csh startup files from your
+home directory and uses those to determine which `command' will
+be invoked.  Since bash doesn't use any of those startup files,
+there's a good chance that your bash environment differs from
+your csh environment.  The bash `type' builtin does everything
+`which' does, and will report correct results for the running
+shell.  If you're really wedded to the name `which', try adding
+the following function definition to your .bashrc:
+
+       which()
+       {
+               builtin type "$@"
+       }
+
+If you're moving from tcsh and would like to bring `where' along
+as well, use this function:
+
+       where()
+       {
+               builtin type -a "$@"
+       }
+
+D2) Why doesn't bash treat brace expansions exactly like csh?
+
+The only difference between bash and csh brace expansion is that
+bash requires a brace expression to contain at least one unquoted
+comma if it is to be expanded.  Any brace-surrounded word not
+containing an unquoted comma is left unchanged by the brace
+expansion code.  This affords the greatest degree of sh
+compatibility. 
+
+Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. 
+
+D3) Why doesn't bash have csh variable modifiers?
+
+Posix has specified a more powerful, albeit somewhat more cryptic,
+mechanism cribbed from ksh, and bash implements it.
+
+${parameter%word}
+        Remove smallest suffix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        smallest portion of the suffix matched by the pattern deleted.
+
+        x=file.c
+        echo ${x%.c}.o
+        -->file.o
+
+${parameter%%word}
+
+        Remove largest suffix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        largest portion of the suffix matched by the pattern deleted.
+
+        x=posix/src/std
+        echo ${x%%/*}
+        -->posix
+
+${parameter#word}
+        Remove smallest prefix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        smallest portion of the prefix matched by the pattern deleted.
+
+        x=$HOME/src/cmd
+        echo ${x#$HOME}
+        -->/src/cmd
+
+${parameter##word}
+        Remove largest prefix pattern.  The WORD is expanded to produce
+        a pattern.  It then expands to the value of PARAMETER, with the
+        largest portion of the prefix matched by the pattern deleted.
+
+        x=/one/two/three
+        echo ${x##*/}
+        -->three
+
+
+Given
+       a=/a/b/c/d
+       b=b.xxx
+
+       csh                     bash            result
+       ---                     ----            ------
+       $a:h                    ${a%/*}            /a/b/c
+       $a:t                    ${a##*/}           d
+       $b:r                    ${b%.*}            b
+       $b:e                    ${b##*.}           xxx
+
+
+D4) How can I make my csh aliases work when I convert to bash?
+
+Bash uses a different syntax to support aliases than csh does. 
+The details can be found in the documentation.  We have provided
+a shell script which does most of the work of conversion for you;
+this script can be found in ./examples/misc/aliasconv.sh.  Here is
+how you use it:
+  
+Start csh in the normal way for you.  (e.g., `csh')
+  
+Pipe the output of `alias' through `aliasconv.sh', saving the
+results into `bash_aliases':
+  
+       alias | bash aliasconv.sh >bash_aliases
+  
+Edit `bash_aliases', carefully reading through any created
+functions.  You will need to change the names of some csh specific
+variables to the bash equivalents.  The script converts $cwd to
+$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt
+to $PS1.  You may also have to add quotes to avoid unwanted
+expansion.
+
+For example, the csh alias:
+  
+       alias cd 'cd \!*; echo $cwd'
+  
+is converted to the bash function:
+
+       cd () { command cd "$@"; echo $PWD ; }
+
+The only thing that needs to be done is to quote $PWD:
+  
+       cd () { command cd "$@"; echo "$PWD" ; }
+  
+Merge the edited file into your ~/.bashrc.
+
+There is an additional, more ambitious, script in
+examples/misc/cshtobash that attempts to convert your entire csh
+environment to its bash equivalent.  This script can be run as
+simply `cshtobash' to convert your normal interactive
+environment, or as `cshtobash ~/.login' to convert your login
+environment. 
+
+D5) How can I pipe standard output and standard error from one command to
+    another, like csh does with `|&'?
+
+Use
+       command 2>&1 | command2
+
+The key is to remember that piping is performed before redirection, so
+file descriptor 1 points to the pipe when it is duplicated onto file
+descriptor 2.
+
+D6) Now that I've converted from ksh to bash, are there equivalents to
+    ksh features like autoloaded functions and the `whence' command?
+
+There are features in ksh-88 and ksh-93 that do not have direct bash
+equivalents.  Most, however, can be emulated with very little trouble.
+
+ksh-88 feature         Bash equivalent
+--------------         ---------------
+compiled-in aliases    set up aliases in .bashrc; some ksh aliases are
+                       bash builtins (hash, history, type)
+coprocesses            named pipe pairs (one for read, one for write)
+typeset +f             declare -F
+cd, print, whence      function substitutes in examples/functions/kshenv
+autoloaded functions   examples/functions/autoload is the same as typeset -fu
+read var?prompt                read -p prompt var
+
+ksh-93 feature         Bash equivalent
+--------------         ---------------
+sleep, getconf         Bash has loadable versions in examples/loadables
+${.sh.version}         $BASH_VERSION
+print -f               printf
+hist                   alias hist=fc
+$HISTEDIT              $FCEDIT
+
+Section E:  How can I get bash to do certain things, and why does bash do
+           things the way it does?
+
+E1) Why is the bash builtin `test' slightly different from /bin/test?
+
+The specific example used here is [ ! x -o x ], which is false.
+
+Bash's builtin `test' implements the Posix.2 spec, which can be
+summarized as follows (the wording is due to David Korn):
+   
+Here is the set of rules for processing test arguments.
+  
+    0 Args: False
+    1 Arg:  True iff argument is not null.
+    2 Args: If first arg is !, True iff second argument is null.
+           If first argument is unary, then true if unary test is true
+           Otherwise error.
+    3 Args: If second argument is a binary operator, do binary test of $1 $3
+           If first argument is !, negate two argument test of $2 $3
+           If first argument is `(' and third argument is `)', do the
+           one-argument test of the second argument.
+           Otherwise error.
+    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
+           Otherwise unspecified
+    5 or more Args: unspecified.  (Historical shells would use their
+    current algorithm).
+   
+The operators -a and -o are considered binary operators for the purpose
+of the 3 Arg case.
+   
+As you can see, the test becomes (not (x or x)), which is false.
+
+E2) Why does bash sometimes say `Broken pipe'?
+
+If a sequence of commands appears in a pipeline, and one of the
+reading commands finishes before the writer has finished, the
+writer receives a SIGPIPE signal.  Many other shells special-case
+SIGPIPE as an exit status in the pipeline and do not report it. 
+For example, in:
+  
+      ps -aux | head
+  
+`head' can finish before `ps' writes all of its output, and ps
+will try to write on a pipe without a reader.  In that case, bash
+will print `Broken pipe' to stderr when ps is killed by a
+SIGPIPE. 
+
+You can build a version of bash that will not report SIGPIPE errors
+by uncommenting the definition of DONT_REPORT_SIGPIPE in the file
+config-top.h.
+
+E3) When I have terminal escape sequences in my prompt, why does bash
+    wrap lines at the wrong column?
+
+Readline, the line editing library that bash uses, does not know
+that the terminal escape sequences do not take up space on the
+screen.  The redisplay code assumes, unless told otherwise, that
+each character in the prompt is a `printable' character that
+takes up one character position on the screen. 
+
+You can use the bash prompt expansion facility (see the PROMPTING
+section in the manual page) to tell readline that sequences of
+characters in the prompt strings take up no screen space. 
+
+Use the \[ escape to begin a sequence of non-printing characters,
+and the \] escape to signal the end of such a sequence. 
+
+E4) If I pipe the output of a command into `read variable', why doesn't
+    the output show up in $variable when the read command finishes?
+
+This has to do with the parent-child relationship between Unix
+processes.  It affects all commands run in pipelines, not just
+simple calls to `read'.  For example, piping a command's output
+into a `while' loop that repeatedly calls `read' will result in
+the same behavior.
+
+Each element of a pipeline runs in a separate process, a child of
+the shell running the pipeline.  A subprocess cannot affect its
+parent's environment.  When the `read' command sets the variable
+to the input, that variable is set only in the subshell, not the
+parent shell.  When the subshell exits, the value of the variable
+is lost. 
+
+Many pipelines that end with `read variable' can be converted
+into command substitutions, which will capture the output of
+a specified command.  The output can then be assigned to a
+variable:
+
+       grep ^gnu /usr/lib/news/active | wc -l | read ngroup
+
+can be converted into
+
+       ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
+
+This does not, unfortunately, work to split the text among
+multiple variables, as read does when given multiple variable
+arguments.  If you need to do this, you can either use the
+command substitution above to read the output into a variable
+and chop up the variable using the bash pattern removal
+expansion operators or use some variant of the following
+approach.
+
+Say /usr/local/bin/ipaddr is the following shell script:
+
+#! /bin/sh
+host `hostname` | awk '/address/ {print $NF}'
+
+Instead of using
+
+       /usr/local/bin/ipaddr | read A B C D
+
+to break the local machine's IP address into separate octets, use
+
+       OIFS="$IFS"
+       IFS=.
+       set -- $(/usr/local/bin/ipaddr)
+       IFS="$OIFS"
+       A="$1" B="$2" C="$3" D="$4"
+
+Beware, however, that this will change the shell's positional
+parameters.  If you need them, you should save them before doing
+this.
+
+This is the general approach -- in most cases you will not need to
+set $IFS to a different value.
+
+Some other user-supplied alternatives include:
+
+read A B C D << HERE
+    $(IFS=.; echo $(/usr/local/bin/ipaddr))
+HERE
+
+and, where process substitution is available,
+
+read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr))
+
+E5) I have a bunch of shell scripts that use backslash-escaped characters
+    in arguments to `echo'.  Bash doesn't interpret these characters.  Why
+    not, and how can I make it understand them?
+
+This is the behavior of echo on most Unix System V machines.
+
+The bash builtin `echo' is modeled after the 9th Edition
+Research Unix version of `echo'.  It does not interpret
+backslash-escaped characters in its argument strings by default;
+it requires the use of the -e option to enable the
+interpretation.  The System V echo provides no way to disable the
+special characters; the bash echo has a -E option to disable
+them. 
+
+There is a configuration option that will make bash behave like
+the System V echo and interpret things like `\t' by default.  Run
+configure with the --enable-xpg-echo-default option to turn this
+on.  Be aware that this will cause some of the tests run when you
+type `make tests' to fail.
+
+There is a shell option, `xpg_echo', settable with `shopt', that will
+change the behavior of echo at runtime.  Enabling this option turns
+on expansion of backslash-escape sequences.
+
+E6) Why doesn't a while or for loop get suspended when I type ^Z?
+
+This is a consequence of how job control works on Unix.  The only
+thing that can be suspended is the process group.  This is a single
+command or pipeline of commands that the shell forks and executes.
+
+When you run a while or for loop, the only thing that the shell forks
+and executes are any commands in the while loop test and commands in
+the loop bodies.  These, therefore, are the only things that can be
+suspended when you type ^Z.
+
+If you want to be able to stop the entire loop, you need to put it
+within parentheses, which will force the loop into a subshell that
+may be stopped (and subsequently restarted) as a single unit.
+
+E7) What about empty for loops in Makefiles?
+
+It's fairly common to see constructs like this in automatically-generated
+Makefiles:
+
+SUBDIRS = @SUBDIRS@
+
+       ...
+
+subdirs-clean:
+       for d in ${SUBDIRS}; do \
+               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
+       done
+
+When SUBDIRS is empty, this results in a command like this being passed to
+bash:
+
+       for d in ; do
+               ( cd $d && ${MAKE} ${MFLAGS} clean )
+       done
+
+In versions of bash before bash-2.05a, this was a syntax error.  If the
+reserved word `in' was present, a word must follow it before the semicolon
+or newline.  The language in the manual page referring to the list of words
+being empty referred to the list after it is expanded.  These versions of
+bash required that there be at least one word following the `in' when the
+construct was parsed.
+
+The idiomatic Makefile solution is something like:
+
+SUBDIRS = @SUBDIRS@
+
+subdirs-clean:
+       subdirs=$SUBDIRS ; for d in $$subdirs; do \
+               ( cd $$d && ${MAKE} ${MFLAGS} clean ) \
+       done
+
+The latest drafts of the updated POSIX standard have changed this:  the
+word list is no longer required.  Bash versions 2.05a and later accept
+the new syntax.
+
+E8) Why does the arithmetic evaluation code complain about `08'?
+
+The bash arithmetic evaluation code (used for `let', $(()), (()), and in
+other places), interprets a leading `0' in numeric constants as denoting
+an octal number, and a leading `0x' as denoting hexadecimal.  This is
+in accordance with the POSIX.2 spec, section 2.9.2.1, which states that
+arithmetic constants should be handled as signed long integers as defined
+by the ANSI/ISO C standard.
+
+The POSIX.2 interpretation committee has confirmed this:
+
+http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html
+
+E9) Why does the pattern matching expression [A-Z]* match files beginning
+    with every letter except `z'?
+
+Bash-2.03, Bash-2.05 and later versions honor the current locale setting
+when processing ranges within pattern matching bracket expressions ([A-Z]). 
+This is what POSIX.2 and SUSv3/XPG6 specify. 
+
+The behavior of the matcher in bash-2.05 and later versions depends on the
+current LC_COLLATE setting.  Setting this variable to `C' or `POSIX' will
+result in the traditional behavior ([A-Z] matches all uppercase ASCII
+characters).  Many other locales, including the en_US locale (the default
+on many US versions of Linux) collate the upper and lower case letters like
+this:
+
+       AaBb...Zz
+
+which means that [A-Z] matches every letter except `z'.  Others collate like
+
+       aAbBcC...zZ
+
+which means that [A-Z] matches every letter except `a'.
+
+The portable way to specify upper case letters is [:upper:] instead of
+A-Z; lower case may be specified as [:lower:] instead of a-z.
+
+Look at the manual pages for setlocale(3), strcoll(3), and, if it is
+present, locale(1).  If you have locale(1), you can use it to find
+your current locale information even if you do not have any of the
+LC_ variables set.
+
+My advice is to put
+
+       export LC_COLLATE=C
+
+into /etc/profile and inspect any shell scripts run from cron for
+constructs like [A-Z].  This will prevent things like
+
+       rm [A-Z]*
+
+from removing every file in the current directory except those beginning
+with `z' and still allow individual users to change the collation order.
+Users may put the above command into their own profiles as well, of course.
+
+E10) Why does `cd //' leave $PWD as `//'?
+
+POSIX.2, in its description of `cd', says that *three* or more leading
+slashes may be replaced with a single slash when canonicalizing the
+current working directory.
+
+This is, I presume, for historical compatibility.  Certain versions of
+Unix, and early network file systems, used paths of the form
+//hostname/path to access `path' on server `hostname'.
+
+E11) If I resize my xterm while another program is running, why doesn't bash
+     notice the change?
+
+This is another issue that deals with job control.
+
+The kernel maintains a notion of a current terminal process group.  Members
+of this process group (processes whose process group ID is equal to the
+current terminal process group ID) receive terminal-generated signals like
+SIGWINCH.  (For more details, see the JOB CONTROL section of the bash
+man page.)
+
+If a terminal is resized, the kernel sends SIGWINCH to each member of
+the terminal's current process group (the `foreground' process group).
+
+When bash is running with job control enabled, each pipeline (which may be
+a single command) is run in its own process group, different from bash's
+process group.  This foreground process group receives the SIGWINCH; bash
+does not.  Bash has no way of knowing that the terminal has been resized.
+
+There is a `checkwinsize' option, settable with the `shopt' builtin, that
+will cause bash to check the window size and adjust its idea of the
+terminal's dimensions each time a process stops or exits and returns control
+of the terminal to bash.  Enable it with `shopt -s checkwinsize'.
+
+Section F:  Things to watch out for on certain Unix versions
+
+F1) Why can't I use command line editing in my `cmdtool'?
+
+The problem is `cmdtool' and bash fighting over the input.  When
+scrolling is enabled in a cmdtool window, cmdtool puts the tty in
+`raw mode' to permit command-line editing using the mouse for
+applications that cannot do it themselves.  As a result, bash and
+cmdtool each try to read keyboard input immediately, with neither
+getting enough of it to be useful.
+
+This mode also causes cmdtool to not implement many of the
+terminal functions and control sequences appearing in the
+`sun-cmd' termcap entry.  For a more complete explanation, see
+that file examples/suncmd.termcap in the bash distribution. 
+
+`xterm' is a better choice, and gets along with bash much more
+smoothly.
+
+If you must use cmdtool, you can use the termcap description in
+examples/suncmd.termcap.  Set the TERMCAP variable to the terminal
+description contained in that file, i.e.
+
+TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
+
+Then export TERMCAP and start a new cmdtool window from that shell.
+The bash command-line editing should behave better in the new
+cmdtool.  If this works, you can put the assignment to TERMCAP
+in your bashrc file.
+
+F2) I built bash on Solaris 2.  Why do globbing expansions and filename
+    completion chop off the first few characters of each filename?
+
+This is the consequence of building bash on SunOS 5 and linking
+with the libraries in /usr/ucblib, but using the definitions
+and structures from files in /usr/include. 
+
+The actual conflict is between the dirent structure in
+/usr/include/dirent.h and the struct returned by the version of
+`readdir' in libucb.a (a 4.3-BSD style `struct direct'). 
+
+Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH
+when configuring and building bash.  This will ensure that you
+use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you
+link with libc before libucb. 
+
+If you have installed the Sun C compiler, you may also need to
+put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before
+/usr/ucb.
+
+F3) Why does bash dump core after I interrupt username completion or
+    `~user' tilde expansion on a machine running NIS?
+
+This is a famous and long-standing bug in the SunOS YP (sorry, NIS)
+client library, which is part of libc.
+
+The YP library code keeps static state -- a pointer into the data
+returned from the server.  When YP initializes itself (setpwent),
+it looks at this pointer and calls free on it if it's non-null. 
+So far, so good. 
+
+If one of the YP functions is interrupted during getpwent (the
+exact function is interpretwithsave()), and returns NULL, the
+pointer is freed without being reset to NULL, and the function
+returns.  The next time getpwent is called, it sees that this
+pointer is non-null, calls free, and the bash free() blows up
+because it's being asked to free freed memory. 
+
+The traditional Unix mallocs allow memory to be freed multiple
+times; that's probably why this has never been fixed.  You can
+run configure with the `--without-gnu-malloc' option to use
+the C library malloc and avoid the problem.
+
+F4) I'm running SVR4.2.  Why is the line erased every time I type `@'?
+
+The `@' character is the default `line kill' character in most
+versions of System V, including SVR4.2.  You can change this
+character to whatever you want using `stty'.  For example, to
+change the line kill character to control-u, type
+
+       stty kill ^U
+
+where the `^' and `U' can be two separate characters.
+
+F5) Why does bash report syntax errors when my C News scripts use a
+    redirection before a subshell command?
+
+The actual command in question is something like
+
+       < file ( command )
+
+According to the grammar given in the POSIX.2 standard, this construct
+is, in fact, a syntax error.  Redirections may only precede `simple
+commands'.  A subshell construct such as the above is one of the shell's
+`compound commands'.  A redirection may only follow a compound command.
+
+This affects the mechanical transformation of commands that use `cat'
+to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on
+comp.unix.shell).  While most commands of the form
+
+       cat file | command
+
+can be converted to `< file command', shell control structures such as
+loops and subshells require `command < file'.
+
+The file CWRU/sh-redir-hack in the bash-2.05a distribution is an
+(unofficial) patch to parse.y that will modify the grammar to
+support this construct.  It will not apply with `patch'; you must
+modify parse.y by hand.  Note that if you apply this, you must
+recompile with -DREDIRECTION_HACK.  This introduces a large
+number of reduce/reduce conflicts into the shell grammar. 
+
+F6) Why can't I use vi-mode editing on Red Hat Linux 6.1?
+
+The short answer is that Red Hat screwed up.
+
+The long answer is that they shipped an /etc/inputrc that only works
+for emacs mode editing, and then screwed all the vi users by setting
+INPUTRC to /etc/inputrc in /etc/profile.
+
+The short fix is to do one of the following: remove or rename
+/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile,
+but make sure you export it if you do), remove the assignment to
+INPUTRC from /etc/profile, add
+
+        set keymap emacs
+
+to the beginning of /etc/inputrc, or bracket the key bindings in
+/etc/inputrc with these lines
+
+       $if mode=emacs
+               [...]
+       $endif
+
+F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on
+    HP/UX 11.x?
+
+HP/UX's support for long double is imperfect at best.
+
+GCC will support it without problems, but the HP C library functions
+like strtold(3) and printf(3) don't actually work with long doubles.
+HP implemented a `long_double' type as a 4-element array of 32-bit
+ints, and that is what the library functions use.  The ANSI C
+`long double' type is a 128-bit floating point scalar.
+
+The easiest fix, until HP fixes things up, is to edit the generated
+config.h and #undef the HAVE_LONG_DOUBLE line.  After doing that,
+the compilation should complete successfully.
+
+Section G:  How can I get bash to do certain common things?
+
+G1) How can I get bash to read and display eight-bit characters?
+
+This is a process requiring several steps.
+
+First, you must ensure that the `physical' data path is a full eight
+bits.  For xterms, for example, the `vt100' resources `eightBitInput'
+and `eightBitOutput' should be set to `true'.
+
+Once you have set up an eight-bit path, you must tell the kernel and
+tty driver to leave the eighth bit of characters alone when processing
+keyboard input.  Use `stty' to do this:
+
+       stty cs8 -istrip -parenb
+
+For old BSD-style systems, you can use
+
+       stty pass8
+
+You may also need
+
+       stty even odd
+
+Finally, you need to tell readline that you will be inputting and
+displaying eight-bit characters.  You use readline variables to do
+this.  These variables can be set in your .inputrc or using the bash
+`bind' builtin.  Here's an example using `bind':
+
+       bash$ bind 'set convert-meta off'
+       bash$ bind 'set meta-flag on'
+       bash$ bind 'set output-meta on'
+
+The `set' commands between the single quotes may also be placed
+in ~/.inputrc.
+
+G2) How do I write a function `x' to replace builtin command `x', but
+    still invoke the command from within the function?
+
+This is why the `command' and `builtin' builtins exist.  The
+`command' builtin executes the command supplied as its first
+argument, skipping over any function defined with that name.  The
+`builtin' builtin executes the builtin command given as its first
+argument directly. 
+
+For example, to write a function to replace `cd' that writes the
+hostname and current directory to an xterm title bar, use
+something like the following:
+
+       cd()
+       {
+               builtin cd "$@" && xtitle "$HOST: $PWD"
+       }
+
+This could also be written using `command' instead of `builtin';
+the version above is marginally more efficient. 
+
+G3) How can I find the value of a shell variable whose name is the value
+    of another shell variable?
+
+Versions of Bash newer than Bash-2.0 support this directly.  You can use 
+
+       ${!var}
+
+For example, the following sequence of commands will echo `z':
+
+       var1=var2
+       var2=z
+       echo ${!var1}
+
+For sh compatibility, use the `eval' builtin.  The important
+thing to remember is that `eval' expands the arguments you give
+it again, so you need to quote the parts of the arguments that
+you want `eval' to act on. 
+
+For example, this expression prints the value of the last positional
+parameter:
+
+       eval echo \"\$\{$#\}\"
+
+The expansion of the quoted portions of this expression will be
+deferred until `eval' runs, while the `$#' will be expanded
+before `eval' is executed.  In versions of bash later than bash-2.0,
+
+       echo ${!#}
+
+does the same thing.
+
+This is not the same thing as ksh93 `nameref' variables, though the syntax
+is similar.  I may add namerefs in a future bash version.
+
+G4) How can I make the bash `time' reserved word print timing output that
+     looks like the output from my system's /usr/bin/time?
+
+The bash command timing code looks for a variable `TIMEFORMAT' and
+uses its value as a format string to decide how to display the
+timing statistics.
+
+The value of TIMEFORMAT is a string with `%' escapes expanded in a
+fashion similar in spirit to printf(3).  The manual page explains
+the meanings of the escape sequences in the format string.
+
+If TIMEFORMAT is not set, bash acts as if the following assignment had
+been performed:
+
+       TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
+
+The POSIX.2 default time format (used by `time -p command') is
+
+       TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
+
+The BSD /usr/bin/time format can be emulated with:
+
+       TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys'
+
+The System V /usr/bin/time format can be emulated with:
+
+       TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S'
+
+The ksh format can be emulated with:
+
+       TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS'
+
+G5) How do I get the current directory into my prompt?
+
+Bash provides a number of backslash-escape sequences which are expanded
+when the prompt string (PS1 or PS2) is displayed.  The full list is in
+the manual page.
+
+The \w expansion gives the full pathname of the current directory, with
+a tilde (`~') substituted for the current value of $HOME.  The \W
+expansion gives the basename of the current directory.  To put the full
+pathname of the current directory into the path without any tilde
+subsitution, use $PWD.  Here are some examples:
+
+       PS1='\w$ '      # current directory with tilde
+       PS1='\W$ '      # basename of current directory
+       PS1='$PWD$ '    # full pathname of current directory
+
+The single quotes are important in the final example to prevent $PWD from
+being expanded when the assignment to PS1 is performed.
+
+G6) How can I rename "*.foo" to "*.bar"?
+
+Use the pattern removal functionality described in D3.  The following `for'
+loop will do the trick:
+
+       for f in *.foo; do
+               mv $f ${f%foo}bar
+       done
+
+G7) How can I translate a filename from uppercase to lowercase?
+
+The script examples/functions/lowercase, originally written by John DuBois,
+will do the trick.  The converse is left as an exercise.
+
+G8) How can I write a filename expansion (globbing) pattern that will match
+    all files in the current directory except "." and ".."?
+
+You must have set the `extglob' shell option using `shopt -s extglob' to use
+this:
+
+       echo .!(.|) *
+
+A solution that works without extended globbing is given in the Unix Shell
+FAQ, posted periodically to comp.unix.shell.
+
+Section H:  Where do I go from here?
+
+H1) How do I report bugs in bash, and where should I look for fixes and
+    advice?
+
+Use the `bashbug' script to report bugs.  It is built and
+installed at the same time as bash.  It provides a standard
+template for reporting a problem and automatically includes
+information about your configuration and build environment. 
+
+`bashbug' sends its reports to bug-bash@gnu.org, which
+is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. 
+
+Bug fixes, answers to questions, and announcements of new releases
+are all posted to gnu.bash.bug.  Discussions concerning bash features
+and problems also take place there.
+
+To reach the bash maintainers directly, send mail to
+bash-maintainers@gnu.org.
+
+H2) What kind of bash documentation is there?
+
+First, look in the doc directory in the bash distribution.  It should
+contain at least the following files:
+
+bash.1         an extensive, thorough Unix-style manual page
+builtins.1     a manual page covering just bash builtin commands
+bashref.texi   a reference manual in GNU tex`info format
+bashref.info   an info version of the reference manual
+FAQ            this file
+article.ms     text of an article written for The Linux Journal
+readline.3     a man page describing readline
+
+Postscript, HTML, and ASCII files created from the above source are
+available in the documentation distribution.
+
+There is additional documentation available for anonymous FTP from host
+ftp.cwru.edu in the `pub/bash' directory.
+
+Cameron Newham and Bill Rosenblatt have written a book on bash, published
+by O'Reilly and Associates.  The book is based on Bill Rosenblatt's Korn
+Shell book.  The title is ``Learning the Bash Shell'', and the ISBN number
+is 1-56592-147-X.  Look for it in fine bookstores near you.  This book
+covers bash-1.14, but has an appendix describing some of the new features
+in bash-2.0.  
+
+A second edition of this book is available, published in January, 1998.
+The ISBN number is 1-56592-347-2.  Look for it in the same fine bookstores
+or on the web.
+
+The GNU Bash Reference Manual has been published as a printed book by
+Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003).  It covers
+bash-2.0 and is available from most online bookstores (see
+http://www.network-theory.co.uk/bash/manual/ for details).  The publisher
+will donate $1 to the Free Software Foundation for each copy sold. 
+
+H3) What's coming in future versions?
+
+These are features I hope to include in a future version of bash.
+
+a better bash debugger (a minimally-tested version is included with bash-2.05b)
+associative arrays
+co-processes, but with a new-style syntax that looks like function declaration
+
+H4) What's on the bash `wish list' for future versions?
+
+These are features that may or may not appear in a future version of bash.
+
+breaking some of the shell functionality into embeddable libraries
+a module system like zsh's, using dynamic loading like builtins
+better internationalization using GNU `gettext'
+date-stamped command history
+a bash programmer's guide with a chapter on creating loadable builtins
+a better loadable interface to perl with access to the shell builtins and
+       variables (contributions gratefully accepted)
+ksh93-like `nameref' variables
+ksh93-like `+=' variable assignment operator
+ksh93-like `xx.yy' variables (including some of the .sh.* variables) and
+       associated disipline functions
+Some of the new ksh93 pattern matching operators, like backreferencing
+
+H5) When will the next release appear?
+
+The next version will appear sometime in 2002.  Never make predictions. 
+
+
+This document is Copyright 1995-2003 by Chester Ramey.
+
+Permission is hereby granted, without written agreement and
+without license or royalty fees, to use, copy, and distribute
+this document for any purpose, provided that the above copyright
+notice appears in all copies of this document and that the
+contents of this document remain unaltered.
diff --git a/doc/bash.1.orig b/doc/bash.1.orig
new file mode 100644 (file)
index 0000000..828ec96
--- /dev/null
@@ -0,0 +1,8583 @@
+.\"
+.\" MAN PAGE COMMENTS to
+.\"
+.\"    Chet Ramey
+.\"    Information Network Services
+.\"    Case Western Reserve University
+.\"    chet@po.CWRU.Edu
+.\"
+.\"    Last Change: Mon Apr 14 17:57:24 EDT 2003
+.\"
+.\" bash_builtins, strip all but Built-Ins section
+.if \n(zZ=1 .ig zZ
+.if \n(zY=1 .ig zY
+.TH BASH 1 "2003 April 14" "GNU Bash-3.0"
+.\"
+.\" There's some problem with having a `@'
+.\" in a tagged paragraph with the BSD man macros.
+.\" It has to do with `@' appearing in the }1 macro.
+.\" This is a problem on 4.3 BSD and Ultrix, but Sun
+.\" appears to have fixed it.
+.\" If you're seeing the characters
+.\" `@u-3p' appearing before the lines reading
+.\" `possible-hostname-completions
+.\" and `complete-hostname' down in READLINE,
+.\" then uncomment this redefinition.
+.\"
+.de }1
+.ds ]X \&\\*(]B\\
+.nr )E 0
+.if !"\\$1"" .nr )I \\$1n
+.}f
+.ll \\n(LLu
+.in \\n()Ru+\\n(INu+\\n()Iu
+.ti \\n(INu
+.ie !\\n()Iu+\\n()Ru-\w\a\\*(]X\au-3p \{\\*(]X
+.br\}
+.el \\*(]X\h\a|\\n()Iu+\\n()Ru\a\c
+.}f
+..
+.\"
+.\" File Name macro.  This used to be `.PN', for Path Name,
+.\" but Sun doesn't seem to like that very much.
+.\"
+.de FN
+\fI\|\\$1\|\fP
+..
+.SH NAME
+bash \- GNU Bourne-Again SHell
+.SH SYNOPSIS
+.B bash
+[options]
+[file]
+.SH COPYRIGHT
+.if n Bash is Copyright (C) 1989-2002 by the Free Software Foundation, Inc.
+.if t Bash is Copyright \(co 1989-2002 by the Free Software Foundation, Inc.
+.SH DESCRIPTION
+.B Bash
+is an \fBsh\fR-compatible command language interpreter that
+executes commands read from the standard input or from a file.
+.B Bash
+also incorporates useful features from the \fIKorn\fP and \fIC\fP
+shells (\fBksh\fP and \fBcsh\fP).
+.PP
+.B Bash
+is intended to be a conformant implementation of the IEEE
+POSIX Shell and Tools specification (IEEE Working Group 1003\.2).
+.SH OPTIONS
+In addition to the single-character shell options documented in the
+description of the \fBset\fR builtin command, \fBbash\fR
+interprets the following options when it is invoked:
+.PP
+.PD 0
+.TP 10
+.BI \-c "\| string\^"
+If the
+.B \-c
+option is present, then commands are read from
+.IR string .
+If there are arguments after the
+.IR string ,
+they are assigned to the positional parameters, starting with
+.BR $0 .
+.TP
+.B \-i
+If the
+.B \-i
+option is present, the shell is
+.IR interactive .
+.TP
+.B \-l
+Make
+.B bash
+act as if it had been invoked as a login shell (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-r
+If the
+.B \-r
+option is present, the shell becomes
+.I restricted
+(see
+.SM
+.B "RESTRICTED SHELL"
+below).
+.TP
+.B \-s
+If the
+.B \-s
+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.
+.TP
+.B \-D
+A list of all double-quoted strings preceded by \fB$\fP
+is printed on the standard ouput.
+These are the strings that
+are subject to language translation when the current locale
+is not \fBC\fP or \fBPOSIX\fP.
+This implies the \fB\-n\fP option; no commands will be executed.
+.TP
+.B [\-+]O [\fIshopt_option\fP]
+\fIshopt_option\fP is one of the shell options accepted by the
+\fBshopt\fP builtin (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+If \fIshopt_option\fP is present, \fB\-O\fP sets the value of that option;
+\fB+O\fP unsets it.
+If \fIshopt_option\fP is not supplied, the names and values of the shell
+options accepted by \fBshopt\fP are printed on the standard output.
+If the invocation option is \fB+O\fP, the output is displayed in a format
+that may be reused as input.
+.TP
+.B \-\-
+A
+.B \-\-
+signals the end of options and disables further option processing.
+Any arguments after the
+.B \-\-
+are treated as filenames and arguments.  An argument of
+.B \-
+is equivalent to \fB\-\-\fP.
+.PD
+.PP
+.B Bash
+also interprets a number of multi-character options.
+These options must appear on the command line before the
+single-character options to be recognized.
+.PP
+.PD 0
+.TP
+.B \-\-debugger
+Arrange for the debugger profile to be executed before the shell
+starts.  Turns on extended debugging mode (see the description of the
+.B extdebug
+option to the
+.B shopt
+builtin below) and shell function tracing (see the description of the
+\fB\-o functrace\fP option to the
+.B set
+builtin below).
+.TP
+.B \-\-dump\-po\-strings
+Equivalent to \fB\-D\fP, but the output is in the GNU \fIgettext\fP
+\fBpo\fP (portable object) file format.
+.TP
+.B \-\-dump\-strings
+Equivalent to \fB\-D\fP.
+.TP
+.B \-\-help
+Display a usage message on standard output and exit successfully.
+.TP
+\fB\-\-init\-file\fP \fIfile\fP
+.PD 0
+.TP
+\fB\-\-rcfile\fP \fIfile\fP
+.PD
+Execute commands from
+.I file
+instead of the standard personal initialization file
+.I ~/.bashrc
+if the shell is interactive (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-\-login
+Equivalent to \fB\-l\fP.
+.TP
+.B \-\-noediting
+Do not use the GNU
+.B readline
+library to read command lines when the shell is interactive.
+.TP
+.B \-\-noprofile
+Do not read either the system-wide startup file
+.FN /etc/profile
+or any of the personal initialization files
+.IR ~/.bash_profile ,
+.IR ~/.bash_login ,
+or
+.IR ~/.profile .
+By default,
+.B bash
+reads these files when it is invoked as a login shell (see
+.SM
+.B INVOCATION
+below).
+.TP
+.B \-\-norc
+Do not read and execute the personal initialization file
+.I ~/.bashrc
+if the shell is interactive.
+This option is on by default if the shell is invoked as
+.BR sh .
+.TP
+.B \-\-posix
+Change the behavior of \fBbash\fP where the default operation differs
+from the POSIX 1003.2 standard to match the standard (\fIposix mode\fP).
+.TP
+.B \-\-restricted
+The shell becomes restricted (see
+.SM
+.B "RESTRICTED SHELL"
+below).
+.TP
+.B \-\-verbose
+Equivalent to  \fB\-v\fP.
+.TP
+.B \-\-version
+Show version information for this instance of
+.B bash
+on the standard output and exit successfully.
+.PD
+.SH ARGUMENTS
+If arguments remain after option processing, and neither the
+.B \-c
+nor the
+.B \-s
+option has been supplied, the first argument is assumed to
+be the name of a file containing shell commands.
+If
+.B bash
+is invoked in this fashion, 
+.B $0
+is set to the name of the file, and the positional parameters
+are set to the remaining arguments.
+.B Bash
+reads and executes commands from this file, then exits.
+\fBBash\fP'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.
+An attempt is first made to open the file in the current directory, and,
+if no file is found, then the shell searches the directories in
+.SM
+.B PATH
+for the script.
+.SH INVOCATION
+A \fIlogin shell\fP is one whose first character of argument zero is a
+.BR \- ,
+or one started with the 
+.B \-\-login
+option.
+.PP
+An \fIinteractive\fP shell is one started without non-option arguments
+and without the
+.B \-c
+option
+whose standard input and output are
+both connected to terminals (as determined by
+.IR isatty (3)),
+or one started with the
+.B \-i
+option.
+.SM
+.B PS1
+is set and
+.B $\-
+includes
+.B i
+if
+.B bash
+is interactive,
+allowing a shell script or a startup file to test this state.
+.PP
+The following paragraphs describe how
+.B bash
+executes its startup files.
+If any of the files exist but cannot be read,
+.B bash
+reports an error.
+Tildes are expanded in file names as described below under
+.B "Tilde Expansion"
+in the
+.SM
+.B EXPANSION
+section.
+.PP
+When
+.B bash
+is invoked as an interactive login shell, or as a non-interactive shell
+with the \fB\-\-login\fP option, it first reads and
+executes commands from the file \fI/etc/profile\fP, if that
+file exists.
+After reading that file, it looks for \fI~/.bash_profile\fP,
+\fI~/.bash_login\fP, and \fI~/.profile\fP, in that order, and reads
+and executes commands from the first one that exists and is readable.
+The
+.B \-\-noprofile
+option may be used when the shell is started to inhibit this behavior.
+.PP
+When a login shell exits,
+.B bash
+reads and executes commands from the file \fI~/.bash_logout\fP, if it
+exists.
+.PP
+When an interactive shell that is not a login shell is started,
+.B bash
+reads and executes commands from \fI~/.bashrc\fP, if that file exists.
+This may be inhibited by using the
+.B \-\-norc
+option.
+The \fB\-\-rcfile\fP \fIfile\fP option will force
+.B bash
+to read and execute commands from \fIfile\fP instead of \fI~/.bashrc\fP.
+.PP
+When
+.B bash
+is started non-interactively, to run a shell script, for example, it
+looks for the variable
+.SM
+.B 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.
+.B Bash
+behaves as if the following command were executed:
+.sp .5
+.RS
+.if t \f(CWif [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi\fP
+.if n if [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
+.RE
+.sp .5
+but the value of the
+.SM
+.B PATH
+variable is not used to search for the file name.
+.PP
+If
+.B bash
+is invoked with the name
+.BR sh ,
+it tries to mimic the startup behavior of historical versions of
+.B sh
+as closely as possible,
+while conforming to the POSIX standard as well.
+When invoked as an interactive login shell, or a non-interactive
+shell with the \fB\-\-login\fP option, it first attempts to
+read and execute commands from
+.I /etc/profile
+and
+.IR ~/.profile ,
+in that order.
+The
+.B \-\-noprofile
+option may be used to inhibit this behavior.
+When invoked as an interactive shell with the name
+.BR sh ,
+.B bash
+looks for the variable
+.SM
+.BR 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
+.B sh
+does not attempt to read and execute commands from any other startup
+files, the
+.B \-\-rcfile
+option has no effect.
+A non-interactive shell invoked with the name
+.B sh
+does not attempt to read any other startup files. 
+When invoked as
+.BR sh ,
+.B bash
+enters
+.I posix
+mode after the startup files are read.
+.PP
+When
+.B bash
+is started in
+.I posix
+mode, as with the
+.B \-\-posix
+command line option, it follows the POSIX standard for startup files.
+In this mode, interactive shells expand the
+.SM
+.B ENV
+variable and commands are read and executed from the file
+whose name is the expanded value.
+No other startup files are read.
+.PP
+.B Bash
+attempts to determine when it is being run by the remote shell
+daemon, usually \fIrshd\fP.
+If
+.B bash
+determines it is being run by \fIrshd\fP, it reads and executes
+commands from \fI~/.bashrc\fP, if that file exists and is readable.
+It will not do this if invoked as \fBsh\fP.
+The
+.B \-\-norc
+option may be used to inhibit this behavior, and the
+.B \-\-rcfile
+option may be used to force another file to be read, but
+\fIrshd\fP does not generally invoke the shell with those options
+or allow them to be specified.
+.PP
+If the shell is started with the effective user (group) id not equal to the
+real user (group) id, and the \fB\-p\fP option is not supplied, no startup
+files are read, shell functions are not inherited from the environment, the
+.SM
+.B SHELLOPTS
+variable, if it appears in the environment, is ignored,
+and the effective user id is set to the real user id.
+If the \fB\-p\fP option is supplied at invocation, the startup behavior is
+the same, but the effective user id is not reset.
+.SH DEFINITIONS
+.PP
+The following definitions are used throughout the rest of this
+document.
+.PD 0
+.TP
+.B blank 
+A space or tab.
+.TP
+.B word
+A sequence of characters considered as a single unit by the shell.
+Also known as a
+.BR token .
+.TP
+.B name
+A 
+.I word
+consisting only of alphanumeric characters and underscores, and
+beginning with an alphabetic character or an underscore.  Also
+referred to as an
+.BR identifier .
+.TP
+.B metacharacter
+A character that, when unquoted, separates words.  One of the following:
+.br
+.RS
+.PP
+.if t \fB|  &  ;  (  )  <  >  space  tab\fP
+.if n \fB|  & ; ( ) < > space tab\fP
+.RE
+.PP
+.TP
+.B control operator
+A \fItoken\fP that performs a control function.  It is one of the following
+symbols:
+.RS
+.PP
+.if t \fB\(bv\(bv  &  &&  ;  ;;  (  )  |  <newline>\fP
+.if n \fB|| & && ; ;; ( ) | <newline>\fP
+.RE
+.PD
+.SH "RESERVED WORDS"
+\fIReserved words\fP are words that have a special meaning to the shell.
+The following words are recognized as reserved when unquoted and either
+the first word of a simple command (see
+.SM
+.B SHELL GRAMMAR
+below) or the third word of a 
+.B case 
+or
+.B for
+command:
+.if t .RS
+.PP
+.B
+.if n ! case  do done elif else esac fi for function if in select then until while { } time [[ ]]
+.if t !    case    do    done    elif    else    esac    fi    for    function    if    in    select    then    until    while    {    }    time    [[    ]]
+.if t .RE
+.RE
+.SH "SHELL GRAMMAR"
+.SS Simple Commands
+.PP
+A \fIsimple command\fP is a sequence of optional variable assignments
+followed by \fBblank\fP-separated words and redirections, and
+terminated by a \fIcontrol operator\fP.  The first word
+specifies the command to be executed, and is passed as argument zero.
+The remaining words are passed as arguments to the invoked command.
+.PP
+The return value of a \fIsimple command\fP is its exit status, or
+128+\fIn\^\fP if the command is terminated by signal
+.IR n .
+.SS Pipelines
+.PP
+A \fIpipeline\fP is a sequence of one or more commands separated by
+the character
+.BR | .
+The format for a pipeline is:
+.RS
+.PP
+[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ \fB|\fP \fIcommand2\fP ... ]
+.RE
+.PP
+The standard output of
+.I command
+is connected via a pipe to the standard input of
+.IR command2 .
+This connection is performed before any redirections specified by the
+command (see
+.SM
+.B REDIRECTION
+below).
+.PP
+If the reserved word
+.B !
+precedes a pipeline, the exit status of that
+pipeline is the logical NOT of the exit status of the last command.
+Otherwise, the status of the pipeline is the exit status of the last
+command.
+The shell waits for all commands in the pipeline to
+terminate before returning a value.
+.PP
+If the
+.B time
+reserved word precedes a pipeline, the elapsed as well as user and
+system time consumed by its execution are reported when the pipeline
+terminates.
+The \fB\-p\fP option changes the output format to that specified by POSIX.
+The
+.SM
+.B TIMEFORMAT
+variable may be set to a format string that specifies how the timing
+information should be displayed; see the description of
+.SM
+.B TIMEFORMAT
+under
+.B "Shell Variables"
+below.
+.PP
+Each command in a pipeline is executed as a separate process (i.e., in a
+subshell).
+.SS Lists
+.PP
+A \fIlist\fP is a sequence of one or more pipelines separated by one
+of the operators
+.BR ; ,
+.BR & ,
+.BR && ,
+or
+.BR \(bv\(bv ,
+and optionally terminated by one of
+.BR ; ,
+.BR & ,
+or
+.BR <newline> .
+.PP
+Of these list operators,
+.B &&
+and
+.B \(bv\(bv
+have equal precedence, followed by
+.B ;
+and
+.BR &,
+which have equal precedence.
+.PP
+A sequence of one or more newlines may appear in a \fIlist\fP instead
+of a semicolon to delimit commands.
+.PP
+If a command is terminated by the control operator
+.BR & ,
+the shell executes the command in the \fIbackground\fP
+in a subshell.  The shell does not wait for the command to
+finish, and the return status is 0.  Commands separated by a
+.B ;
+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.
+.PP
+The control operators
+.B &&
+and
+.B \(bv\(bv
+denote AND lists and OR lists, respectively.
+An AND list has the form
+.RS
+.PP
+\fIcommand1\fP \fB&&\fP \fIcommand2\fP
+.RE
+.PP
+.I command2
+is executed if, and only if,
+.I command1
+returns an exit status of zero.
+.PP
+An OR list has the form
+.RS
+.PP
+\fIcommand1\fP \fB\(bv\(bv\fP \fIcommand2\fP
+.PP
+.RE
+.PP
+.I command2
+is executed if and only if
+.I command1
+returns a non-zero exit status.  The return status of
+AND and OR lists is the exit status of the last command
+executed in the list.
+.SS Compound Commands
+.PP
+A \fIcompound command\fP is one of the following:
+.TP
+(\fIlist\fP)
+\fIlist\fP is executed in a subshell.  Variable assignments and builtin
+commands that affect the shell's environment do not remain in effect
+after the command completes.  The return status is the exit status of
+\fIlist\fP.
+.TP
+{ \fIlist\fP; }
+\fIlist\fP is simply executed in the current shell environment.
+\fIlist\fP must be terminated with a newline or semicolon.
+This is known as a \fIgroup command\fP.
+The return status is the exit status of
+\fIlist\fP.
+Note that unlike the metacharacters \fB(\fP and \fB)\fP, \fB{\fP and
+\fB}\fP are \fIreserved words\fP and must occur where a reserved
+word is permitted to be recognized.  Since they do not cause a word
+break, they must be separated from \fIlist\fP by whitespace.
+.TP
+((\fIexpression\fP))
+The \fIexpression\fP is evaluated according to the rules described
+below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+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
+\fBlet "\fIexpression\fP"\fR.
+.TP
+\fB[[\fP \fIexpression\fP \fB]]\fP
+Return a status of 0 or 1 depending on the evaluation of
+the conditional expression \fIexpression\fP.
+Expressions are composed of the primaries described below under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" .
+Word splitting and pathname expansion are not performed on the words
+between the \fB[[\fP and \fB]]\fP; tilde expansion, parameter and
+variable expansion, arithmetic expansion, command substitution, process
+substitution, and quote removal are performed.
+Conditional operators such as \fB\-f\fP must be unquoted to be recognized
+as primaries.
+.if t .sp 0.5
+.if n .sp 1
+When the \fB==\fP and \fB!=\fP operators are used, the string to the
+right of the operator is considered a pattern and matched according
+to the rules described below under \fBPattern Matching\fP.
+The return value is 0 if the string matches or does not match
+the pattern, respectively, and 1 otherwise.
+Any part of the pattern may be quoted to force it to be matched as a
+string.
+.if t .sp 0.5
+.if n .sp 1
+Expressions may be combined using the following operators, listed
+in decreasing order of precedence:
+.if t .sp 0.5
+.if n .sp 1
+.RS
+.PD 0
+.TP
+.B ( \fIexpression\fP )
+Returns the value of \fIexpression\fP.
+This may be used to override the normal precedence of operators.
+.TP
+.B ! \fIexpression\fP
+True if
+.I expression
+is false.
+.TP
+\fIexpression1\fP \fB&&\fP \fIexpression2\fP
+True if both
+.I expression1
+and
+.I expression2
+are true.
+.TP
+.if t \fIexpression1\fP \fB\(bv\(bv\fP \fIexpression2\fP
+.if n \fIexpression1\fP \fB||\fP \fIexpression2\fP
+True if either
+.I expression1
+or
+.I expression2
+is true.
+.PD
+.LP
+The \fB&&\fP and
+.if t \fB\(bv\(bv\fP
+.if n \fB||\fP
+operators do not evaluate \fIexpression2\fP if the value of
+\fIexpression1\fP is sufficient to determine the return value of
+the entire conditional expression.
+.RE
+.TP
+\fBfor\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+The list of words following \fBin\fP is expanded, generating a list
+of items.
+The variable \fIname\fP is set to each element of this list
+in turn, and \fIlist\fP is executed each time.
+If the \fBin\fP \fIword\fP is omitted, the \fBfor\fP command executes
+\fIlist\fP once for each positional parameter that is set (see
+.SM
+.B PARAMETERS
+below).
+The return status is the exit status of the last command that executes.
+If the expansion of the items following \fBin\fP results in an empty
+list, no commands are executed, and the return status is 0.
+.TP
+\fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+First, the arithmetic expression \fIexpr1\fP is evaluated according
+to the rules described below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+The arithmetic expression \fIexpr2\fP is then evaluated repeatedly
+until it evaluates to zero.
+Each time \fIexpr2\fP evaluates to a non-zero value, \fIlist\fP is
+executed and the arithmetic expression \fIexpr3\fP 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 \fIlist\fP
+that is executed, or false if any of the expressions is invalid.
+.TP
+\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+The list of words following \fBin\fP is expanded, generating a list
+of items.  The set of expanded words is printed on the standard
+error, each preceded by a number.  If the \fBin\fP
+\fIword\fP is omitted, the positional parameters are printed (see
+.SM
+.B PARAMETERS
+below).  The
+.B PS3
+prompt is then displayed and a line read from the standard input.
+If the line consists of a number corresponding to one of
+the displayed words, then the value of
+.I name
+is set to that word.  If the line is empty, the words and prompt
+are displayed again.  If EOF is read, the command completes.  Any
+other value read causes
+.I name
+to be set to null.  The line read is saved in the variable
+.BR REPLY .
+The
+.I list
+is executed after each selection until a
+.B break
+command is executed.
+The exit status of
+.B select
+is the exit status of the last command executed in
+.IR list ,
+or zero if no commands were executed.
+.TP
+\fBcase\fP \fIword\fP \fBin\fP [ [(] \fIpattern\fP [ \fB|\fP \fIpattern\fP ] \
+... ) \fIlist\fP ;; ] ... \fBesac\fP
+A \fBcase\fP command first expands \fIword\fP, and tries to match
+it against each \fIpattern\fP in turn, using the same matching rules
+as for pathname expansion (see
+.B Pathname Expansion
+below).  When a match is found, the
+corresponding \fIlist\fP is executed.  After the first match, no
+subsequent matches are attempted.  The exit status is zero if no
+pattern matches.  Otherwise, it is the exit status of the
+last command executed in \fIlist\fP.
+.TP
+\fBif\fP \fIlist\fP; \fBthen\fP \fIlist;\fP \
+[ \fBelif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; ] ... \
+[ \fBelse\fP \fIlist\fP; ] \fBfi\fP
+The
+.B if 
+.I list
+is executed.  If its exit status is zero, the
+\fBthen\fP \fIlist\fP is executed.  Otherwise, each \fBelif\fP
+\fIlist\fP is executed in turn, and if its exit status is zero,
+the corresponding \fBthen\fP \fIlist\fP is executed and the
+command completes.  Otherwise, the \fBelse\fP \fIlist\fP is
+executed, if present.  The exit status is the exit status of the
+last command executed, or zero if no condition tested true.
+.TP
+\fBwhile\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP
+.PD 0
+.TP
+\fBuntil\fP \fIlist\fP; \fBdo\fP \fIlist\fP; \fBdone\fP
+.PD
+The \fBwhile\fP command continuously executes the \fBdo\fP
+\fIlist\fP as long as the last command in \fIlist\fP returns
+an exit status of zero.  The \fBuntil\fP command is identical
+to the \fBwhile\fP command, except that the test is negated;
+the
+.B do
+.I list
+is executed as long as the last command in
+.I list
+returns a non-zero exit status.
+The exit status of the \fBwhile\fP and \fBuntil\fP commands
+is the exit status
+of the last \fBdo\fP \fIlist\fP command executed, or zero if
+none was executed.
+.TP
+[ \fBfunction\fP ] \fIname\fP () { \fIlist\fP; }
+This defines a function named \fIname\fP.  The \fIbody\fP of the
+function is the
+.I list
+of commands between { and }.  This list
+is executed whenever \fIname\fP is specified as the
+name of a simple command.  The exit status of a function is
+the exit status of the last command executed in the body.  (See
+.SM
+.B FUNCTIONS
+below.)
+.SH COMMENTS
+In a non-interactive shell, or an interactive shell in which the
+.B interactive_comments
+option to the
+.B shopt
+builtin is enabled (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), a word beginning with
+.B #
+causes that word and all remaining characters on that line to
+be ignored.  An interactive shell without the
+.B interactive_comments
+option enabled does not allow comments.  The
+.B interactive_comments
+option is on by default in interactive shells.
+.SH QUOTING
+\fIQuoting\fP 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.
+.PP
+Each of the \fImetacharacters\fP listed above under
+.SM
+.B DEFINITIONS
+has special meaning to the shell and must be quoted if it is to
+represent itself.
+.PP
+When the command history expansion facilities are being used, the
+\fIhistory expansion\fP character, usually \fB!\fP, must be quoted
+to prevent history expansion.
+.PP
+There are three quoting mechanisms: the
+.IR "escape character" ,
+single quotes, and double quotes.
+.PP
+A non-quoted backslash (\fB\e\fP) is the
+.IR "escape character" .
+It preserves the literal value of the next character that follows,
+with the exception of <newline>.  If a \fB\e\fP<newline> pair
+appears, and the backslash is not itself quoted, the \fB\e\fP<newline>
+is treated as a line continuation (that is, it is removed from the
+input stream and effectively ignored).
+.PP
+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.
+.PP
+Enclosing characters in double quotes preserves the literal value
+of all characters within the quotes, with the exception of
+.BR $ ,
+.BR ` ,
+and
+.BR \e .
+The characters
+.B $
+and
+.B `
+retain their special meaning within double quotes.  The backslash
+retains its special meaning only when followed by one of the following
+characters:
+.BR $ ,
+.BR ` ,
+\^\fB"\fP\^,
+.BR \e ,
+or
+.BR <newline> .
+A double quote may be quoted within double quotes by preceding it with
+a backslash.
+When command history is being used, the double quote may not be used to
+quote the history expansion character.
+.PP
+The special parameters
+.B *
+and
+.B @
+have special meaning when in double
+quotes (see
+.SM
+.B PARAMETERS
+below).
+.PP
+Words of the form \fB$\fP'\fIstring\fP' are treated specially.  The
+word expands to \fIstring\fP, with backslash-escaped characters replaced
+as specifed by the ANSI C standard.  Backslash escape sequences, if
+present, are decoded as follows:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ee
+an escape character
+.TP   
+.B \ef
+form feed
+.TP  
+.B \en
+new line
+.TP     
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP   
+.B \ev
+vertical tab
+.TP
+.B \e\e
+backslash
+.TP
+.B \e'
+single quote
+.TP   
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.TP
+.B \ec\fIx\fP
+a control-\fIx\fP character
+.PD
+.RE
+.LP
+The expanded result is single-quoted, as if the dollar sign had
+not been present.
+.PP
+A double-quoted string preceded by a dollar sign (\fB$\fP) will cause
+the string to be translated according to the current locale.
+If the current locale is \fBC\fP or \fBPOSIX\fP, the dollar sign
+is ignored.
+If the string is translated and replaced, the replacement is
+double-quoted.
+.SH PARAMETERS
+A
+.I parameter
+is an entity that stores values.
+It can be a
+.IR name ,
+a number, or one of the special characters listed below under
+.BR "Special Parameters" .
+A
+.I variable
+is a parameter denoted by a
+.IR name .
+A variable has a \fIvalue\fP and zero or more \fIattributes\fP.
+Attributes are assigned using the
+.B declare
+builtin command (see
+.B declare
+below in
+.SM
+.BR "SHELL BUILTIN COMMANDS" ).
+.PP
+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
+.B unset
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.PP
+A
+.I variable
+may be assigned to by a statement of the form
+.RS
+.PP
+\fIname\fP=[\fIvalue\fP]
+.RE
+.PP
+If
+.I value
+is not given, the variable is assigned the null string.  All
+.I values
+undergo tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and quote
+removal (see
+.SM
+.B EXPANSION
+below).  If the variable has its
+.B integer
+attribute set, then
+.I value
+is evaluated as an arithmetic expression even if the $((...)) expansion is
+not used (see
+.B "Arithmetic Expansion"
+below).
+Word splitting is not performed, with the exception
+of \fB"$@"\fP as explained below under
+.BR "Special Parameters" .
+Pathname expansion is not performed.
+Assignment statements may also appear as arguments to the
+.BR declare ,
+.BR typeset ,
+.BR export ,
+.BR readonly ,
+and
+.B local
+builtin commands.
+.SS Positional Parameters
+.PP
+A
+.I 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
+.B set
+builtin command.  Positional parameters may not be assigned to
+with assignment statements.  The positional parameters are
+temporarily replaced when a shell function is executed (see
+.SM
+.B FUNCTIONS
+below).
+.PP
+When a positional parameter consisting of more than a single
+digit is expanded, it must be enclosed in braces (see
+.SM
+.B EXPANSION
+below).
+.SS Special Parameters
+.PP
+The shell treats several parameters specially.  These parameters may
+only be referenced; assignment to them is not allowed.
+.PD 0
+.TP
+.B *
+Expands to the positional parameters, starting from one.  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 
+.SM
+.B IFS
+special variable.  That is, "\fB$*\fP" is equivalent
+to "\fB$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB...\fP", where
+.I c
+is the first character of the value of the
+.SM
+.B IFS
+variable.  If
+.SM
+.B IFS
+is unset, the parameters are separated by spaces.
+If
+.SM
+.B IFS
+is null, the parameters are joined without intervening separators.
+.TP
+.B @
+Expands to the positional parameters, starting from one.  When the
+expansion occurs within double quotes, each parameter expands to a
+separate word.  That is, "\fB$@\fP" is equivalent to
+"\fB$1\fP" "\fB$2\fP" ...
+When there are no positional parameters, "\fB$@\fP" and 
+.B $@
+expand to nothing (i.e., they are removed).
+.TP
+.B #
+Expands to the number of positional parameters in decimal.
+.TP
+.B ?
+Expands to the status of the most recently executed foreground
+pipeline.
+.TP
+.B \-
+Expands to the current option flags as specified upon invocation, 
+by the
+.B set
+builtin command, or those set by the shell itself
+(such as the
+.B \-i
+option).
+.TP
+.B $
+Expands to the process ID of the shell.  In a () subshell, it
+expands to the process ID of the current shell, not the
+subshell.
+.TP
+.B !
+Expands to the process ID of the most recently executed background
+(asynchronous) command.
+.TP
+.B 0
+Expands to the name of the shell or shell script.  This is set at
+shell initialization.  If
+.B bash
+is invoked with a file of commands,
+.B $0
+is set to the name of that file.  If
+.B bash
+is started with the
+.B \-c
+option, then
+.B $0
+is set to the first argument after the string to be
+executed, if one is present.  Otherwise, it is set
+to the file name used to invoke
+.BR bash ,
+as given by argument zero.
+.TP
+.B _
+At shell startup, set to the absolute file name of the shell or shell
+script being executed as passed in the argument list.
+Subsequently, expands to the last argument to the previous command,
+after expansion.
+Also set to the full file name of each command executed and placed in
+the environment exported to that command.
+When checking mail, this parameter holds the name of the mail file
+currently being checked.
+.PD
+.SS Shell Variables
+.PP
+The following variables are set by the shell:
+.PP
+.PD 0
+.TP
+.B BASH
+Expands to the full file name used to invoke this instance of
+.BR bash .
+.TP
+.B 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 \fB.\fP or \fBsource\fP) is at the top of the stack.  When a
+subroutine is executed, the number of parameters passed is pushed onto
+\fBBASH_ARGC\fP.
+.TP
+.B 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 \fBBASH_ARGV\fP.
+.TP
+.B 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.
+.TP
+.B BASH_EXECUTION_STRING
+The command argument to the \fB\-c\fP invocation option.
+.TP
+.B BASH_LINENO
+An array variable whose members are the line numbers in source files
+corresponding to each member of @var{FUNCNAME}.
+\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP is the line number in the source
+file where \fB${FUNCNAME[\fP\fI$i + 1\fP\fB]}\fP was called.
+The corresponding source file name is \fB${BASH_SOURCE[\fP\fI$i + 1\fP\fB]}\fB.
+Use \fBLINENO\fP to obtain the current line number.
+.TP
+.B BASH_SOURCE
+An array variable whose members are the source filenames corresponding
+to the elements in the \fBFUNCNAME\fP array variable.
+.TP
+.B BASH_SUBSHELL
+Incremented by one each time a subshell or subshell environment is spawned.
+The initial value is 0.
+.TP
+.B BASH_VERSINFO
+A readonly array variable whose members hold version information for
+this instance of
+.BR bash .
+The values assigned to the array members are as follows:
+.sp .5
+.RS
+.PD 0
+.TP 24
+.B BASH_VERSINFO[\fR0\fP]
+The major version number (the \fIrelease\fP).
+.TP
+.B BASH_VERSINFO[\fR1\fP]
+The minor version number (the \fIversion\fP).
+.TP
+.B BASH_VERSINFO[\fR2\fP]
+The patch level.
+.TP
+.B BASH_VERSINFO[\fR3\fP]
+The build version.
+.TP
+.B BASH_VERSINFO[\fR4\fP]
+The release status (e.g., \fIbeta1\fP).
+.TP
+.B BASH_VERSINFO[\fR5\fP]
+The value of \fBMACHTYPE\fP.
+.PD
+.RE
+.TP
+.B BASH_VERSION
+Expands to a string describing the version of this instance of
+.BR bash .
+.TP
+.B COMP_CWORD
+An index into \fB${COMP_WORDS}\fP of the word containing the current
+cursor position.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_LINE
+The current command line.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B 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 \fB${#COMP_LINE}\fP.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B COMP_WORDBREAKS
+The set of characters that the Readline library treats as word
+separators when performing word completion.
+If
+.SM
+.B COMP_WORDBREAKS
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B COMP_WORDS
+An array variable (see \fBArrays\fP below) consisting of the individual
+words in the current command line.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (see \fBProgrammable Completion\fP
+below).
+.TP
+.B DIRSTACK
+An array variable (see
+.B Arrays
+below) containing the current contents of the directory stack.
+Directories appear in the stack in the order they are displayed by the
+.B dirs
+builtin.
+Assigning to members of this array variable may be used to modify
+directories already in the stack, but the
+.B pushd
+and
+.B popd
+builtins must be used to add and remove directories.
+Assignment to this variable will not change the current directory.
+If
+.SM
+.B DIRSTACK
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B EUID
+Expands to the effective user ID of the current user, initialized at
+shell startup.  This variable is readonly.
+.TP
+.B 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 is "main".
+This variable exists only when a shell function is executing.
+Assignments to
+.SM
+.B FUNCNAME
+have no effect and return an error status.
+If
+.SM
+.B FUNCNAME
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B GROUPS
+An array variable containing the list of groups of which the current
+user is a member.
+Assignments to    
+.SM
+.B GROUPS
+have no effect and return an error status.
+If
+.SM
+.B GROUPS
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B HISTCMD
+The history number, or index in the history list, of the current
+command.
+If
+.SM
+.B HISTCMD
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B HOSTNAME
+Automatically set to the name of the current host.
+.TP
+.B HOSTTYPE
+Automatically set to a string that uniquely
+describes the type of machine on which
+.B bash
+is executing.
+The default is system-dependent.
+.TP
+.B LINENO
+Each time this parameter is referenced, the shell substitutes
+a decimal number representing the current sequential line number
+(starting with 1) within a script or function.  When not in a
+script or function, the value substituted is not guaranteed to
+be meaningful.
+If
+.SM
+.B LINENO
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B MACHTYPE
+Automatically set to a string that fully describes the system
+type on which
+.B bash
+is executing, in the standard GNU \fIcpu-company-system\fP format.
+The default is system-dependent.
+.TP
+.B OLDPWD
+The previous working directory as set by the
+.B cd
+command.
+.TP
+.B OPTARG
+The value of the last option argument processed by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.TP
+.B OPTIND
+The index of the next argument to be processed by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.TP
+.B OSTYPE
+Automatically set to a string that
+describes the operating system on which
+.B bash
+is executing.
+The default is system-dependent.
+.TP
+.B PIPESTATUS
+An array variable (see
+.B Arrays
+below) containing a list of exit status values from the processes
+in the most-recently-executed foreground pipeline (which may
+contain only a single command).
+.TP
+.B PPID
+The process ID of the shell's parent.  This variable is readonly.
+.TP
+.B PWD
+The current working directory as set by the
+.B cd
+command.
+.TP
+.B RANDOM
+Each time this parameter is referenced, a random integer between
+0 and 32767 is
+generated.  The sequence of random numbers may be initialized by assigning
+a value to
+.SM
+.BR RANDOM .
+If
+.SM
+.B RANDOM
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B REPLY
+Set to the line of input read by the
+.B read
+builtin command when no arguments are supplied.
+.TP
+.B SECONDS
+Each time this parameter is
+referenced, the number of seconds since shell invocation is returned.  If a
+value is assigned to 
+.SM
+.BR SECONDS ,
+the value returned upon subsequent
+references is
+the number of seconds since the assignment plus the value assigned.
+If
+.SM
+.B SECONDS
+is unset, it loses its special properties, even if it is
+subsequently reset.
+.TP
+.B SHELLOPTS
+A colon-separated list of enabled shell options.  Each word in
+the list is a valid argument for the
+.B \-o
+option to the
+.B set
+builtin command (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).  The options appearing in
+.SM
+.B SHELLOPTS
+are those reported as
+.I on
+by \fBset \-o\fP.
+If this variable is in the environment when
+.B bash
+starts up, each shell option in the list will be enabled before
+reading any startup files.
+This variable is read-only.
+.TP
+.B SHLVL
+Incremented by one each time an instance of
+.B bash
+is started.
+.TP
+.B UID
+Expands to the user ID of the current user, initialized at shell startup.
+This variable is readonly.
+.PD
+.PP
+The following variables are used by the shell.  In some cases,
+.B bash
+assigns a default value to a variable; these cases are noted
+below.
+.PP
+.PD 0
+.TP
+.B BASH_ENV
+If this parameter is set when \fBbash\fP is executing a shell script,
+its value is interpreted as a filename containing commands to
+initialize the shell, as in
+.IR ~/.bashrc .
+The value of
+.SM
+.B BASH_ENV
+is subjected to parameter expansion, command substitution, and arithmetic
+expansion before being interpreted as a file name.
+.SM
+.B PATH
+is not used to search for the resultant file name.
+.TP
+.B CDPATH
+The search path for the
+.B cd
+command.
+This is a colon-separated list of directories in which the shell looks
+for destination directories specified by the
+.B cd
+command.
+A sample value is
+.if t \f(CW".:~:/usr"\fP.
+.if n ".:~:/usr".
+.TP
+.B COLUMNS
+Used by the \fBselect\fP builtin command to determine the terminal width
+when printing selection lists.  Automatically set upon receipt of a SIGWINCH.
+.TP
+.B COMPREPLY
+An array variable from which \fBbash\fP reads the possible completions
+generated by a shell function invoked by the programmable completion
+facility (see \fBProgrammable Completion\fP below).
+.TP
+.B EMACS
+If \fBbash\fP finds this variable in the environment when the shell starts
+with value
+.if t \f(CWt\fP,
+.if n "t",
+it assumes that the shell is running in an emacs shell buffer and disables
+line editing.
+.TP
+.B FCEDIT
+The default editor for the
+.B fc
+builtin command.
+.TP
+.B FIGNORE
+A colon-separated list of suffixes to ignore when performing
+filename completion (see
+.SM
+.B READLINE
+below).
+A filename whose suffix matches one of the entries in 
+.SM
+.B FIGNORE
+is excluded from the list of matched filenames.
+A sample value is
+.if t \f(CW".o:~"\fP.
+.if n ".o:~".
+.TP
+.B GLOBIGNORE
+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
+.SM
+.BR GLOBIGNORE ,
+it is removed from the list of matches.
+.TP
+.B HISTCONTROL
+A colon-separated list of values controlling how commands are saved on
+the history list.
+If the list of values includes
+.IR ignorespace ,
+lines which begin with a
+.B space
+character are not saved in the history list.
+A value of 
+.I ignoredups
+causes lines matching the previous history entry to not be saved.
+A value of
+.I ignoreboth
+is shorthand for \fIignorespace\fP and \fIignoredups\fP.
+A value of
+.IR 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 \fBHISTCONTROL\fP 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
+.BR 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
+.BR HISTCONTROL .
+.TP
+.B HISTFILE
+The name of the file in which command history is saved (see
+.SM
+.B HISTORY
+below).  The default value is \fI~/.bash_history\fP.  If unset, the
+command history is not saved when an interactive shell exits.
+.TP
+.B 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.  The default
+value is 500.  The history file is also truncated to this size after
+writing it when an interactive shell exits.
+.TP
+.B 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
+`\fB*\fP' is appended).  Each pattern is tested against the line
+after the checks specified by
+.B HISTCONTROL
+are applied.
+In addition to the normal shell pattern matching characters, `\fB&\fP'
+matches the previous history line.  `\fB&\fP' 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
+.BR HISTIGNORE .
+.TP
+.B HISTSIZE
+The number of commands to remember in the command history (see
+.SM
+.B HISTORY
+below).  The default value is 500.
+.TP
+.B HOME
+The home directory of the current user; the default argument for the
+\fBcd\fP builtin command.
+The value of this variable is also used when performing tilde expansion.
+.TP
+.B HOSTFILE
+Contains the name of a file in the same format as
+.FN /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,
+.B bash
+adds the contents of the new file to the existing list.
+If
+.SM
+.B HOSTFILE
+is set, but has no value, \fBbash\fP attempts to read
+.FN /etc/hosts
+to obtain the list of possible hostname completions.
+When
+.SM
+.B HOSTFILE
+is unset, the hostname list is cleared.
+.TP
+.B IFS
+The
+.I Internal Field Separator
+that is used
+for word splitting after expansion and to
+split lines into words with the
+.B read
+builtin command.  The default value is
+``<space><tab><newline>''.
+.TP
+.B IGNOREEOF
+Controls the
+action of an interactive shell on receipt of an
+.SM
+.B EOF
+character as the sole input.  If set, the value is the number of
+consecutive
+.SM
+.B EOF
+characters which must be
+typed as the first characters on an input line before
+.B bash
+exits.  If the variable exists but does not have a numeric value, or
+has no value, the default value is 10.  If it does not exist,
+.SM
+.B EOF
+signifies the end of input to the shell.
+.TP
+.B INPUTRC
+The filename for the
+.B readline
+startup file, overriding the default of
+.FN ~/.inputrc
+(see
+.SM
+.B READLINE
+below).
+.TP
+.B LANG
+Used to determine the locale category for any category not specifically
+selected with a variable starting with \fBLC_\fP.
+.TP
+.B LC_ALL
+This variable overrides the value of \fBLANG\fP and any other
+\fBLC_\fP variable specifying a locale category.
+.TP
+.B LC_COLLATE
+This variable determines the collation order used when sorting the
+results of pathname expansion, and determines the behavior of range
+expressions, equivalence classes, and collating sequences within
+pathname expansion and pattern matching.
+.TP
+.B LC_CTYPE
+This variable determines the interpretation of characters and the
+behavior of character classes within pathname expansion and pattern
+matching.
+.TP
+.B LC_MESSAGES
+This variable determines the locale used to translate double-quoted
+strings preceded by a \fB$\fP.
+.TP
+.B LC_NUMERIC
+This variable determines the locale category used for number formatting.
+.TP
+.B LINES
+Used by the \fBselect\fP builtin command to determine the column length
+for printing selection lists.  Automatically set upon receipt of a SIGWINCH.
+.TP
+.B MAIL
+If this parameter is set to a file name and the
+.SM
+.B MAILPATH
+variable is not set,
+.B bash
+informs the user of the arrival of mail in the specified file.
+.TP
+.B MAILCHECK
+Specifies how
+often (in seconds)
+.B bash
+checks for mail.  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.
+.TP
+.B MAILPATH
+A colon-separated list of file names to be checked for mail. 
+The message to be printed when mail arrives in a particular file
+may be specified by separating the file name from the message with a `?'.
+When used in the text of the message, \fB$_\fP expands to the name of
+the current mailfile. 
+Example:
+.RS
+.PP
+\fBMAILPATH\fP='/var/mail/bfox?"You have mail":~/shell\-mail?"$_ has mail!"'
+.PP
+.B Bash
+supplies a default value for this variable, but the location of the user
+mail files that it uses is system dependent (e.g., /var/mail/\fB$USER\fP).
+.RE
+.TP
+.B OPTERR
+If set to the value 1,
+.B bash
+displays error messages generated by the
+.B getopts
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SM
+.B OPTERR
+is initialized to 1 each time the shell is invoked or a shell
+script is executed.
+.TP
+.B PATH
+The search path for commands.  It
+is a colon-separated list of directories in which
+the shell looks for commands (see
+.SM
+.B COMMAND EXECUTION
+below).
+A zero-length (null) directory name in the value of \fBPATH\fP indicates the
+current directory.
+A null directory name may appear as two adjacent colons, or as an initial
+or trailing colon.
+The default path is system-dependent,
+and is set by the administrator who installs
+.BR bash .
+A common value is
+.if t \f(CW/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.\fP.
+.if n ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.''.
+.TP
+.B POSIXLY_CORRECT
+If this variable is in the environment when \fBbash\fP starts, the shell
+enters \fIposix mode\fP before reading the startup files, as if the
+.B \-\-posix
+invocation option had been supplied.  If it is set while the shell is
+running, \fBbash\fP enables \fIposix mode\fP, as if the command
+.if t \f(CWset -o posix\fP
+.if n \fIset -o posix\fP
+had been executed.
+.TP
+.B PROMPT_COMMAND
+If set, the value is executed as a command prior to issuing each primary
+prompt.
+.TP
+.B PS1
+The value of this parameter is expanded (see
+.SM
+.B PROMPTING
+below) and used as the primary prompt string.  The default value is
+``\fB\es\-\ev\e$ \fP''.
+.TP
+.B PS2
+The value of this parameter is expanded as with
+.B PS1
+and used as the secondary prompt string.  The default is
+``\fB> \fP''.
+.TP
+.B PS3
+The value of this parameter is used as the prompt for the
+.B select
+command (see
+.SM
+.B SHELL GRAMMAR
+above).
+.TP
+.B PS4
+The value of this parameter is expanded as with
+.B PS1
+and the value is printed before each command
+.B bash
+displays during an execution trace.  The first character of
+.SM
+.B PS4
+is replicated multiple times, as necessary, to indicate multiple
+levels of indirection.  The default is ``\fB+ \fP''.
+.TP
+.B TIMEFORMAT
+The value of this parameter is used as a format string specifying
+how the timing information for pipelines prefixed with the
+.B time
+reserved word should be displayed.
+The \fB%\fP 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.
+.sp .5
+.RS
+.PD 0
+.TP 10
+.B %%
+A literal \fB%\fP.
+.TP
+.B %[\fIp\fP][l]R
+The elapsed time in seconds.
+.TP
+.B %[\fIp\fP][l]U
+The number of CPU seconds spent in user mode.
+.TP
+.B %[\fIp\fP][l]S
+The number of CPU seconds spent in system mode.
+.TP
+.B %P
+The CPU percentage, computed as (%U + %S) / %R.
+.PD
+.RE
+.IP
+The optional \fIp\fP is a digit specifying the \fIprecision\fP,
+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 \fIp\fP greater than 3 are changed to 3.
+If \fIp\fP is not specified, the value 3 is used.
+.IP
+The optional \fBl\fP specifies a longer format, including
+minutes, of the form \fIMM\fPm\fISS\fP.\fIFF\fPs.
+The value of \fIp\fP determines whether or not the fraction is
+included.
+.IP
+If this variable is not set, \fBbash\fP acts as if it had the
+value \fB$'\enreal\et%3lR\enuser\et%3lU\ensys\t%3lS'\fP.
+If the value is null, no timing information is displayed.
+A trailing newline is added when the format string is displayed.
+.TP
+.B TMOUT
+If set to a value greater than zero, \fBTMOUT\fP is treated as the
+default timeout for the \fBread\fP builtin.
+The \fBselect\fP command terminates if input does not arrive
+after \fBTMOUT\fP seconds when input is coming from a terminal.
+In an interactive shell, the value is interpreted as the
+number of seconds to wait for input after issuing the primary prompt.
+.B Bash
+terminates after waiting for that number of seconds if input does
+not arrive.
+.TP
+.B auto_resume
+This variable controls how the shell interacts with the user and
+job control.  If this variable is set, single word simple
+commands without redirections are treated as candidates for resumption
+of an existing stopped job.  There is no ambiguity allowed; if there is
+more than one job beginning with the string typed, the job most recently
+accessed is selected.  The
+.I name
+of a stopped job, in this context, is the command line used to
+start it.
+If set to the value
+.IR exact ,
+the string supplied must match the name of a stopped job exactly;
+if set to
+.IR substring ,
+the string supplied needs to match a substring of the name of a
+stopped job.  The
+.I substring
+value provides functionality analogous to the
+.B %?
+job identifier (see
+.SM
+.B JOB CONTROL
+below).  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
+.B %
+job identifier.
+.TP
+.B histchars
+The two or three characters which control history expansion
+and tokenization (see
+.SM
+.B HISTORY EXPANSION
+below).  The first character is the \fIhistory expansion\fP character,
+the character which signals the start of a history
+expansion, normally `\fB!\fP'.
+The second character is the \fIquick substitution\fP
+character, which is used as shorthand for re-running the previous
+command entered, substituting one string for another in the command.
+The default is `\fB^\fP'.
+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, normally `\fB#\fP'.  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.
+.PD
+.SS Arrays
+.B Bash
+provides one-dimensional array variables.  Any variable may be used as
+an array; the
+.B 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.  Arrays are indexed using
+integers and are zero-based.
+.PP
+An array is created automatically if any variable is assigned to using
+the syntax \fIname\fP[\fIsubscript\fP]=\fIvalue\fP.  The
+.I subscript
+is treated as an arithmetic expression that must evaluate to a number
+greater than or equal to zero.  To explicitly declare an array, use
+.B declare \-a \fIname\fP
+(see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.B declare \-a \fIname\fP[\fIsubscript\fP]
+is also accepted; the \fIsubscript\fP is ignored.  Attributes may be
+specified for an array variable using the
+.B declare
+and
+.B readonly
+builtins.  Each attribute applies to all members of an array.
+.PP
+Arrays are assigned to using compound assignments of the form
+\fIname\fP=\fB(\fPvalue\fI1\fP ... value\fIn\fP\fB)\fP, where each
+\fIvalue\fP is of the form [\fIsubscript\fP]=\fIstring\fP.  Only
+\fIstring\fP is required.  If
+the optional brackets and subscript are 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.
+This syntax is also accepted by the
+.B declare
+builtin.  Individual array elements may be assigned to using the
+\fIname\fP[\fIsubscript\fP]=\fIvalue\fP syntax introduced above.
+.PP
+Any element of an array may be referenced using
+${\fIname\fP[\fIsubscript\fP]}.  The braces are required to avoid
+conflicts with pathname expansion.  If
+\fIsubscript\fP is \fB@\fP or \fB*\fP, the word expands to
+all members of \fIname\fP.  These subscripts differ only when the
+word appears within double quotes.  If the word is double-quoted,
+${\fIname\fP[*]} expands to a single
+word with the value of each array member separated by the first
+character of the
+.SM
+.B IFS
+special variable, and ${\fIname\fP[@]} expands each element of
+\fIname\fP to a separate word.  When there are no array members,
+${\fIname\fP[@]} expands to nothing.  This is analogous to the expansion
+of the special parameters \fB*\fP and \fB@\fP (see
+.B Special Parameters
+above).  ${#\fIname\fP[\fIsubscript\fP]} expands to the length of
+${\fIname\fP[\fIsubscript\fP]}.  If \fIsubscript\fP is \fB*\fP or
+\fB@\fP, the expansion is the number of elements in the array.
+Referencing an array variable without a subscript is equivalent to
+referencing element zero.
+.PP
+The
+.B unset
+builtin is used to destroy arrays.  \fBunset\fP \fIname\fP[\fIsubscript\fP]
+destroys the array element at index \fIsubscript\fP.
+\fBunset\fP \fIname\fP, where \fIname\fP is an array, or
+\fBunset\fP \fIname\fP[\fIsubscript\fP], where
+\fIsubscript\fP is \fB*\fP or \fB@\fP, removes the entire array.
+.PP
+The
+.BR declare ,
+.BR local ,
+and
+.B readonly
+builtins each accept a
+.B \-a
+option to specify an array.  The
+.B read
+builtin accepts a
+.B \-a
+option to assign a list of words read from the standard input
+to an array.  The
+.B set
+and
+.B declare
+builtins display array values in a way that allows them to be
+reused as assignments.
+.SH EXPANSION
+Expansion is performed on the command line after it has been split into
+words.  There are seven kinds of expansion performed:
+.IR "brace expansion" ,
+.IR "tilde expansion" ,
+.IR "parameter and variable expansion" ,
+.IR "command substitution" ,
+.IR "arithmetic expansion" ,
+.IR "word splitting" ,
+and
+.IR "pathname expansion" .
+.PP
+The order of expansions is: brace expansion, tilde expansion,
+parameter, variable and arithmetic expansion and
+command substitution
+(done in a left-to-right fashion), word splitting, and pathname
+expansion.
+.PP
+On systems that can support it, there is an additional expansion
+available: \fIprocess substitution\fP.
+.PP
+Only brace expansion, word splitting, and pathname 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
+"\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP"
+as explained above (see
+.SM
+.BR PARAMETERS ).
+.SS Brace Expansion
+.PP
+.I "Brace expansion"
+is a mechanism by which arbitrary strings
+may be generated.  This mechanism is similar to
+\fIpathname expansion\fP, but the filenames generated
+need not exist.  Patterns to be brace expanded take
+the form of an optional
+.IR preamble ,
+followed by either a series of comma-separated strings or
+a sequence expression between a pair of braces, followed by
+an optional
+.IR 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.
+.PP
+Brace expansions may be nested.  The results of each expanded
+string are not sorted; left to right order is preserved.
+For example, a\fB{\fPd,c,b\fB}\fPe expands into `ade ace abe'.
+.PP
+A sequence expression takes the form \fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB}\fP,
+where \fIx\fP and \fIy\fP are either integers or single characters.
+When integers are supplied, the expression expands to each number between
+\fIx\fP and \fIy\fP, inclusive.
+When characters are supplied, the expression expands to each character
+lexicographically between \fIx\fP and \fIy\fP, inclusive.  Note that
+both \fIx\fP and \fIy\fP must be of the same type.
+.PP
+Brace expansion is performed before any other expansions,
+and any characters special to other expansions are preserved
+in the result.  It is strictly textual.
+.B Bash
+does not apply any syntactic interpretation to the context of the
+expansion or the text between the braces.
+.PP
+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 \fB{\fP or \fB,\fP may be quoted with a backslash to prevent its
+being considered part of a brace expression.
+To avoid conflicts with parameter expansion, the string \fB${\fP
+is not considered eligible for brace expansion.
+.PP
+This construct is typically used as shorthand when the common
+prefix of the strings to be generated is longer than in the
+above example:
+.RS
+.PP
+mkdir /usr/local/src/bash/{old,new,dist,bugs}
+.RE
+or
+.RS
+chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
+.RE
+.PP
+Brace expansion introduces a slight incompatibility with
+historical versions of
+.BR sh .
+.B sh
+does not treat opening or closing braces specially when they
+appear as part of a word, and preserves them in the output.
+.B Bash
+removes braces from words as a consequence of brace
+expansion.  For example, a word entered to
+.B sh
+as \fIfile{1,2}\fP
+appears identically in the output.  The same word is
+output as
+.I file1 file2
+after expansion by
+.BR bash .
+If strict compatibility with
+.B sh
+is desired, start
+.B bash
+with the
+.B +B 
+option or disable brace expansion with the
+.B +B
+option to the
+.B set
+command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SS Tilde Expansion
+.PP
+If a word begins with an unquoted tilde character (`\fB~\fP'), all of
+the characters preceding the first unquoted slash (or all characters,
+if there is no unquoted slash) are considered a \fItilde-prefix\fP.
+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 \fIlogin name\fP.
+If this login name is the null string, the tilde is replaced with the
+value of the shell parameter
+.SM
+.BR HOME .
+If
+.SM
+.B 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.
+.PP
+If the tilde-prefix is a `~+', the value of the shell variable
+.SM
+.B PWD
+replaces the tilde-prefix.
+If the tilde-prefix is a `~\-', the value of the shell variable
+.SM
+.BR OLDPWD ,
+if it is set, is substituted.
+If the characters following the tilde in the tilde-prefix consist
+of a number \fIN\fP, 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
+.B dirs
+builtin invoked with the tilde-prefix as an argument.
+If the characters following the tilde in the tilde-prefix consist of a
+number without a leading `+' or `\-', `+' is assumed.
+.PP
+If the login name is invalid, or the tilde expansion fails, the word
+is unchanged.
+.PP
+Each variable assignment is checked for unquoted tilde-prefixes immediately
+following a
+.B :
+or
+.BR = .
+In these cases, tilde expansion is also performed.
+Consequently, one may use file names with tildes in assignments to
+.SM
+.BR PATH ,
+.SM
+.BR MAILPATH ,
+and
+.SM
+.BR CDPATH ,
+and the shell assigns the expanded value.
+.SS Parameter Expansion
+.PP
+The `\fB$\fP' 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.
+.PP
+When braces are used, the matching ending brace is the first `\fB}\fP'
+not escaped by a backslash or within a quoted string, and not within an
+embedded arithmetic expansion, command substitution, or paramter
+expansion.
+.PP
+.PD 0
+.TP
+${\fIparameter\fP}
+The value of \fIparameter\fP is substituted.  The braces are required
+when
+.I parameter
+is a positional parameter with more than one digit,
+or when
+.I parameter
+is followed by a character which is not to be
+interpreted as part of its name.
+.PD
+.PP
+If the first character of \fIparameter\fP is an exclamation point,
+a level of variable indirection is introduced.
+\fBBash\fP uses the value of the variable formed from the rest of
+\fIparameter\fP 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 \fIparameter\fP itself.
+This is known as \fIindirect expansion\fP.
+The exceptions to this are the expansions of ${!\fIprefix\fP*} and
+${\fB!\fP\fIname\fP[\fI@\fP]} described below.
+The exclamation point must immediately follow the left brace in order to
+introduce indirection.
+.PP
+In each of the cases below, \fIword\fP is subject to tilde expansion,
+parameter expansion, command substitution, and arithmetic expansion.
+When not performing substring expansion, \fBbash\fP tests for a parameter
+that is unset or null; omitting the colon results in a test only for a
+parameter that is unset.
+.PP
+.PD 0
+.TP
+${\fIparameter\fP\fB:\-\fP\fIword\fP}
+\fBUse Default Values\fP.  If
+.I parameter
+is unset or null, the expansion of
+.I word
+is substituted.  Otherwise, the value of
+.I parameter
+is substituted.
+.TP
+${\fIparameter\fP\fB:=\fP\fIword\fP}
+\fBAssign Default Values\fP.
+If
+.I parameter
+is unset or null, the expansion of
+.I word
+is assigned to
+.IR parameter .
+The value of
+.I parameter
+is then substituted.  Positional parameters and special parameters may
+not be assigned to in this way.
+.TP
+${\fIparameter\fP\fB:?\fP\fIword\fP}
+\fBDisplay Error if Null or Unset\fP.
+If
+.I parameter
+is null or unset, the expansion of \fIword\fP (or a message to that effect
+if
+.I word
+is not present) is written to the standard error and the shell, if it
+is not interactive, exits.  Otherwise, the value of \fIparameter\fP is
+substituted.
+.TP
+${\fIparameter\fP\fB:+\fP\fIword\fP}
+\fBUse Alternate Value\fP.
+If
+.I parameter
+is null or unset, nothing is substituted, otherwise the expansion of
+.I word
+is substituted.
+.TP
+${\fIparameter\fP\fB:\fP\fIoffset\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP}
+.PD
+\fBSubstring Expansion.\fP
+Expands to up to \fIlength\fP characters of \fIparameter\fP
+starting at the character specified by \fIoffset\fP.
+If \fIlength\fP is omitted, expands to the substring of
+\fIparameter\fP starting at the character specified by \fIoffset\fP.
+\fIlength\fP and \fIoffset\fP are arithmetic expressions (see
+.SM
+.B
+ARITHMETIC EVALUATION
+below).
+\fIlength\fP must evaluate to a number greater than or equal to zero.
+If \fIoffset\fP evaluates to a number less than zero, the value
+is used as an offset from the end of the value of \fIparameter\fP.
+If \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional
+parameters beginning at \fIoffset\fP.
+If \fIparameter\fP is an array name indexed by @ or *,
+the result is the \fIlength\fP
+members of the array beginning with ${\fIparameter\fP[\fIoffset\fP]}.
+Substring indexing is zero-based unless the positional parameters 
+are used, in which case the indexing starts at 1.
+.TP
+${\fB!\fP\fIprefix\fP\fB*\fP}
+.PD 0
+.TP
+${\fB!\fP\fIprefix\fP\fB@\fP}
+.PD
+Expands to the names of variables whose names begin with \fIprefix\fP,
+separated by the first character of the
+.SM
+.B IFS
+special variable.
+.TP
+${\fB!\fP\fIname\fP[\fI@\fP]}
+.PD 0
+.TP
+${\fB!\fP\fIname\fP[\fI*\fP]}
+.PD
+If \fIname\fP is an array variable, expands to the list of array indices
+(keys) assigned in \fIname\fP.
+If \fIname\fP is not an array, expands to 0 if \fIname\fP is set and null
+otherwise.
+When \fI@\fP is used and the expansion appears within double quotes, each
+key expands to a separate word.
+.TP
+${\fB#\fP\fIparameter\fP}
+The length in characters of the value of \fIparameter\fP is substituted.
+If
+.I parameter
+is
+.B *
+or 
+.BR @ ,
+the value substituted is the number of positional parameters.
+If
+.I parameter
+is an array name subscripted by
+.B *
+or
+.BR @ ,
+the value substituted is the number of elements in the array.
+.TP
+${\fIparameter\fP\fB#\fP\fIword\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB##\fP\fIword\fP}
+.PD
+The 
+.I word
+is expanded to produce a pattern just as in pathname
+expansion.  If the pattern matches the beginning of
+the value of
+.IR parameter ,
+then the result of the expansion is the expanded value of
+.I parameter
+with the shortest matching pattern (the ``\fB#\fP'' case) or the
+longest matching pattern (the ``\fB##\fP'' case) deleted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.TP
+${\fIparameter\fP\fB%\fP\fIword\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB%%\fP\fIword\fP}
+.PD
+The \fIword\fP is expanded to produce a pattern just as in
+pathname expansion.
+If the pattern matches a trailing portion of the expanded value of
+.IR parameter ,
+then the result of the expansion is the expanded value of
+.I parameter
+with the shortest matching pattern (the ``\fB%\fP'' case) or the
+longest matching pattern (the ``\fB%%\fP'' case) deleted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.TP
+${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB//\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.PD
+The \fIpattern\fP is expanded to produce a pattern just as in
+pathname expansion.
+\fIParameter\fP is expanded and the longest match of \fIpattern\fP
+against its value is replaced with \fIstring\fP.
+In the first form, only the first match is replaced.
+The second form causes all matches of \fIpattern\fP to be
+replaced with \fIstring\fP.
+If \fIpattern\fP begins with \fB#\fP, it must match at the beginning
+of the expanded value of \fIparameter\fP.
+If \fIpattern\fP begins with \fB%\fP, it must match at the end
+of the expanded value of \fIparameter\fP.
+If \fIstring\fP is null, matches of \fIpattern\fP are deleted
+and the \fB/\fP following \fIpattern\fP may be omitted.
+If
+.I parameter
+is
+.B @
+or
+.BR * ,
+the substitution operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If
+.I parameter
+is an array variable subscripted with
+.B @
+or
+.BR * ,
+the substitution operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+.SS Command Substitution
+.PP
+\fICommand substitution\fP allows the output of a command to replace
+the command name.  There are two forms:
+.PP
+.RS
+.PP
+\fB$(\fP\fIcommand\fP\|\fB)\fP
+.RE
+or
+.RS
+\fB`\fP\fIcommand\fP\fB`\fP
+.RE
+.PP
+.B Bash
+performs the expansion by executing \fIcommand\fP 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 \fB$(cat \fIfile\fP)\fR can be replaced by
+the equivalent but faster \fB$(< \fIfile\fP)\fR.
+.PP
+When the old-style backquote form of substitution is used,
+backslash retains its literal meaning except when followed by
+.BR $ ,
+.BR ` ,
+or
+.BR \e .
+The first backquote not preceded by a backslash terminates the
+command substitution.
+When using the $(\^\fIcommand\fP\|) form, all characters between the
+parentheses make up the command; none are treated specially.
+.PP
+Command substitutions may be nested.  To nest when using the backquoted form,
+escape the inner backquotes with backslashes.
+.PP
+If the substitution appears within double quotes, word splitting and
+pathname expansion are not performed on the results.
+.SS Arithmetic Expansion
+.PP
+Arithmetic expansion allows the evaluation of an arithmetic expression
+and the substitution of the result.  The format for arithmetic expansion is:
+.RS
+.PP
+\fB$((\fP\fIexpression\fP\fB))\fP
+.RE
+.PP
+The
+.I 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 expansion, string
+expansion, command substitution, and quote removal.
+Arithmetic expansions may be nested.
+.PP
+The evaluation is performed according to the rules listed below under
+.SM
+.BR "ARITHMETIC EVALUATION" .
+If
+.I expression
+is invalid,
+.B bash
+prints a message indicating failure and no substitution occurs.
+.SS Process Substitution
+.PP
+\fIProcess substitution\fP is supported on systems that support named
+pipes (\fIFIFOs\fP) or the \fB/dev/fd\fP method of naming open files.
+It takes the form of
+\fB<(\fP\fIlist\^\fP\fB)\fP
+or
+\fB>(\fP\fIlist\^\fP\fB)\fP.
+The process \fIlist\fP is run with its input or output connected to a
+\fIFIFO\fP or some file in \fB/dev/fd\fP.  The name of this file is
+passed as an argument to the current command as the result of the
+expansion.  If the \fB>(\fP\fIlist\^\fP\fB)\fP form is used, writing to
+the file will provide input for \fIlist\fP.  If the
+\fB<(\fP\fIlist\^\fP\fB)\fP form is used, the file passed as an
+argument should be read to obtain the output of \fIlist\fP.
+.PP
+When available, process substitution is performed
+simultaneously with parameter and variable expansion, 
+command substitution,
+and arithmetic expansion.
+.SS Word Splitting
+.PP
+The shell scans the results of
+parameter expansion,
+command substitution,
+and
+arithmetic expansion
+that did not occur within double quotes for
+.IR "word splitting" .
+.PP
+The shell treats each character of
+.SM
+.B IFS
+as a delimiter, and splits the results of the other
+expansions into words on these characters.  If
+.SM
+.B IFS
+is unset, or its
+value is exactly
+.BR <space><tab><newline> ,
+the default, then
+any sequence of
+.SM
+.B IFS
+characters serves to delimit words.  If
+.SM
+.B IFS
+has a value other than the default, then sequences of
+the whitespace characters
+.B space
+and
+.B tab
+are ignored at the beginning and end of the
+word, as long as the whitespace character is in the
+value of
+.SM
+.BR IFS
+(an
+.SM
+.B IFS
+whitespace character).
+Any character in
+.SM
+.B IFS
+that is not
+.SM
+.B IFS
+whitespace, along with any adjacent
+.SM
+.B IFS
+whitespace characters, delimits a field.
+A sequence of
+.SM
+.B IFS
+whitespace characters is also treated as a delimiter.
+If the value of
+.SM
+.B IFS
+is null, no word splitting occurs.
+.PP
+Explicit null arguments (\^\f3"\^"\fP or \^\f3'\^'\fP\^) 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.
+.PP
+Note that if no expansion occurs, no splitting
+is performed.
+.SS Pathname Expansion
+.PP
+After word splitting,
+unless the
+.B \-f
+option has been set,
+.B bash
+scans each word for the characters
+.BR * ,
+.BR ? ,
+and
+.BR [ .
+If one of these characters appears, then the word is
+regarded as a
+.IR pattern ,
+and replaced with an alphabetically sorted list of
+file names matching the pattern.
+If no matching file names are found,
+and the shell option
+.B nullglob
+is disabled, the word is left unchanged.
+If the 
+.B nullglob
+option is set, and no matches are found,
+the word is removed.
+If the shell option
+.B nocaseglob
+is enabled, the match is performed without regard to the case
+of alphabetic characters.
+When a pattern is used for pathname expansion,
+the character
+.B ``.''
+at the start of a name or immediately following a slash
+must be matched explicitly, unless the shell option
+.B dotglob
+is set.
+When matching a pathname, the slash character must always be
+matched explicitly.
+In other cases, the
+.B ``.''
+character is not treated specially.
+See the description of
+.B shopt
+below under
+.SM
+.B SHELL BUILTIN COMMANDS
+for a description of the
+.BR nocaseglob ,
+.BR nullglob ,
+and
+.B dotglob
+shell options.
+.PP
+The
+.SM
+.B GLOBIGNORE
+shell variable may be used to restrict the set of file names matching a
+.IR pattern .
+If
+.SM
+.B GLOBIGNORE
+is set, each matching file name that also matches one of the patterns in
+.SM
+.B GLOBIGNORE
+is removed from the list of matches.
+The file names
+.B ``.''
+and
+.B ``..''
+are always ignored when
+.SM
+.B GLOBIGNORE
+is set and not null.  However, setting
+.SM
+.B GLOBIGNORE
+to a non-null value has the effect of enabling the
+.B dotglob
+shell option, so all other file names beginning with a
+.B ``.''
+will match.
+To get the old behavior of ignoring file names beginning with a
+.BR ``.'' ,
+make
+.B ``.*''
+one of the patterns in
+.SM
+.BR GLOBIGNORE .
+The
+.B dotglob
+option is disabled when
+.SM
+.B GLOBIGNORE
+is unset.
+.PP
+\fBPattern Matching\fP
+.PP
+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.  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.
+.PP
+The special pattern characters have the following meanings:
+.PP
+.PD 0
+.TP
+.B *
+Matches any string, including the null string.
+.TP
+.B ?
+Matches any single character.
+.TP
+.B [...]
+Matches any one of the enclosed characters.  A pair of characters
+separated by a hyphen denotes a
+\fIrange expression\fP;
+any character that sorts between those two characters, inclusive,
+using the current locale's collating sequence and character set,
+is matched.  If the first character following the
+.B [
+is a
+.B !
+or a
+.B ^
+then any character not enclosed is matched.
+The sorting order of characters in range expressions is determined by
+the current locale and the value of the \fBLC_COLLATE\fP shell variable,
+if set.
+A 
+.B \-
+may be matched by including it as the first or last character
+in the set.
+A
+.B ]
+may be matched by including it as the first character
+in the set.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and
+.BR ] ,
+\fIcharacter classes\fP can be specified using the syntax
+\fB[:\fP\fIclass\fP\fB:]\fP, where \fIclass\fP is one of the
+following classes defined in the POSIX.2 standard:
+.PP
+.RS
+.B
+.if n alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit
+.if t alnum   alpha   ascii   blank   cntrl   digit   graph   lower   print   punct   space   upper   word   xdigit
+.br
+A character class matches any character belonging to that class.
+The \fBword\fP character class matches letters, digits, and the character _.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and 
+.BR ] ,
+an \fIequivalence class\fP can be specified using the syntax
+\fB[=\fP\fIc\fP\fB=]\fP, which matches all characters with the
+same collation weight (as defined by the current locale) as
+the character \fIc\fP.
+.br
+.if t .sp 0.5
+.if n .sp 1
+Within
+.B [
+and 
+.BR ] ,
+the syntax \fB[.\fP\fIsymbol\fP\fB.]\fP matches the collating symbol
+\fIsymbol\fP.
+.RE
+.PD
+.PP
+If the \fBextglob\fP shell option is enabled using the \fBshopt\fP
+builtin, several extended pattern matching operators are recognized.
+In the following description, a \fIpattern-list\fP is a list of one
+or more patterns separated by a \fB|\fP.
+Composite patterns may be formed using one or more of the following
+sub-patterns:
+.sp 1
+.PD 0
+.RS
+.TP
+\fB?(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches zero or one occurrence of the given patterns
+.TP
+\fB*(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches zero or more occurrences of the given patterns
+.TP
+\fB+(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches one or more occurrences of the given patterns
+.TP
+\fB@(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches exactly one of the given patterns
+.TP
+\fB!(\fP\^\fIpattern-list\^\fP\fB)\fP
+Matches anything except one of the given patterns
+.RE
+.PD
+.SS Quote Removal
+.PP
+After the preceding expansions, all unquoted occurrences of the
+characters
+.BR \e ,
+.BR ' ,
+and \^\f3"\fP\^ that did not result from one of the above
+expansions are removed.
+.SH REDIRECTION
+Before a command is executed, its input and output
+may be
+.I redirected
+using a special notation interpreted by the shell.
+Redirection may also be used to open and close files for the
+current shell execution environment.  The following redirection
+operators may precede or appear anywhere within a
+.I simple command
+or may follow a
+.IR command .
+Redirections are processed in the order they appear, from
+left to right.
+.PP
+In the following descriptions, if the file descriptor number is
+omitted, and the first character of the redirection operator is
+.BR < ,
+the redirection refers to the standard input (file descriptor
+0).  If the first character of the redirection operator is
+.BR > ,
+the redirection refers to the standard output (file descriptor
+1).
+.PP
+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, pathname expansion, and word splitting.
+If it expands to more than one word,
+.B bash
+reports an error.
+.PP
+Note that the order of redirections is significant.  For example, 
+the command
+.RS
+.PP
+ls \fB>\fP dirlist 2\fB>&\fP1
+.RE
+.PP
+directs both standard output and standard error to the file 
+.IR dirlist ,
+while the command
+.RS
+.PP
+ls 2\fB>&\fP1 \fB>\fP dirlist
+.RE
+.PP
+directs only the standard output to file
+.IR dirlist ,
+because the standard error was duplicated as standard output
+before the standard output was redirected to
+.IR dirlist .
+.PP
+\fBBash\fP handles several filenames specially when they are used in
+redirections, as described in the following table:
+.RS
+.PP
+.PD 0
+.TP
+.B /dev/fd/\fIfd\fP
+If \fIfd\fP is a valid integer, file descriptor \fIfd\fP is duplicated.
+.TP
+.B /dev/stdin
+File descriptor 0 is duplicated.
+.TP
+.B /dev/stdout
+File descriptor 1 is duplicated.
+.TP
+.B /dev/stderr
+File descriptor 2 is duplicated.
+.TP
+.B /dev/tcp/\fIhost\fP/\fIport\fP
+If \fIhost\fP is a valid hostname or Internet address, and \fIport\fP
+is an integer port number or service name, \fBbash\fP attempts to open
+a TCP connection to the corresponding socket.
+.TP
+.B /dev/udp/\fIhost\fP/\fIport\fP
+If \fIhost\fP is a valid hostname or Internet address, and \fIport\fP
+is an integer port number or service name, \fBbash\fP attempts to open
+a UDP connection to the corresponding socket.
+.PD
+.RE
+.PP
+A failure to open or create a file causes the redirection to fail.
+.SS Redirecting Input
+.PP
+Redirection of input causes the file whose name results from
+the expansion of
+.I word
+to be opened for reading on file descriptor
+.IR n ,
+or the standard input (file descriptor 0) if
+.I n
+is not specified.
+.PP
+The general format for redirecting input is:
+.RS
+.PP
+[\fIn\fP]\fB<\fP\fIword\fP
+.RE
+.SS Redirecting Output
+.PP
+Redirection of output causes the file whose name results from
+the expansion of
+.I word
+to be opened for writing on file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if
+.I n
+is not specified.  If the file does not exist it is created;
+if it does exist it is truncated to zero size.
+.PP
+The general format for redirecting output is:
+.RS
+.PP
+[\fIn\fP]\fB>\fP\fIword\fP
+.RE
+.PP
+If the redirection operator is
+.BR > ,
+and the
+.B noclobber
+option to the
+.B set
+builtin has been enabled, the redirection will fail if the file
+whose name results from the expansion of \fIword\fP exists and is
+a regular file.
+If the redirection operator is
+.BR >| ,
+or the redirection operator is
+.B >
+and the
+.B noclobber
+option to the
+.B set
+builtin command is not enabled, the redirection is attempted even
+if the file named by \fIword\fP exists.
+.SS Appending Redirected Output
+.PP
+Redirection of output in this fashion
+causes the file whose name results from
+the expansion of
+.I word
+to be opened for appending on file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if
+.I n
+is not specified.  If the file does not exist it is created.
+.PP
+The general format for appending output is:
+.RS
+.PP
+[\fIn\fP]\fB>>\fP\fIword\fP
+.RE
+.PP
+.SS Redirecting Standard Output and Standard Error
+.PP
+.B Bash
+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
+.I word
+with this construct.
+.PP
+There are two formats for redirecting standard output and
+standard error:
+.RS
+.PP
+\fB&>\fP\fIword\fP
+.RE
+and
+.RS
+\fB>&\fP\fIword\fP
+.RE
+.PP
+Of the two forms, the first is preferred.
+This is semantically equivalent to
+.RS
+.PP
+\fB>\fP\fIword\fP 2\fB>&\fP1
+.RE
+.SS Here Documents
+.PP
+This type of redirection instructs the shell to read input from the
+current source until a line containing only
+.I 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.
+.PP
+The format of here-documents is:
+.RS
+.PP
+.nf
+\fB<<\fP[\fB\-\fP]\fIword\fP
+        \fIhere-document\fP
+\fIdelimiter\fP
+.fi
+.RE
+.PP
+No parameter expansion, command substitution, arithmetic expansion,
+or pathname expansion is performed on
+.IR word .
+If any characters in
+.I word
+are quoted, the
+.I delimiter
+is the result of quote removal on
+.IR word ,
+and the lines in the here-document are not expanded.
+If \fIword\fP is unquoted,
+all lines of the here-document are subjected to parameter expansion,
+command substitution, and arithmetic expansion.  In the latter
+case, the character sequence
+.B \e<newline>
+is ignored, and
+.B \e
+must be used to quote the characters
+.BR \e ,
+.BR $ ,
+and
+.BR ` .
+.PP
+If the redirection operator is
+.BR <<\- ,
+then all leading tab characters are stripped from input lines and the
+line containing
+.IR delimiter .
+This allows
+here-documents within shell scripts to be indented in a
+natural fashion.
+.SS "Here Strings"
+A variant of here documents, the format is:
+.RS
+.PP
+.nf
+\fB<<<\fP\fIword\fP
+.fi
+.RE
+.PP
+The \fIword\fP is expanded and supplied to the command on its standard
+input.
+.SS "Duplicating File Descriptors"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<&\fP\fIword\fP
+.RE
+.PP
+is used to duplicate input file descriptors.
+If
+.I word
+expands to one or more digits, the file descriptor denoted by
+.I n
+is made to be a copy of that file descriptor.
+If the digits in
+.I word
+do not specify a file descriptor open for input, a redirection error occurs.
+If
+.I word
+evaluates to
+.BR \- ,
+file descriptor
+.I n
+is closed.  If
+.I n
+is not specified, the standard input (file descriptor 0) is used.
+.PP
+The operator
+.RS
+.PP
+[\fIn\fP]\fB>&\fP\fIword\fP
+.RE
+.PP
+is used similarly to duplicate output file descriptors.  If
+.I n
+is not specified, the standard output (file descriptor 1) is used.
+If the digits in
+.I word
+do not specify a file descriptor open for output, a redirection error occurs.
+As a special case, if \fIn\fP is omitted, and \fIword\fP does not
+expand to one or more digits, the standard output and standard
+error are redirected as described previously.
+.SS "Moving File Descriptors"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<&\fP\fIdigit\fP\fB\-\fP
+.RE
+.PP
+moves the file descriptor \fIdigit\fP to file descriptor
+.IR n ,
+or the standard input (file descriptor 0) if \fIn\fP is not specified.
+\fIdigit\fP is closed after being duplicated to \fIn\fP.
+.PP
+Similarly, the redirection operator
+.RS
+.PP
+[\fIn\fP]\fB>&\fP\fIdigit\fP\fB\-\fP
+.RE
+.PP
+moves the file descriptor \fIdigit\fP to file descriptor
+.IR n ,
+or the standard output (file descriptor 1) if \fIn\fP is not specified.
+.SS "Opening File Descriptors for Reading and Writing"
+.PP
+The redirection operator
+.RS
+.PP
+[\fIn\fP]\fB<>\fP\fIword\fP
+.RE
+.PP
+causes the file whose name is the expansion of
+.I word
+to be opened for both reading and writing on file descriptor
+.IR n ,
+or on file descriptor 0 if
+.I n
+is not specified.  If the file does not exist, it is created.
+.SH ALIASES
+\fIAliases\fP 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
+.B alias
+and
+.B unalias
+builtin commands (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+The first word of each 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 alias name and the replacement text may contain any valid
+shell input, including the
+.I metacharacters
+listed above, with the exception that the alias name may not
+contain \fI=\fP.  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
+.B ls
+to
+.BR "ls \-F" ,
+for instance, and
+.B bash
+does not try to recursively expand the replacement text.
+If the last character of the alias value is a
+.IR blank ,
+then the next command
+word following the alias is also checked for alias expansion.
+.PP
+Aliases are created and listed with the
+.B alias
+command, and removed with the
+.B unalias
+command.
+.PP
+There is no mechanism for using arguments in the replacement text.
+If arguments are needed, a shell function should be used (see
+.SM
+.B FUNCTIONS
+below).
+.PP
+Aliases are not expanded when the shell is not interactive, unless
+the
+.B expand_aliases
+shell option is set using
+.B shopt
+(see the description of
+.B shopt
+under
+.SM
+\fBSHELL BUILTIN COMMANDS\fP
+below).
+.PP
+The rules concerning the definition and use of aliases are
+somewhat confusing.
+.B 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 compound 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
+.B alias
+in compound commands.
+.PP
+For almost every purpose, aliases are superseded by
+shell functions.
+.SH FUNCTIONS
+A shell function, defined as described above under
+.SM
+.BR "SHELL GRAMMAR" ,
+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 positional parameters
+during its execution.
+The special parameter
+.B #
+is updated to reflect the change.  Positional parameter 0
+is unchanged.
+The first element of the
+.SM
+.B 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 the exception that the
+.SM
+.B DEBUG
+trap (see the description of the
+.B trap
+builtin under
+.SM
+.B SHELL BUILTIN COMMANDS
+below) is not inherited unless the function has been given the
+\fBtrace\fP attribute (see the description of the
+.SM
+.B declare
+builtin below) or the
+\fB\-o functrace\fP shell option has been enabled with
+the \fBset\fP builtin
+(in which case all functions inherit the \fBDEBUG\fP trap).
+.PP
+Variables local to the function may be declared with the
+.B local
+builtin command.  Ordinarily, variables and their values
+are shared between the function and its caller.
+.PP
+If the builtin command
+.B 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 \fBRETURN\fP trap is executed
+before execution resumes.
+When a function completes, the values of the
+positional parameters and the special parameter
+.B #
+are restored to the values they had prior to the function's
+execution.
+.PP
+Function names and definitions may be listed with the
+.B \-f
+option to the
+.B declare
+or
+.B typeset
+builtin commands.  The
+.B \-F
+option to
+.B declare
+or
+.B typeset
+will list the function names only
+(and optionally the source file and line number, if the \fBextdebug\fP
+shell option is enabled).
+Functions may be exported so that subshells
+automatically have them defined with the
+.B \-f
+option to the 
+.B export
+builtin.
+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.
+.PP
+Functions may be recursive.  No limit is imposed on the number
+of recursive calls.
+.SH "ARITHMETIC EVALUATION"
+The shell allows arithmetic expressions to be evaluated, under
+certain circumstances (see the \fBlet\fP and \fBdeclare\fP builtin
+commands and \fBArithmetic Expansion\fP).
+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.
+.PP
+.PD 0
+.TP
+.B \fIid\fP++ \fIid\fP\-\-
+variable post-increment and post-decrement
+.TP
+.B ++\fIid\fP \-\-\fIid\fP
+variable pre-increment and pre-decrement
+.TP
+.B \- +
+unary minus and plus
+.TP
+.B ! ~
+logical and bitwise negation
+.TP
+.B **
+exponentiation
+.TP
+.B * / %
+multiplication, division, remainder
+.TP
+.B + \-
+addition, subtraction
+.TP
+.B << >>
+left and right bitwise shifts
+.TP
+.B <= >= < >
+comparison
+.TP
+.B == !=
+equality and inequality
+.TP
+.B &
+bitwise AND
+.TP
+.B ^
+bitwise exclusive OR
+.TP
+.B |
+bitwise OR
+.TP
+.B &&
+logical AND
+.TP
+.B ||
+logical OR
+.TP
+.B \fIexpr\fP?\fIexpr\fP:\fIexpr\fP
+conditional operator
+.TP
+.B = *= /= %= += \-= <<= >>= &= ^= |=
+assignment
+.TP
+.B \fIexpr1\fP , \fIexpr2\fP
+comma
+.PD
+.PP
+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.
+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
+\fIinteger\fP attribute using \fBdeclare -i\fP 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.
+.PP
+Constants with a leading 0 are interpreted as octal numbers.
+A leading 0x or 0X denotes hexadecimal.
+Otherwise, numbers take the form [\fIbase#\fP]n, where \fIbase\fP
+is a decimal number between 2 and 64 representing the arithmetic
+base, and \fIn\fP is a number in that base.
+If \fIbase#\fP is omitted, then base 10 is used.
+The digits greater than 9 are represented by the lowercase letters,
+the uppercase letters, @, and _, in that order.
+If \fIbase\fP is less than or equal to 36, lowercase and uppercase
+letters may be used interchangably to represent numbers between 10
+and 35.
+.PP
+Operators are evaluated in order of precedence.  Sub-expressions in
+parentheses are evaluated first and may override the precedence
+rules above.
+.SH "CONDITIONAL EXPRESSIONS"
+Conditional expressions are used by the \fB[[\fP compound command and
+the \fBtest\fP and \fB[\fP builtin commands to test file attributes
+and perform string and arithmetic comparisons.
+Expressions are formed from the following unary or binary primaries.
+If any \fIfile\fP argument to one of the primaries is of the form
+\fI/dev/fd/n\fP, then file descriptor \fIn\fP is checked.
+If the \fIfile\fP argument to one of the primaries is one of
+\fI/dev/stdin\fP, \fI/dev/stdout\fP, or \fI/dev/stderr\fP, file
+descriptor 0, 1, or 2, respectively, is checked.
+.sp 1
+.PD 0
+.TP
+.B \-a \fIfile\fP
+True if \fIfile\fP exists.
+.TP
+.B \-b \fIfile\fP
+True if \fIfile\fP exists and is a block special file.
+.TP
+.B \-c \fIfile\fP
+True if \fIfile\fP exists and is a character special file.
+.TP
+.B \-d \fIfile\fP
+True if \fIfile\fP exists and is a directory.
+.TP
+.B \-e \fIfile\fP
+True if \fIfile\fP exists.
+.TP
+.B \-f \fIfile\fP
+True if \fIfile\fP exists and is a regular file.
+.TP
+.B \-g \fIfile\fP
+True if \fIfile\fP exists and is set-group-id.
+.TP
+.B \-h \fIfile\fP
+True if \fIfile\fP exists and is a symbolic link.
+.TP
+.B \-k \fIfile\fP
+True if \fIfile\fP exists and its ``sticky'' bit is set.
+.TP
+.B \-p \fIfile\fP
+True if \fIfile\fP exists and is a named pipe (FIFO).
+.TP
+.B \-r \fIfile\fP
+True if \fIfile\fP exists and is readable.
+.TP
+.B \-s \fIfile\fP
+True if \fIfile\fP exists and has a size greater than zero.
+.TP
+.B \-t \fIfd\fP
+True if file descriptor
+.I fd
+is open and refers to a terminal.
+.TP
+.B \-u \fIfile\fP
+True if \fIfile\fP exists and its set-user-id bit is set.
+.TP
+.B \-w \fIfile\fP
+True if \fIfile\fP exists and is writable.
+.TP
+.B \-x \fIfile\fP
+True if \fIfile\fP exists and is executable.
+.TP
+.B \-O \fIfile\fP
+True if \fIfile\fP exists and is owned by the effective user id.
+.TP
+.B \-G \fIfile\fP
+True if \fIfile\fP exists and is owned by the effective group id.
+.TP
+.B \-L \fIfile\fP
+True if \fIfile\fP exists and is a symbolic link.
+.TP
+.B \-S \fIfile\fP
+True if \fIfile\fP exists and is a socket.
+.TP
+.B \-N \fIfile\fP
+True if \fIfile\fP exists and has been modified since it was last read.
+.TP
+\fIfile1\fP \-\fBnt\fP \fIfile2\fP
+True if \fIfile1\fP is newer (according to modification date) than \fIfile2\fP,
+or if \fIfile1\fP exists and \fPfile2\fP does not.
+.TP
+\fIfile1\fP \-\fBot\fP \fIfile2\fP
+True if \fIfile1\fP is older than \fIfile2\fP, or if \fIfile2\fP exists
+and \fIfile1\fP does not.
+.TP
+\fIfile1\fP \fB\-ef\fP \fIfile2\fP
+True if \fIfile1\fP and \fIfile2\fP refer to the same device and
+inode numbers.
+.TP
+.B \-o \fIoptname\fP
+True if shell option
+.I optname
+is enabled.
+See the list of options under the description of the
+.B \-o
+option to the
+.B set
+builtin below.
+.TP
+.B \-z \fIstring\fP
+True if the length of \fIstring\fP is zero.
+.TP
+.B \-n \fIstring\fP
+.TP
+\fIstring\fP
+True if the length of
+.I string
+is non-zero.
+.TP
+\fIstring1\fP \fB==\fP \fIstring2\fP
+True if the strings are equal.  \fB=\fP may be used in place of
+\fB==\fP for strict POSIX compliance.
+.TP
+\fIstring1\fP \fB!=\fP \fIstring2\fP
+True if the strings are not equal.
+.TP
+\fIstring1\fP \fB<\fP \fIstring2\fP
+True if \fIstring1\fP sorts before \fIstring2\fP lexicographically
+in the current locale.
+.TP
+\fIstring1\fP \fB>\fP \fIstring2\fP
+True if \fIstring1\fP sorts after \fIstring2\fP lexicographically
+in the current locale.
+.TP
+.I \fIarg1\fP \fBOP\fP \fIarg2\fP
+.SM
+.B OP
+is one of
+.BR \-eq ,
+.BR \-ne ,
+.BR \-lt ,
+.BR \-le ,
+.BR \-gt ,
+or
+.BR \-ge .
+These arithmetic binary operators return true if \fIarg1\fP
+is equal to, not equal to, less than, less than or equal to,
+greater than, or greater than or equal to \fIarg2\fP, respectively.
+.I Arg1
+and
+.I arg2
+may be positive or negative integers.
+.PD
+.SH "SIMPLE COMMAND EXPANSION"
+When a simple command is executed, the shell performs the following
+expansions, assignments, and redirections, from left to right.
+.IP 1.
+The words that the parser has marked as variable assignments (those
+preceding the command name) and redirections are saved for later
+processing.
+.IP 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.
+.IP 3.
+Redirections are performed as described above under
+.SM
+.BR REDIRECTION .
+.IP 4.
+The text after the \fB=\fP in each variable assignment undergoes tilde
+expansion, parameter expansion, command substitution, arithmetic expansion,
+and quote removal before being assigned to the variable.
+.PP
+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.
+.PP
+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.
+.PP
+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.
+.SH "COMMAND EXECUTION"
+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.
+.PP
+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
+.SM
+.BR FUNCTIONS .
+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.
+.PP
+If the name is neither a shell function nor a builtin,
+and contains no slashes,
+.B bash
+searches each element of the
+.SM
+.B PATH
+for a directory containing an executable file by that name.
+.B Bash
+uses a hash table to remember the full pathnames of executable
+files (see
+.B hash
+under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).
+A full search of the directories in
+.SM
+.B PATH
+is performed only if the command is not found in the hash table.
+If the search is unsuccessful, the shell prints an error
+message and returns an exit status of 127.
+.PP
+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 given, if any.
+.PP
+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 \fIshell script\fP, 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
+.B hash
+below under
+.SM
+\fBSHELL BUILTIN COMMANDS\fP)
+are retained by the child.
+.PP
+If the program is a file beginning with
+.BR #! ,
+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 executable 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 the command
+arguments, if any.
+.SH COMMAND EXECUTION ENVIRONMENT
+The shell has an \fIexecution environment\fP, which consists of the
+following:
+.sp 1
+.IP \(bu
+open files inherited by the shell at invocation, as modified by
+redirections supplied to the \fBexec\fP builtin
+.IP \(bu
+the current working directory as set by \fBcd\fP, \fBpushd\fP, or
+\fBpopd\fP, or inherited by the shell at invocation
+.IP \(bu
+the file creation mode mask as set by \fBumask\fP or inherited from
+the shell's parent
+.IP \(bu
+current traps set by \fBtrap\fP
+.IP \(bu
+shell parameters that are set by variable assignment or with \fBset\fP
+or inherited from the shell's parent in the environment
+.IP \(bu
+shell functions defined during execution or inherited from the shell's
+parent in the environment
+.IP \(bu
+options enabled at invocation (either by default or with command-line
+arguments) or by \fBset\fP
+.IP \(bu
+options enabled by \fBshopt\fP
+.IP \(bu
+shell aliases defined with \fBalias\fP
+.IP \(bu
+various process IDs, including those of background jobs, the value
+of \fB$$\fP, and the value of \fB$PPID\fP
+.PP
+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.
+.sp 1
+.IP \(bu
+the shell's open files, plus any modifications and additions specified
+by redirections to the command
+.IP \(bu
+the current working directory
+.IP \(bu
+the file creation mode mask
+.IP \(bu
+shell variables and functions marked for export, along with variables
+exported for the command, passed in the environment
+.IP \(bu
+traps caught by the shell are reset to the values the inherited
+from the shell's parent, and traps ignored by the shell are ignored
+.PP
+A command invoked in this separate environment cannot affect the
+shell's execution environment. 
+.PP
+Command substitution 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.
+.PP
+If a command is followed by a \fB&\fP and job control is not active, the
+default standard input for the command is the empty file \fI/dev/null\fP.
+Otherwise, the invoked command inherits the file descriptors of the calling
+shell as modified by redirections.
+.SH ENVIRONMENT
+When a program is invoked it is given an array of strings
+called the
+.IR environment .
+This is a list of 
+\fIname\fP\-\fIvalue\fP pairs, of the form
+.IR "name\fR=\fPvalue" .
+.PP
+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
+.I export
+to child processes.  Executed commands inherit the environment.
+The
+.B export
+and
+.B 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
+.B unset
+command, plus any additions via the
+.B export
+and
+.B declare \-x
+commands.
+.PP
+The environment for any
+.I simple command
+or function may be augmented temporarily by prefixing it with
+parameter assignments, as described above in
+.SM
+.BR PARAMETERS .
+These assignment statements affect only the environment seen
+by that command.
+.PP
+If the 
+.B \-k
+option is set (see the
+.B set
+builtin command below), then
+.I all
+parameter assignments are placed in the environment for a command,
+not just those that precede the command name.
+.PP
+When
+.B bash
+invokes an external command, the variable
+.B _
+is set to the full file name of the command and passed to that
+command in its environment.
+.SH "EXIT STATUS"
+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 signal \fIN\fP, \fBbash\fP uses
+the value of 128+\fIN\fP as the exit status.
+.PP
+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.
+.PP
+If a command fails because of an error during expansion or redirection,
+the exit status is greater than zero.
+.PP
+Shell builtin commands return a status of 0 (\fItrue\fP) if
+successful, and non-zero (\fIfalse\fP) if an error occurs
+while they execute. 
+All builtins return an exit status of 2 to indicate incorrect usage.
+.PP
+\fBBash\fP 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 \fBexit\fP builtin
+command below.
+.SH SIGNALS
+When \fBbash\fP is interactive, in the absence of any traps, it ignores
+.SM
+.B SIGTERM
+(so that \fBkill 0\fP does not kill an interactive shell),
+and
+.SM
+.B SIGINT
+is caught and handled (so that the \fBwait\fP builtin is interruptible).
+In all cases, \fBbash\fP ignores
+.SM
+.BR SIGQUIT .
+If job control is in effect,
+.B bash
+ignores
+.SM
+.BR SIGTTIN ,
+.SM
+.BR SIGTTOU ,
+and
+.SM
+.BR SIGTSTP .
+.PP
+Synchronous jobs started by \fBbash\fP have signal handlers
+set to the values inherited by the shell from its parent.
+When job control is not in effect, asynchronous commands
+ignore
+.SM
+.B SIGINT
+and
+.SM
+.B SIGQUIT
+as well.
+Commands run as a result of command substitution ignore the
+keyboard-generated job control signals
+.SM
+.BR SIGTTIN ,
+.SM
+.BR SIGTTOU ,
+and
+.SM
+.BR SIGTSTP .
+.PP
+The shell exits by default upon receipt of a
+.SM
+.BR SIGHUP .
+Before exiting, an interactive shell resends the
+.SM
+.B SIGHUP
+to all jobs, running or stopped.
+Stopped jobs are sent
+.SM
+.B SIGCONT
+to ensure that they receive the
+.SM
+.BR SIGHUP .
+To prevent the shell from
+sending the signal to a particular job, it should be removed from the
+jobs table with the 
+.B disown
+builtin (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below) or marked 
+to not receive
+.SM
+.B SIGHUP
+using
+.BR "disown \-h" .
+.PP
+If the
+.B huponexit
+shell option has been set with
+.BR shopt ,
+.B bash
+sends a 
+.SM
+.B SIGHUP
+to all jobs when an interactive login shell exits.
+.PP
+When \fBbash\fP receives a signal for which a trap has been set while
+waiting for a command to complete, the trap will not be executed until
+the command completes.
+When \fBbash\fP is waiting for an asynchronous command via the \fBwait\fP
+builtin, the reception of a signal for which a trap has been set will
+cause the \fBwait\fP builtin to return immediately with an exit status
+greater than 128, immediately after which the trap is executed.
+.SH "JOB CONTROL"
+.I Job control
+refers to the ability to selectively stop (\fIsuspend\fP)
+the execution of processes and continue (\fIresume\fP)
+their execution at a later point.  A user typically employs
+this facility via an interactive interface supplied jointly
+by the system's terminal driver and
+.BR bash .
+.PP
+The shell associates a
+.I job
+with each pipeline.  It keeps a table of currently executing
+jobs, which may be listed with the
+.B jobs
+command.  When
+.B bash
+starts a job asynchronously (in the
+.IR background ),
+it prints a line that looks like:
+.RS
+.PP
+[1] 25647
+.RE
+.PP
+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.
+.B Bash
+uses the
+.I job
+abstraction as the basis for job control.
+.PP
+To facilitate the implementation of the user interface to job
+control, the operating system maintains the notion of a \fIcurrent terminal
+process group ID\fP.  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
+.SM
+.BR SIGINT .
+These processes are said to be in the
+.IR foreground .
+.I 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 write to the
+terminal.  Background processes which attempt to read from (write to) the
+terminal are sent a 
+.SM
+.B SIGTTIN (SIGTTOU)
+signal by the terminal driver, 
+which, unless caught, suspends the process.
+.PP
+If the operating system on which
+.B bash
+is running supports
+job control,
+.B bash
+contains facilities to use it.
+Typing the
+.I suspend
+character (typically
+.BR ^Z ,
+Control-Z) while a process is running
+causes that process to be stopped and returns control to 
+.BR bash .
+Typing the
+.I "delayed suspend"
+character (typically
+.BR ^Y ,
+Control-Y) causes the process to be stopped when it
+attempts to read input from the terminal, and control to
+be returned to
+.BR bash .
+The user may then manipulate the state of this job, using the
+.B bg
+command to continue it in the background, the
+.B fg
+command to continue it in the foreground, or
+the
+.B kill
+command to kill it.  A \fB^Z\fP takes effect immediately,
+and has the additional side effect of causing pending output
+and typeahead to be discarded.
+.PP
+There are a number of ways to refer to a job in the shell.
+The character
+.B %
+introduces a job name.  Job number
+.I n
+may be referred to as
+.BR %n .
+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,
+.B %ce
+refers to a stopped
+.B ce
+job.  If a prefix matches more than one job,
+.B bash
+reports an error.  Using
+.BR %?ce ,
+on the other hand, refers to any job containing the string
+.B ce
+in its command line.  If the substring matches more than one job,
+.B bash
+reports an error.  The symbols
+.B %%
+and
+.B %+
+refer to the shell's notion of the
+.IR "current job" ,
+which is the last job stopped while it was in
+the foreground or started in the background.
+The 
+.I "previous job"
+may be referenced using
+.BR %\- .
+In output pertaining to jobs (e.g., the output of the
+.B jobs
+command), the current job is always flagged with a
+.BR + ,
+and the previous job with a
+.BR \- .
+.PP
+Simply naming a job can be used to bring it into the
+foreground:
+.B %1
+is a synonym for
+\fB``fg %1''\fP,
+bringing job 1 from the background into the foreground.
+Similarly,
+.B ``%1 &''
+resumes job 1 in the background, equivalent to
+\fB``bg %1''\fP.
+.PP
+The shell learns immediately whenever a job changes state.
+Normally,
+.B 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 \-b
+option to the
+.B set
+builtin command
+is enabled,
+.B bash
+reports such changes immediately.
+Any trap on
+.SM
+.B SIGCHLD
+is executed for each child that exits.
+.PP
+If an attempt to exit
+.B bash
+is made while jobs are stopped, the shell prints a warning message.  The
+.B jobs
+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 the stopped
+jobs are terminated.
+.SH PROMPTING
+When executing interactively, 
+.B bash
+displays the primary prompt
+.SM
+.B PS1
+when it is ready to read a command, and the secondary prompt
+.SM
+.B PS2
+when it needs more input to complete a command.
+.B Bash
+allows these prompt strings to be customized by inserting a number of
+backslash-escaped special characters that are decoded as follows:
+.RS
+.PD 0
+.TP
+.B \ea
+an ASCII bell character (07)
+.TP
+.B \ed
+the date in "Weekday Month Date" format (e.g., "Tue May 26")
+.TP
+.B \eD{\fIformat\fP}
+the \fIformat\fP is passed to \fIstrftime\fP(3) and the result is inserted
+into the prompt string; an empty \fIformat\fP results in a locale-specific
+time representation.  The braces are required
+.TP
+.B \ee
+an ASCII escape character (033)
+.TP
+.B \eh
+the hostname up to the first `.'
+.TP
+.B \eH
+the hostname
+.TP
+.B \ej
+the number of jobs currently managed by the shell
+.TP
+.B \el
+the basename of the shell's terminal device name
+.TP
+.B \en
+newline
+.TP
+.B \er
+carriage return
+.TP
+.B \es
+the name of the shell, the basename of
+.B $0
+(the portion following the final slash)
+.TP
+.B \et
+the current time in 24-hour HH:MM:SS format
+.TP
+.B \eT
+the current time in 12-hour HH:MM:SS format
+.TP
+.B \e@
+the current time in 12-hour am/pm format
+.TP
+.B \eA
+the current time in 24-hour HH:MM format
+.TP
+.B \eu
+the username of the current user
+.TP
+.B \ev
+the version of \fBbash\fP (e.g., 2.00)
+.TP
+.B \eV
+the release of \fBbash\fP, version + patchelvel (e.g., 2.00.0)
+.TP
+.B \ew
+the current working directory
+.TP
+.B \eW
+the basename of the current working directory
+.TP
+.B \e!
+the history number of this command
+.TP
+.B \e#
+the command number of this command
+.TP
+.B \e$
+if the effective UID is 0, a
+.BR # ,
+otherwise a
+.B $
+.TP
+.B \e\fInnn\fP
+the character corresponding to the octal number \fInnn\fP
+.TP
+.B \e\e
+a backslash
+.TP
+.B \e[
+begin a sequence of non-printing characters, which could be used to
+embed a terminal control sequence into the prompt
+.TP
+.B \e]
+end a sequence of non-printing characters
+.PD
+.RE
+.PP
+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
+.SM
+.B HISTORY
+below), 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
+parameter expansion, command substitution, arithmetic
+expansion, and quote removal, subject to the value of the
+.B promptvars
+shell option (see the description of the
+.B shopt
+command under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).
+.SH READLINE
+This is the library that handles reading input when using an interactive
+shell, unless the
+.B \-\-noediting
+option is given at shell invocation.
+By default, the line editing commands are similar to those of emacs.
+A vi-style line editing interface is also available.
+To turn off line editing after the shell is running, use the
+.B +o emacs
+or
+.B +o vi
+options to the
+.B set
+builtin (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SS "Readline Notation"
+.PP
+In this section, the emacs-style notation is used to denote
+keystrokes.  Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
+means Control\-N.  Similarly, 
+.I meta
+keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X.  (On keyboards
+without a 
+.I meta
+key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key
+then the
+.I x
+key.  This makes ESC the \fImeta prefix\fP.
+The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP,
+or press the Escape key
+then hold the Control key while pressing the
+.I x
+key.)
+.PP
+Readline commands may be given numeric
+.IR arguments ,
+which normally act as a repeat count.
+Sometimes, however, it is the sign of the argument that is significant.
+Passing a negative argument to a command that acts in the forward
+direction (e.g., \fBkill\-line\fP) causes that command to act in a
+backward direction. 
+Commands whose behavior with arguments deviates from this are noted
+below.
+.PP
+When a command is described as \fIkilling\fP text, the text
+deleted is saved for possible future retrieval
+(\fIyanking\fP).  The killed text is saved in a
+\fIkill ring\fP.  Consecutive kills cause the text to be
+accumulated into one unit, which can be yanked all at once. 
+Commands which do not kill text separate the chunks of text
+on the kill ring.
+.SS "Readline Initialization"
+.PP
+Readline is customized by putting commands in an initialization
+file (the \fIinputrc\fP file).
+The name of this file is taken from the value of the
+.SM
+.B INPUTRC
+variable.  If that variable is unset, the default is
+.IR ~/.inputrc .
+When a program which uses the readline library starts up, the
+initialization file is read, and the key bindings and variables
+are set.
+There are only a few basic constructs allowed in the
+readline initialization file.
+Blank lines are ignored.
+Lines beginning with a \fB#\fP are comments.
+Lines beginning with a \fB$\fP indicate conditional constructs.
+Other lines denote key bindings and variable settings.
+.PP
+The default key-bindings may be changed with an
+.I inputrc 
+file.
+Other programs that use this library may add their own commands
+and bindings.
+.PP
+For example, placing
+.RS
+.PP
+M\-Control\-u: universal\-argument
+.RE
+or
+.RS
+C\-Meta\-u: universal\-argument
+.RE
+into the 
+.I inputrc
+would make M\-C\-u execute the readline command
+.IR universal\-argument .
+.PP
+The following symbolic character names are recognized:
+.IR RUBOUT ,
+.IR DEL ,
+.IR ESC ,
+.IR LFD ,
+.IR NEWLINE ,
+.IR RET ,
+.IR RETURN ,
+.IR SPC ,
+.IR SPACE ,
+and
+.IR TAB .
+.PP
+In addition to command names, readline allows keys to be bound
+to a string that is inserted when the key is pressed (a \fImacro\fP).
+.SS "Readline Key Bindings"
+.PP
+The syntax for controlling key bindings in the
+.I inputrc
+file is simple.  All that is required is the name of the
+command or the text of a macro and a key sequence to which
+it should be bound. The name may be specified in one of two ways:
+as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP
+prefixes, or as a key sequence.
+.PP
+When using the form \fBkeyname\fP:\^\fIfunction\-name\fP or \fImacro\fP,
+.I keyname
+is the name of a key spelled out in English.  For example:
+.sp
+.RS
+Control-u: universal\-argument
+.br
+Meta-Rubout: backward-kill-word
+.br
+Control-o: "> output"
+.RE
+.LP
+In the above example,
+.I C\-u
+is bound to the function
+.BR universal\-argument ,
+.I M\-DEL
+is bound to the function
+.BR backward\-kill\-word ,
+and
+.I C\-o
+is bound to run the macro
+expressed on the right hand side (that is, to insert the text
+.if t \f(CW> output\fP
+.if n ``> output''
+into the line).
+.PP
+In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP,
+.B keyseq
+differs from
+.B keyname
+above in that strings denoting
+an entire key sequence may be specified by placing the sequence
+within double quotes.  Some GNU Emacs style key escapes can be
+used, as in the following example, but the symbolic character names
+are not recognized.
+.sp
+.RS
+"\eC\-u": universal\-argument
+.br
+"\eC\-x\eC\-r": re\-read\-init\-file
+.br
+"\ee[11~": "Function Key 1"
+.RE
+.PP
+In this example,
+.I C\-u
+is again bound to the function
+.BR universal\-argument .
+.I "C\-x C\-r"
+is bound to the function
+.BR re\-read\-init\-file ,
+and 
+.I "ESC [ 1 1 ~"
+is bound to insert the text
+.if t \f(CWFunction Key 1\fP.
+.if n ``Function Key 1''.
+.PP
+The full set of GNU Emacs style escape sequences is
+.RS
+.PD 0
+.TP
+.B \eC\-
+control prefix
+.TP
+.B \eM\-
+meta prefix
+.TP
+.B \ee
+an escape character
+.TP
+.B \e\e
+backslash
+.TP
+.B \e"
+literal "
+.TP
+.B \e'
+literal '
+.RE
+.PD
+.PP
+In addition to the GNU Emacs style escape sequences, a second
+set of backslash escapes is available:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ed
+delete
+.TP
+.B \ef
+form feed
+.TP
+.B \en
+newline
+.TP
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP
+.B \ev
+vertical tab
+.TP
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.RE
+.PD
+.PP
+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 '.
+.PP
+.B Bash
+allows the current readline key bindings to be displayed or modified
+with the
+.B bind
+builtin command.  The editing mode may be switched during interactive
+use by using the
+.B \-o
+option to the
+.B set
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
+.SS "Readline Variables"
+.PP
+Readline has variables that can be used to further customize its
+behavior.  A variable may be set in the
+.I inputrc
+file with a statement of the form
+.RS
+.PP
+\fBset\fP \fIvariable\-name\fP \fIvalue\fP
+.RE
+.PP
+Except where noted, readline variables can take the values
+.B On
+or
+.BR Off .
+The variables and their default values are:
+.PP
+.PD 0
+.TP
+.B bell\-style (audible)
+Controls what happens when readline wants to ring the terminal bell.
+If set to \fBnone\fP, readline never rings the bell.  If set to
+\fBvisible\fP, readline uses a visible bell if one is available.
+If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
+.TP
+.B comment\-begin (``#'')
+The string that is inserted when the readline
+.B insert\-comment
+command is executed.
+This command is bound to
+.B M\-#
+in emacs mode and to
+.B #
+in vi command mode.
+.TP
+.B completion\-ignore\-case (Off)
+If set to \fBOn\fP, readline performs filename matching and completion
+in a case\-insensitive fashion.
+.TP
+.B completion\-query\-items (100)
+This determines when the user is queried about viewing
+the number of possible completions
+generated by the \fBpossible\-completions\fP command.
+It may be set to any integer value greater than or equal to
+zero.  If the number of possible completions is greater than
+or equal to the value of this variable, the user is asked whether
+or not he wishes to view them; otherwise they are simply listed
+on the terminal.
+.TP
+.B convert\-meta (On)
+If set to \fBOn\fP, readline will convert characters with the
+eighth bit set to an ASCII key sequence
+by stripping the eighth bit and prefixing an
+escape character (in effect, using escape as the \fImeta prefix\fP).
+.TP
+.B disable\-completion (Off)
+If set to \fBOn\fP, readline will inhibit word completion.  Completion
+characters will be inserted into the line as if they had been
+mapped to \fBself-insert\fP.
+.TP
+.B editing\-mode (emacs)
+Controls whether readline begins with a set of key bindings similar
+to \fIemacs\fP or \fIvi\fP.
+.B editing\-mode
+can be set to either
+.B emacs
+or
+.BR vi .
+.TP
+.B enable\-keypad (Off)
+When set to \fBOn\fP, readline will try to enable the application
+keypad when it is called.  Some systems need this to enable the
+arrow keys.
+.TP
+.B expand\-tilde (Off)
+If set to \fBon\fP, tilde expansion is performed when readline
+attempts word completion.
+.TP
+.B history-preserve-point
+If set to \fBon\fP, the history code attempts to place point at the
+same location on each history line retrived with \fBprevious-history\fP
+or \fBnext-history\fP.
+.TP
+.B horizontal\-scroll\-mode (Off)
+When set to \fBOn\fP, makes readline use a single line for display,
+scrolling the input horizontally on a single screen line when it
+becomes longer than the screen width rather than wrapping to a new line.
+.TP
+.B input\-meta (Off)
+If set to \fBOn\fP, readline will enable eight-bit input (that is,
+it will not strip the high bit from the characters it reads),
+regardless of what the terminal claims it can support.  The name
+.B meta\-flag
+is a synonym for this variable.
+.TP
+.B isearch\-terminators (``C\-[C\-J'')
+The string of characters that should terminate an incremental
+search without subsequently executing the character as a command.
+If this variable has not been given a value, the characters
+\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
+.TP
+.B keymap (emacs)
+Set the current readline keymap.  The set of valid keymap names is
+\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
+vi\-command\fP, and
+.IR vi\-insert .
+\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is
+equivalent to \fIemacs\-standard\fP.  The default value is
+.IR emacs ;
+the value of
+.B editing\-mode
+also affects the default keymap.
+.TP
+.B mark\-directories (On)
+If set to \fBOn\fP, completed directory names have a slash
+appended.
+.TP
+.B mark\-modified\-lines (Off)
+If set to \fBOn\fP, history lines that have been modified are displayed
+with a preceding asterisk (\fB*\fP).
+.TP
+.B mark\-symlinked\-directories (Off)
+If set to \fBOn\fP, completed names which are symbolic links to directories
+have a slash appended (subject to the value of
+\fBmark\-directories\fP).
+.TP
+.B match\-hidden\-files (On)
+This variable, when set to \fBOn\fP, causes readline to match files whose
+names begin with a `.' (hidden files) when performing filename 
+completion, unless the leading `.' is
+supplied by the user in the filename to be completed.
+.TP
+.B output\-meta (Off)
+If set to \fBOn\fP, readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence.
+.TP
+.B page\-completions (On)
+If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager
+to display a screenful of possible completions at a time.
+.TP
+.B print\-completions\-horizontally (Off)
+If set to \fBOn\fP, readline will display completions with matches
+sorted horizontally in alphabetical order, rather than down the screen.
+.TP
+.B show\-all\-if\-ambiguous (Off)
+This alters the default behavior of the completion functions.  If
+set to
+.BR on ,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+.TP
+.B visible\-stats (Off)
+If set to \fBOn\fP, a character denoting a file's type as reported
+by \fIstat\fP(2) is appended to the filename when listing possible
+completions.
+.PD
+.SS "Readline Conditional Constructs"
+.PP
+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.
+.IP \fB$if\fP
+The 
+.B $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.
+.RS
+.IP \fBmode\fP
+The \fBmode=\fP form of the \fB$if\fP directive is used to test
+whether readline is in emacs or vi mode.
+This may be used in conjunction
+with the \fBset keymap\fP command, for instance, to set bindings in
+the \fIemacs\-standard\fP and \fIemacs\-ctlx\fP keymaps only if
+readline is starting out in emacs mode.
+.IP \fBterm\fP
+The \fBterm=\fP 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
+.B =
+is tested against the both full name of the terminal and the portion
+of the terminal name before the first \fB\-\fP.  This allows
+.I sun
+to match both
+.I sun
+and
+.IR sun\-cmd ,
+for instance.
+.IP \fBapplication\fP
+The \fBapplication\fP construct is used to include
+application-specific settings.  Each program using the readline
+library sets the \fIapplication name\fP, and an initialization
+file 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:
+.sp 1
+.RS
+.nf
+\fB$if\fP Bash
+# Quote the current or previous word
+"\eC\-xq": "\eeb\e"\eef\e""
+\fB$endif\fP
+.fi
+.RE
+.RE
+.IP \fB$endif\fP
+This command, as seen in the previous example, terminates an
+\fB$if\fP command.
+.IP \fB$else\fP
+Commands in this branch of the \fB$if\fP directive are executed if
+the test fails.
+.IP \fB$include\fP
+This directive takes a single filename as an argument and reads commands
+and bindings from that file.  For example, the following directive
+would read \fI/etc/inputrc\fP:
+.sp 1
+.RS
+.nf
+\fB$include\fP \^ \fI/etc/inputrc\fP
+.fi
+.RE
+.SS Searching
+.PP
+Readline provides commands for searching through the command history
+(see
+.SM
+.B HISTORY
+below) for lines containing a specified string.
+There are two search modes:
+.I incremental
+and
+.IR non-incremental .
+.PP
+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.
+The characters present in the value of the \fBisearch-terminators\fP
+variable are used to terminate an incremental search.
+If that variable has not been assigned a value the Escape and
+Control-J characters will terminate an incremental search.
+Control-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.
+.PP
+To find other matching entries in the history list, type Control-S or
+Control-R 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 \fInewline\fP will terminate the search and accept
+the line, thereby executing the command from the history list.
+.PP
+Readline remembers the last incremental search string.  If two
+Control-Rs are typed without any intervening characters defining a
+new search string, any remembered search string is used.
+.PP
+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.
+.SS "Readline Command Names"
+.PP
+The following is a list of the names of the commands and the default
+key sequences to which they are bound.
+Command names without an accompanying key sequence are unbound by default.
+In the following descriptions, \fIpoint\fP refers to the current cursor
+position, and \fImark\fP refers to a cursor position saved by the
+\fBset\-mark\fP command.
+The text between the point and mark is referred to as the \fIregion\fP.
+.SS Commands for Moving
+.PP
+.PD 0
+.TP
+.B beginning\-of\-line (C\-a)
+Move to the start of the current line.
+.TP
+.B end\-of\-line (C\-e)
+Move to the end of the line.
+.TP
+.B forward\-char (C\-f)
+Move forward a character.
+.TP
+.B backward\-char (C\-b)
+Move back a character.
+.TP
+.B forward\-word (M\-f)
+Move forward to the end of the next word.  Words are composed of
+alphanumeric characters (letters and digits).
+.TP
+.B backward\-word (M\-b)
+Move back to the start of the current or previous word.  Words are
+composed of alphanumeric characters (letters and digits).
+.TP
+.B clear\-screen (C\-l)
+Clear the screen leaving the current line at the top of the screen.
+With an argument, refresh the current line without clearing the
+screen.
+.TP
+.B redraw\-current\-line
+Refresh the current line.
+.PD
+.SS Commands for Manipulating the History
+.PP
+.PD 0
+.TP
+.B accept\-line (Newline, 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 state of the
+.SM
+.B HISTCONTROL
+variable.  If the line is a modified history
+line, then restore the history line to its original state.
+.TP
+.B previous\-history (C\-p)
+Fetch the previous command from the history list, moving back in
+the list.
+.TP
+.B next\-history (C\-n)
+Fetch the next command from the history list, moving forward in the
+list.
+.TP
+.B beginning\-of\-history (M\-<)
+Move to the first line in the history.
+.TP
+.B end\-of\-history (M\->)
+Move to the end of the input history, i.e., the line currently being
+entered.
+.TP
+.B 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.
+.TP
+.B 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.
+.TP
+.B non\-incremental\-reverse\-search\-history (M\-p)
+Search backward through the history starting at the current line
+using a non-incremental search for a string supplied by the user.
+.TP
+.B non\-incremental\-forward\-search\-history (M\-n)
+Search forward through the history using a non-incremental search for
+a string supplied by the user.
+.TP
+.B history\-search\-forward
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+This is a non-incremental search.
+.TP
+.B history\-search\-backward
+Search backward through the history for the string of characters
+between the start of the current line and the point.
+This is a non-incremental search.
+.TP
+.B 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
+.IR n ,
+insert the \fIn\fPth word from the previous command (the words
+in the previous command begin with word 0).  A negative argument
+inserts the \fIn\fPth word from the end of the previous command.
+.TP
+.B
+yank\-last\-arg (M\-.\^, M\-_\^)
+Insert the last argument to the previous command (the last word of
+the previous history entry).  With an argument,
+behave exactly like \fByank\-nth\-arg\fP.
+Successive calls to \fByank\-last\-arg\fP move back through the history
+list, inserting the last argument of each line in turn.
+.TP
+.B 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
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B history\-expand\-line (M\-^)
+Perform history expansion on the current line.
+See
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B magic\-space
+Perform history expansion on the current line and insert a space.
+See
+.SM
+.B HISTORY EXPANSION
+below for a description of history expansion.
+.TP
+.B alias\-expand\-line
+Perform alias expansion on the current line.
+See
+.SM
+.B ALIASES
+above for a description of alias expansion.
+.TP
+.B history\-and\-alias\-expand\-line
+Perform history and alias expansion on the current line.
+.TP
+.B insert\-last\-argument (M\-.\^, M\-_\^)
+A synonym for \fByank\-last\-arg\fP.
+.TP
+.B 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.
+.TP
+.B edit\-and\-execute\-command (C\-xC\-e)
+Invoke an editor on the current command line, and execute the result as shell
+commands.
+\fBBash\fP attempts to invoke
+.SM
+.BR $FCEDIT ,
+.SM
+.BR $EDITOR ,
+and \fIemacs\fP as the editor, in that order.
+.PD
+.SS Commands for Changing Text
+.PP
+.PD 0
+.TP
+.B delete\-char (C\-d)
+Delete the character at point.  If point is at the
+beginning of the line, there are no characters in the line, and
+the last character typed was not bound to \fBdelete\-char\fP,
+then return
+.SM
+.BR EOF .
+.TP
+.B backward\-delete\-char (Rubout)
+Delete the character behind the cursor.  When given a numeric argument,
+save the deleted text on the kill ring.
+.TP
+.B 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.
+.TP
+.B quoted\-insert (C\-q, C\-v)
+Add the next character typed to the line verbatim.  This is
+how to insert characters like \fBC\-q\fP, for example.
+.TP
+.B tab\-insert (C\-v TAB)
+Insert a tab character.
+.TP
+.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
+Insert the character typed.
+.TP
+.B transpose\-chars (C\-t)
+Drag the character before point forward over the character at point,
+moving point forward as well.
+If point is at the end of the line, then this transposes
+the two characters before point.
+Negative arguments have no effect.
+.TP
+.B transpose\-words (M\-t)
+Drag the word before point past the word after point,
+moving point over that word as well.
+If point is at the end of the line, this transposes
+the last two words on the line.   
+.TP
+.B upcase\-word (M\-u)
+Uppercase the current (or following) word.  With a negative argument,
+uppercase the previous word, but do not move point.
+.TP
+.B downcase\-word (M\-l)
+Lowercase the current (or following) word.  With a negative argument,
+lowercase the previous word, but do not move point.
+.TP
+.B capitalize\-word (M\-c)
+Capitalize the current (or following) word.  With a negative argument,
+capitalize the previous word, but do not move point.
+.TP
+.B 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
+\fBemacs\fP mode; \fBvi\fP mode does overwrite differently.
+Each call to \fIreadline()\fP starts in insert mode.
+In overwrite mode, characters bound to \fBself\-insert\fP replace   
+the text at point rather than pushing the text to the right.
+Characters bound to \fBbackward\-delete\-char\fP replace the character
+before point with a space.  By default, this command is unbound.
+.PD
+.SS Killing and Yanking
+.PP
+.PD 0
+.TP
+.B kill\-line (C\-k)
+Kill the text from point to the end of the line.
+.TP
+.B backward\-kill\-line (C\-x Rubout)
+Kill backward to the beginning of the line.
+.TP
+.B unix\-line\-discard (C\-u)
+Kill backward from point to the beginning of the line.
+The killed text is saved on the kill-ring.
+.\" There is no real difference between this and backward-kill-line
+.TP
+.B kill\-whole\-line
+Kill all characters on the current line, no matter where point is.
+.TP
+.B 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 those used by \fBforward\-word\fP.
+.TP
+.B backward\-kill\-word (M\-Rubout)
+Kill the word behind point.
+Word boundaries are the same as those used by \fBbackward\-word\fP.
+.TP
+.B 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.
+.TP
+.B delete\-horizontal\-space (M\-\e)
+Delete all spaces and tabs around point.
+.TP
+.B kill\-region
+Kill the text in the current region.
+.TP
+.B copy\-region\-as\-kill
+Copy the text in the region to the kill buffer.
+.TP
+.B copy\-backward\-word
+Copy the word before point to the kill buffer.
+The word boundaries are the same as \fBbackward\-word\fP.
+.TP
+.B copy\-forward\-word
+Copy the word following point to the kill buffer.
+The word boundaries are the same as \fBforward\-word\fP.
+.TP
+.B yank (C\-y)
+Yank the top of the kill ring into the buffer at point.
+.TP
+.B yank\-pop (M\-y)
+Rotate the kill ring, and yank the new top.  Only works following
+.B yank
+or
+.BR yank\-pop .
+.PD
+.SS Numeric Arguments
+.PP
+.PD 0
+.TP
+.B 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.
+.TP
+.B 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
+.B 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.
+.PD
+.SS Completing
+.PP
+.PD 0
+.TP
+.B complete (TAB)
+Attempt to perform completion on the text before point.
+.B Bash
+attempts completion treating the text as a variable (if the
+text begins with \fB$\fP), username (if the text begins with
+\fB~\fP), hostname (if the text begins with \fB@\fP), or
+command (including aliases and functions) in turn.  If none
+of these produces a match, filename completion is attempted.
+.TP
+.B possible\-completions (M\-?)
+List the possible completions of the text before point.
+.TP
+.B insert\-completions (M\-*)
+Insert all completions of the text before point
+that would have been generated by
+\fBpossible\-completions\fP.
+.TP
+.B menu\-complete
+Similar to \fBcomplete\fP, but replaces the word to be completed
+with a single match from the list of possible completions.
+Repeated execution of \fBmenu\-complete\fP 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 \fBbell\-style\fP)
+and the original text is restored.
+An argument of \fIn\fP moves \fIn\fP 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 \fBTAB\fP, but is unbound
+by default.
+.TP
+.B delete\-char\-or\-list
+Deletes the character under the cursor if not at the beginning or
+end of the line (like \fBdelete\-char\fP).
+If at the end of the line, behaves identically to
+\fBpossible\-completions\fP.
+This command is unbound by default.
+.TP
+.B complete\-filename (M\-/)
+Attempt filename completion on the text before point.
+.TP
+.B possible\-filename\-completions (C\-x /)
+List the possible completions of the text before point,
+treating it as a filename.
+.TP
+.B complete\-username (M\-~)
+Attempt completion on the text before point, treating
+it as a username.
+.TP
+.B possible\-username\-completions (C\-x ~)
+List the possible completions of the text before point,
+treating it as a username.
+.TP
+.B complete\-variable (M\-$)
+Attempt completion on the text before point, treating
+it as a shell variable.
+.TP
+.B possible\-variable\-completions (C\-x $)
+List the possible completions of the text before point,
+treating it as a shell variable.
+.TP
+.B complete\-hostname (M\-@)
+Attempt completion on the text before point, treating
+it as a hostname.
+.TP
+.B possible\-hostname\-completions (C\-x @)
+List the possible completions of the text before point,
+treating it as a hostname.
+.TP
+.B 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.
+.TP
+.B possible\-command\-completions (C\-x !)
+List the possible completions of the text before point,
+treating it as a command name.
+.TP
+.B 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.
+.TP
+.B 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
+.B Brace Expansion
+above).
+.PD
+.SS Keyboard Macros
+.PP
+.PD 0
+.TP
+.B start\-kbd\-macro (C\-x (\^)
+Begin saving the characters typed into the current keyboard macro.
+.TP
+.B end\-kbd\-macro (C\-x )\^)
+Stop saving the characters typed into the current keyboard macro
+and store the definition.
+.TP
+.B 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.
+.PD
+.SS Miscellaneous
+.PP
+.PD 0
+.TP
+.B re\-read\-init\-file (C\-x C\-r)
+Read in the contents of the \fIinputrc\fP file, and incorporate
+any bindings or variable assignments found there.
+.TP
+.B abort (C\-g)
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+.BR bell\-style ).
+.TP
+.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...)
+If the metafied character \fIx\fP is lowercase, run the command
+that is bound to the corresponding uppercase character.
+.TP
+.B prefix\-meta (ESC)
+Metafy the next character typed.
+.SM
+.B ESC
+.B f
+is equivalent to
+.BR Meta\-f .
+.TP
+.B undo (C\-_, C\-x C\-u)
+Incremental undo, separately remembered for each line.
+.TP
+.B revert\-line (M\-r)
+Undo all changes made to this line.  This is like executing the
+.B undo
+command enough times to return the line to its initial state.
+.TP
+.B tilde\-expand (M\-&)
+Perform tilde expansion on the current word.
+.TP
+.B set\-mark (C\-@, M\-<space>)
+Set the mark to the point.  If a
+numeric argument is supplied, the mark is set to that position.
+.TP
+.B 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.
+.TP
+.B 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.
+.TP
+.B 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.
+.TP
+.B insert\-comment (M\-#)
+Without a numeric argument, the value of the readline
+.B 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 \fBcomment\-begin\fP, the value is inserted, otherwise
+the characters in \fBcomment-begin\fP 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
+\fBcomment\-begin\fP 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.
+.TP
+.B 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.
+.TP
+.B 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, an asterisk is appended before
+pathname expansion.
+.TP
+.B glob\-list\-expansions (C\-x g)
+The list of expansions that would have been generated by
+.B glob\-expand\-word
+is displayed, and the line is redrawn.
+If a numeric argument is supplied, an asterisk is appended before
+pathname expansion.
+.TP
+.B 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 \fIinputrc\fP file.
+.TP
+.B dump\-variables
+Print all of the settable readline 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 \fIinputrc\fP file.
+.TP
+.B dump\-macros
+Print all of the readline key sequences bound to macros and the
+strings they ouput.  If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an \fIinputrc\fP file.
+.TP
+.B display\-shell\-version (C\-x C\-v)
+Display version information about the current instance of
+.BR bash .
+.PD
+.SS Programmable Completion
+.PP
+When word completion is attempted for an argument to a command for
+which a completion specification (a \fIcompspec\fP) has been defined
+using the \fBcomplete\fP builtin (see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), the programmable completion facilities are invoked.
+.PP
+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 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.
+.PP
+Once a compspec has been found, it is used to generate the list of
+matching words.
+If a compspec is not found, the default \fBbash\fP completion as
+described above under \fBCompleting\fP is performed.
+.PP
+First, the actions specified by the compspec are used.
+Only matches which are prefixed by the word being completed are
+returned.
+When the
+.B \-f
+or
+.B \-d
+option is used for filename or directory name completion, the shell
+variable
+.SM
+.B FIGNORE
+is used to filter the matches.
+.PP
+Any completions specified by a filename expansion pattern to the
+\fB\-G\fP option are generated next.
+The words generated by the pattern need not match the word
+being completed.
+The
+.SM
+.B GLOBIGNORE
+shell variable is not used to filter the matches, but the
+.SM
+.B FIGNORE
+variable is used.
+.PP
+Next, the string specified as the argument to the \fB\-W\fP option
+is considered.
+The string is first split using the characters in the
+.SM
+.B 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, arithmetic expansion, and pathname expansion,
+as described above under 
+.SM
+.BR EXPANSION .
+The results are split using the rules described above under
+\fBWord Splitting\fP.
+The results of the expansion are prefix-matched against the word being
+completed, and the matching words become the possible completions.
+.PP
+After these matches have been generated, any shell function or command
+specified with the \fB\-F\fP and \fB\-C\fP options is invoked.
+When the command or function is invoked, the
+.SM
+.B COMP_LINE
+and
+.SM
+.B COMP_POINT
+variables are assigned values as described above under
+\fBShell Variables\fP.
+If a shell function is being invoked, the 
+.SM
+.B COMP_WORDS
+and
+.SM
+.B COMP_CWORD
+variables are also set.
+When the function or command is invoked, the first argument is the
+name of the command whose arguments are being completed, the
+second argument is the word being completed, and the third argument
+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.
+.PP
+Any function specified with \fB\-F\fP is invoked first.
+The function may use any of the shell facilities, including the
+\fBcompgen\fP builtin described below, to generate the matches.
+It must put the possible completions in the
+.SM
+.B COMPREPLY
+array variable.
+.PP
+Next, any command specified with the \fB\-C\fP 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.
+.PP
+After all of the possible completions are generated, any filter
+specified with the \fB\-X\fP option is applied to the list.
+The filter is a pattern as used for pathname expansion; a \fB&\fP
+in the pattern is replaced with the text of the word being completed.
+A literal \fB&\fP 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 \fB!\fP negates the pattern; in this case any completion
+not matching the pattern will be removed.
+.PP
+Finally, any prefix and suffix specified with the \fB\-P\fP and \fB\-S\fP
+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.
+.PP
+If the previously-applied actions do not generate any matches, and the
+\fB\-o dirnames\fP option was supplied to \fBcomplete\fP when the
+compspec was defined, directory name completion is attempted.
+.PP
+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 \fBbash\fP completions are not attempted, and the readline
+default of filename completion is disabled.
+If the \fB-o default\fP option was supplied to \fBcomplete\fP when the
+compspec was defined, readline's default completion will be performed
+if the compspec generates no matches.
+.PP
+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 \fBmark\-directories\fP readline variable, regardless
+of the setting of the \fBmark-symlinked\-directories\fP readline variable.
+.SH HISTORY
+When the
+.B \-o history
+option to the
+.B set
+builtin is enabled, the shell provides access to the
+\fIcommand history\fP,
+the list of commands previously typed.
+The value of the \fBHISTSIZE\fP variable is used as the
+number of commands to save in a history list.
+The text of the last
+.SM
+.B HISTSIZE
+commands (default 500) is saved.  The shell
+stores each command in the history list prior to parameter and
+variable expansion (see
+.SM
+.B EXPANSION
+above) but after history expansion is performed, subject to the
+values of the shell variables
+.SM
+.B HISTIGNORE
+and
+.SM
+.BR HISTCONTROL .
+.PP
+On startup, the history is initialized from the file named by
+the variable
+.SM
+.B HISTFILE
+(default \fI~/.bash_history\fP).
+The file named by the value of
+.SM
+.B HISTFILE
+is truncated, if necessary, to contain no more than
+the number of lines specified by the value of
+.SM
+.BR HISTFILESIZE .
+When an interactive shell exits, the last
+.SM
+.B $HISTSIZE
+lines are copied from the history list to
+.SM
+.BR $HISTFILE .
+If the
+.B histappend
+shell option is enabled
+(see the description of
+.B shopt
+under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below), the lines are appended to the history file,
+otherwise the history file is overwritten.
+If
+.SM
+.B 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
+.SM
+.B HISTFILESIZE
+lines.  If
+.SM
+.B HISTFILESIZE
+is not set, no truncation is performed.
+.PP
+The builtin command
+.B fc
+(see
+.SM
+.B SHELL BUILTIN COMMANDS
+below) may be used to list or edit and re-execute a portion of
+the history list.
+The
+.B 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.
+.PP
+The shell allows control over which commands are saved on the history
+list.  The
+.SM
+.B HISTCONTROL
+and
+.SM
+.B HISTIGNORE
+variables may be set to cause the shell to save only a subset of the
+commands entered.
+The
+.B 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
+.B lithist
+shell option causes the shell to save the command with embedded newlines
+instead of semicolons.  See the description of the
+.B shopt
+builtin below under
+.SM
+.B "SHELL BUILTIN COMMANDS"
+for information on setting and unsetting shell options.
+.SH "HISTORY EXPANSION"
+.PP
+The shell supports a history expansion feature that
+is similar to the history expansion in
+.BR csh.
+This section describes what syntax features are available.  This
+feature is enabled by default for interactive shells, and can be
+disabled using the
+.B \+H
+option to the
+.B set
+builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).  Non-interactive shells do not perform history expansion
+by default.
+.PP
+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.
+.PP
+History expansion is performed immediately after a complete line
+is read, before the shell breaks it into words.
+It takes place in two parts.
+The first is to determine which line from the history list
+to use during substitution.
+The second is to select portions of that line for inclusion into
+the current one.
+The line selected from the history is the \fIevent\fP,
+and the portions of that line that are acted upon are \fIwords\fP.
+Various \fImodifiers\fP are available to manipulate the selected words.
+The line is broken into words in the same fashion as when reading input,
+so that several \fImetacharacter\fP-separated words surrounded by
+quotes are considered one word.
+History expansions are introduced by the appearance of the
+history expansion character, which is \^\fB!\fP\^ by default.
+Only backslash (\^\fB\e\fP\^) and single quotes can quote
+the history expansion character.
+.PP
+Several shell options settable with the
+.B shopt
+builtin may be used to tailor the behavior of history expansion.
+If the
+.B histverify
+shell option is enabled (see the description of the
+.B shopt
+builtin), and
+.B readline
+is being used, history substitutions are not immediately passed to
+the shell parser.
+Instead, the expanded line is reloaded into the
+.B readline
+editing buffer for further modification.
+If
+.B readline
+is being used, and the
+.B histreedit
+shell option is enabled, a failed history substitution will be reloaded
+into the
+.B readline
+editing buffer for correction.
+The
+.B \-p
+option to the
+.B history
+builtin command may be used to see what a history expansion will
+do before using it.
+The
+.B \-s
+option to the
+.B 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.
+.PP
+The shell allows control of the various characters used by the
+history expansion mechanism (see the description of
+.B histchars
+above under
+.BR "Shell Variables" ).
+.SS Event Designators
+.PP
+An event designator is a reference to a command line entry in the
+history list.
+.PP
+.PD 0
+.TP
+.B !
+Start a history substitution, except when followed by a
+.BR blank ,
+newline, = or ( (when the \fBextglob\fP shell option is enabled using
+the \fBshopt\fP builtin).
+.TP
+.B !\fIn\fR
+Refer to command line
+.IR n .
+.TP
+.B !\-\fIn\fR
+Refer to the current command line minus
+.IR n .
+.TP
+.B !!
+Refer to the previous command.  This is a synonym for `!\-1'.
+.TP
+.B !\fIstring\fR
+Refer to the most recent command starting with 
+.IR string .
+.TP
+.B !?\fIstring\fR\fB[?]\fR
+Refer to the most recent command containing
+.IR string .
+The trailing \fB?\fP may be omitted if
+.I string
+is followed immediately by a newline.
+.TP
+.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
+Quick substitution.  Repeat the last command, replacing
+.I string1
+with
+.IR string2 .
+Equivalent to
+``!!:s/\fIstring1\fP/\fIstring2\fP/''
+(see \fBModifiers\fP below).
+.TP
+.B !#
+The entire command line typed so far.
+.PD
+.SS Word Designators
+.PP
+Word designators are used to select desired words from the event.
+A 
+.B :
+separates the event specification from the word designator.
+It may be omitted if the word designator begins with a
+.BR ^ ,
+.BR $ ,
+.BR * ,
+.BR \- ,
+or
+.BR % .
+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.
+.PP
+.PD 0
+.TP
+.B 0 (zero)
+The zeroth word.  For the shell, this is the command
+word.
+.TP
+.I n
+The \fIn\fRth word.
+.TP
+.B ^
+The first argument.  That is, word 1.
+.TP
+.B $
+The last argument.
+.TP
+.B %
+The word matched by the most recent `?\fIstring\fR?' search.
+.TP
+.I x\fB\-\fPy
+A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
+.TP
+.B *
+All of the words but the zeroth.  This is a synonym
+for `\fI1\-$\fP'.  It is not an error to use
+.B *
+if there is just one
+word in the event; the empty string is returned in that case.
+.TP
+.B x*
+Abbreviates \fIx\-$\fP.
+.TP
+.B x\-
+Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word.
+.PD
+.PP
+If a word designator is supplied without an event specification, the
+previous command is used as the event.
+.SS Modifiers
+.PP
+After the optional word designator, there may appear a sequence of
+one or more of the following modifiers, each preceded by a `:'.
+.PP
+.PD 0
+.PP
+.TP
+.B h
+Remove a trailing file name component, leaving only the head.
+.TP
+.B t
+Remove all leading file name components, leaving the tail.
+.TP
+.B r
+Remove a trailing suffix of the form \fI.xxx\fP, leaving the
+basename.
+.TP
+.B e
+Remove all but the trailing suffix.
+.TP
+.B p
+Print the new command but do not execute it.
+.TP
+.B q
+Quote the substituted words, escaping further substitutions.
+.TP
+.B x
+Quote the substituted words as with
+.BR q ,
+but break into words at
+.B blanks
+and newlines.
+.TP
+.B s/\fIold\fP/\fInew\fP/
+Substitute
+.I new
+for the first occurrence of
+.I old
+in the event line.  Any delimiter can be used in place of /.  The
+final delimiter is optional if it is the last character of the
+event line.  The delimiter may be quoted in
+.I old
+and
+.I new
+with a single backslash.  If & appears in
+.IR new ,
+it is replaced by
+.IR old .
+A single backslash will quote the &.  If
+.I old
+is null, it is set to the last
+.I old
+substituted, or, if no previous history substitutions took place,
+the last
+.I string
+in a
+.B !?\fIstring\fR\fB[?]\fR
+search.
+.TP
+.B &
+Repeat the previous substitution.
+.TP
+.B g
+Cause changes to be applied over the entire event line.  This is
+used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR')
+or `\fB:&\fP'.  If used with
+`\fB:s\fP', any delimiter can be used
+in place of /, and the final delimiter is optional
+if it is the last character of the event line.
+An \fBa\fP may be used as a synonym for \fBg\fP.
+.TP
+.B G
+Apply the following `\fBs\fP' modifier once to each word in the event line.
+.PD
+.SH "SHELL BUILTIN COMMANDS"
+.\" start of bash_builtins
+.zZ
+.PP
+Unless otherwise noted, each builtin command documented in this
+section as accepting options preceded by
+.B \-
+accepts
+.B \-\-
+to signify the end of the options.
+.sp .5
+.PD 0
+.TP
+\fB:\fP [\fIarguments\fP]
+.PD
+No effect; the command does nothing beyond expanding
+.I arguments
+and performing any specified
+redirections.  A zero exit code is returned.
+.TP
+\fB .\| \fP \fIfilename\fP [\fIarguments\fP]
+.PD 0
+.TP
+\fBsource\fP \fIfilename\fP [\fIarguments\fP]
+.PD
+Read and execute commands from
+.I filename
+in the current
+shell environment and return the exit status of the last command
+executed from
+.IR filename .
+If
+.I filename
+does not contain a slash, file names in
+.SM
+.B PATH
+are used to find the directory containing
+.IR filename .
+The file searched for in
+.SM
+.B PATH
+need not be executable.
+When \fBbash\fP is not in \fIposix mode\fP, the current directory is
+searched if no file is found in
+.SM
+.BR PATH .
+If the
+.B sourcepath
+option to the
+.B shopt
+builtin command is turned off, the
+.SM
+.B PATH
+is not searched.
+If any \fIarguments\fP are supplied, they become the positional
+parameters when \fIfilename\fP is executed.  Otherwise the positional
+parameters are unchanged.
+The return status is the status of the last command exited within
+the script (0 if no commands are executed), and false if
+.I filename
+is not found or cannot be read.
+.TP
+\fBalias\fP [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+\fBAlias\fP with no arguments or with the
+.B \-p
+option prints the list of aliases in the form
+\fBalias\fP \fIname\fP=\fIvalue\fP on standard output.
+When arguments are supplied, an alias is defined for
+each \fIname\fP whose \fIvalue\fP is given.
+A trailing space in  \fIvalue\fP causes the next word to be
+checked for alias substitution when the alias is expanded.
+For each \fIname\fP in the argument list for which no \fIvalue\fP
+is supplied, the name and value of the alias is printed.
+\fBAlias\fP returns true unless a \fIname\fP is given for which
+no alias has been defined.
+.TP
+\fBbg\fP [\fIjobspec\fP]
+Resume the suspended job \fIjobspec\fP in the background, as if it
+had been started with
+.BR & .
+If \fIjobspec\fP is not present, the shell's notion of the
+\fIcurrent job\fP is used.
+.B bg
+.I jobspec
+returns 0 unless run when job control is disabled or, when run with
+job control enabled, if \fIjobspec\fP was not found or started without
+job control.
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-lpsvPSV\fP]
+.PD 0
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-q\fP \fIfunction\fP] [\fB\-u\fP \fIfunction\fP] [\fB\-r\fP \fIkeyseq\fP]
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-f\fP \fIfilename\fP
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-x\fP \fIkeyseq\fP:\fIshell\-command\fP
+.TP
+\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP
+.TP
+\fBbind\fP \fIreadline\-command\fP
+.PD
+Display current
+.B readline
+key and function bindings, bind a key sequence to a
+.B readline
+function or macro, or set a
+.B readline
+variable.
+Each non-option argument is a command as it would appear in
+.IR .inputrc ,
+but each binding or command must be passed as a separate argument;
+e.g., '"\eC\-x\eC\-r": re\-read\-init\-file'.
+Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-m \fIkeymap\fP
+Use
+.I keymap
+as the keymap to be affected by the subsequent bindings.
+Acceptable
+.I keymap
+names are
+\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
+vi\-move, vi\-command\fP, and
+.IR vi\-insert .
+\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is
+equivalent to \fIemacs\-standard\fP.
+.TP
+.B \-l
+List the names of all \fBreadline\fP functions.
+.TP
+.B \-p
+Display \fBreadline\fP function names and bindings in such a way
+that they can be re-read.
+.TP
+.B \-P
+List current \fBreadline\fP function names and bindings.
+.TP
+.B \-v
+Display \fBreadline\fP variable names and values in such a way that they
+can be re-read.
+.TP
+.B \-V
+List current \fBreadline\fP variable names and values.
+.TP
+.B \-s
+Display \fBreadline\fP key sequences bound to macros and the strings
+they output in such a way that they can be re-read.
+.TP
+.B \-S
+Display \fBreadline\fP key sequences bound to macros and the strings
+they output.
+.TP
+.B \-f \fIfilename\fP
+Read key bindings from \fIfilename\fP.
+.TP
+.B \-q \fIfunction\fP
+Query about which keys invoke the named \fIfunction\fP.
+.TP
+.B \-u \fIfunction\fP
+Unbind all keys bound to the named \fIfunction\fP.
+.TP
+.B \-r \fIkeyseq\fP
+Remove any current binding for \fIkeyseq\fP.
+.TP
+.B \-x \fIkeyseq\fP:\fIshell\-command\fP
+Cause \fIshell\-command\fP to be executed whenever \fIkeyseq\fP is
+entered.
+.PD
+.PP
+The return value is 0 unless an unrecognized option is given or an
+error occurred.
+.RE
+.TP
+\fBbreak\fP [\fIn\fP]
+Exit from within a
+.BR for ,
+.BR while ,
+.BR until ,
+or
+.B select
+loop.  If \fIn\fP is specified, break \fIn\fP levels.
+.I n
+must be \(>= 1.  If
+.I n
+is greater than the number of enclosing loops, all enclosing loops
+are exited.  The return value is 0 unless the shell is not executing
+a loop when
+.B break
+is executed.
+.TP
+\fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP]
+Execute the specified shell builtin, passing it
+.IR arguments ,
+and return its exit status.
+This is useful when defining a
+function whose name is the same as a shell builtin,
+retaining the functionality of the builtin within the function.
+The \fBcd\fP builtin is commonly redefined this way.
+The return status is false if
+.I shell\-builtin
+is not a shell builtin command.
+.TP
+\fBcd\fP [\fB\-L|-P\fP] [\fIdir\fP]
+Change the current directory to \fIdir\fP.  The variable
+.SM
+.B HOME
+is the
+default
+.IR dir .
+The variable
+.SM
+.B CDPATH
+defines the search path for the directory containing
+.IR dir .
+Alternative directory names in
+.SM
+.B CDPATH
+are separated by a colon (:).  A null directory name in
+.SM
+.B CDPATH
+is the same as the current directory, i.e., ``\fB.\fP''.  If
+.I dir
+begins with a slash (/),
+then
+.SM
+.B CDPATH
+is not used. The
+.B \-P
+option says to use the physical directory structure instead of
+following symbolic links (see also the
+.B \-P
+option to the
+.B set
+builtin command); the
+.B \-L
+option forces symbolic links to be followed.  An argument of
+.B \-
+is equivalent to
+.SM
+.BR $OLDPWD .
+The return value is true if the directory was successfully changed;
+false otherwise.
+.TP
+\fBcaller\fP [\fIexpr\fP]
+Returns the context of any active subroutine call (a shell function or
+a script executed with the \fB.\fP or \fBsource\fP builtins.
+Without \fIexpr\fP, \fBcaller\fP displays the line number and source
+filename of the current subroutine call.
+If a non-negative integer is supplied as \fIexpr\fP, \fBcaller\fP 
+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 \fIexpr\fP does not correspond to a valid position in the
+call stack.
+.TP
+\fBcommand\fP [\fB\-pVv\fP] \fIcommand\fP [\fIarg\fP ...]
+Run
+.I command
+with
+.I args
+suppressing the normal shell function lookup. Only builtin
+commands or commands found in the
+.SM
+.B PATH
+are executed.  If the
+.B \-p
+option is given, the search for
+.I command
+is performed using a default value for
+.B PATH
+that is guaranteed to find all of the standard utilities.
+If either the
+.B \-V
+or
+.B \-v
+option is supplied, a description of
+.I command
+is printed.  The
+.B \-v
+option causes a single word indicating the command or file name
+used to invoke
+.I command
+to be displayed; the
+.B \-V
+option produces a more verbose description.
+If the
+.B \-V
+or
+.B \-v
+option is supplied, the exit status is 0 if
+.I command
+was found, and 1 if not.  If neither option is supplied and
+an error occurred or
+.I command
+cannot be found, the exit status is 127.  Otherwise, the exit status of the
+.B command
+builtin is the exit status of
+.IR command .
+.TP
+\fBcompgen\fP [\fIoption\fP] [\fIword\fP]
+Generate possible completion matches for \fIword\fP according to
+the \fIoption\fPs, which may be any option accepted by the
+.B complete
+builtin with the exception of \fB\-p\fP and \fB\-r\fP, and write
+the matches to the standard output.
+When using the \fB\-F\fP or \fB\-C\fP options, the various shell variables
+set by the programmable completion facilities, while available, will not
+have useful values.
+.sp 1
+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 \fIword\fP is specified, only those completions matching \fIword\fP
+will be displayed.
+.sp 1
+The return value is true unless an invalid option is supplied, or no
+matches were generated.
+.TP
+\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP]
+.br
+[\fB\-X\fP \fIfilterpat\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] \fIname\fP [\fIname ...\fP]
+.PD 0
+.TP
+\fBcomplete\fP \fB\-pr\fP [\fIname\fP ...]
+.PD
+Specify how arguments to each \fIname\fP should be completed.
+If the \fB\-p\fP 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 \fB\-r\fP option removes a completion specification for
+each \fIname\fP, or, if no \fIname\fPs are supplied, all
+completion specifications.
+.sp 1
+The process of applying these completion specifications when word completion
+is attempted is described above under \fBProgrammable Completion\fP.
+.sp 1
+Other options, if specified, have the following meanings.
+The arguments to the \fB\-G\fP, \fB\-W\fP, and \fB\-X\fP options
+(and, if necessary, the \fB\-P\fP and \fB\-S\fP options)
+should be quoted to protect them from expansion before the
+.B complete
+builtin is invoked.
+.RS
+.PD 0
+.TP 8
+\fB\-o\fP \fIcomp-option\fP
+The \fIcomp-option\fP controls several aspects of the compspec's behavior
+beyond the simple generation of completions.
+\fIcomp-option\fP may be one of:
+.RS
+.TP 8
+.B default
+Use readline's default filename completion if the compspec generates
+no matches.
+.TP 8
+.B dirnames
+Perform directory name completion if the compspec generates no matches.
+.TP 8
+.B filenames
+Tell readline that the compspec generates filenames, so it can perform any
+filename\-specific processing (like adding a slash to directory names or
+suppressing trailing spaces).  Intended to be used with shell functions.
+.TP 8
+.B nospace
+Tell readline not to append a space (the default) to words completed at
+the end of the line.
+.RE
+.TP 8
+\fB\-A\fP \fIaction\fP
+The \fIaction\fP may be one of the following to generate a list of possible
+completions:
+.RS
+.TP 8
+.B alias
+Alias names.  May also be specified as \fB\-a\fP.
+.TP 8
+.B arrayvar
+Array variable names.
+.TP 8
+.B binding
+\fBReadline\fP key binding names.
+.TP 8
+.B builtin
+Names of shell builtin commands.  May also be specified as \fB\-b\fP.
+.TP 8
+.B command
+Command names.  May also be specified as \fB\-c\fP.
+.TP 8
+.B directory
+Directory names.  May also be specified as \fB\-d\fP.
+.TP 8
+.B disabled
+Names of disabled shell builtins.
+.TP 8
+.B enabled
+Names of enabled shell builtins.
+.TP 8
+.B export
+Names of exported shell variables.  May also be specified as \fB\-e\fP.
+.TP 8
+.B file
+File names.  May also be specified as \fB\-f\fP.
+.TP 8
+.B function
+Names of shell functions.
+.TP 8
+.B group
+Group names.  May also be specified as \fB\-g\fP.
+.TP 8
+.B helptopic
+Help topics as accepted by the \fBhelp\fP builtin.
+.TP 8
+.B hostname
+Hostnames, as taken from the file specified by the
+.SM
+.B HOSTFILE
+shell variable.
+.TP 8
+.B job
+Job names, if job control is active.  May also be specified as \fB\-j\fP.
+.TP 8
+.B keyword
+Shell reserved words.  May also be specified as \fB\-k\fP.
+.TP 8
+.B running
+Names of running jobs, if job control is active.
+.TP 8
+.B service
+Service names.  May also be specified as \fB\-s\fP.
+.TP 8
+.B setopt
+Valid arguments for the \fB\-o\fP option to the \fBset\fP builtin.
+.TP 8
+.B shopt
+Shell option names as accepted by the \fBshopt\fP builtin.
+.TP 8
+.B signal
+Signal names.
+.TP 8
+.B stopped
+Names of stopped jobs, if job control is active.
+.TP 8
+.B user
+User names.  May also be specified as \fB\-u\fP.
+.TP 8
+.B variable
+Names of all shell variables.  May also be specified as \fB\-v\fP.
+.RE
+.TP 8
+\fB\-G\fP \fIglobpat\fP
+The filename expansion pattern \fIglobpat\fP is expanded to generate
+the possible completions.
+.TP 8
+\fB\-W\fP \fIwordlist\fP
+The \fIwordlist\fP is split using the characters in the
+.SM
+.B 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.
+.TP 8
+\fB\-C\fP \fIcommand\fP
+\fIcommand\fP is executed in a subshell environment, and its output is
+used as the possible completions.
+.TP 8
+\fB\-F\fP \fIfunction\fP
+The shell function \fIfunction\fP is executed in the current shell
+environment.
+When it finishes, the possible completions are retrieved from the value
+of the
+.SM
+.B COMPREPLY
+array variable.
+.TP 8
+\fB\-X\fP \fIfilterpat\fP
+\fIfilterpat\fP 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
+\fIfilterpat\fP is removed from the list.
+A leading \fB!\fP in \fIfilterpat\fP negates the pattern; in this
+case, any completion not matching \fIfilterpat\fP is removed.
+.TP 8
+\fB\-P\fP \fIprefix\fP
+\fIprefix\fP is added at the beginning of each possible completion
+after all other options have been applied.
+.TP 8
+\fB\-S\fP \fIsuffix\fP
+\fIsuffix\fP is appended to each possible completion
+after all other options have been applied.
+.PD
+.PP
+The return value is true unless an invalid option is supplied, an option
+other than \fB\-p\fP or \fB\-r\fP is supplied without a \fIname\fP
+argument, an attempt is made to remove a completion specification for
+a \fIname\fP for which no specification exists, or
+an error occurs adding a completion specification.
+.RE
+.TP
+\fBcontinue\fP [\fIn\fP]
+Resume the next iteration of the enclosing
+.BR for ,
+.BR while ,
+.BR until ,
+or
+.B select
+loop.
+If
+.I n
+is specified, resume at the \fIn\fPth enclosing loop.
+.I n
+must be \(>= 1.  If
+.I n
+is greater than the number of enclosing loops, the last enclosing loop
+(the ``top-level'' loop) is resumed.  The return value is 0 unless the
+shell is not executing a loop when
+.B continue
+is executed.
+.TP
+\fBdeclare\fP [\fB\-afFirtx\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+.PD 0
+.TP
+\fBtypeset\fP [\fB\-afFirtx\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+.PD
+Declare variables and/or give them attributes.
+If no \fIname\fPs are given then display the values of variables.
+The
+.B \-p
+option will display the attributes and values of each
+.IR name .
+When
+.B \-p
+is used, additional options are ignored.
+The
+.B \-F
+option inhibits the display of function definitions; only the
+function name and attributes are printed.
+If the \fBextdebug\fP shell option is enabled using \fBshopt\fP,
+the source file name and line number where the function is defined
+are displayed as well.  The
+.B \-F
+option implies
+.BR \-f .
+The following options can
+be used to restrict output to variables with the specified attribute or
+to give variables attributes:
+.RS
+.PD 0
+.TP
+.B \-a
+Each \fIname\fP is an array variable (see
+.B Arrays
+above).
+.TP
+.B \-f
+Use function names only.
+.TP
+.B \-i
+The variable is treated as an integer; arithmetic evaluation (see
+.SM
+.B "ARITHMETIC EVALUATION" ") "
+is performed when the variable is assigned a value.
+.TP
+.B \-r
+Make \fIname\fPs readonly.  These names cannot then be assigned values
+by subsequent assignment statements or unset.
+.TP
+.B \-t
+Give each \fIname\fP the \fItrace\fP attribute.
+Traced functions inherit the \fBDEBUG\fP trap from the calling shell.
+The trace attribute has no special meaning for variables.
+.TP
+.B \-x
+Mark \fIname\fPs for export to subsequent commands via the environment.
+.PD
+.PP
+Using `+' instead of `\-'
+turns off the attribute instead, with the exception that \fB+a\fP
+may not be used to destroy an array variable.  When used in a function,
+makes each
+\fIname\fP local, as with the 
+.B local
+command.
+If a variable name is followed by =\fIvalue\fP, the value of
+the variable is set to \fIvalue\fP.
+The return value is 0 unless an invalid option is encountered,
+an attempt is made to define a function using
+.if n ``\-f foo=bar'',
+.if t \f(CW\-f foo=bar\fP,
+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
+.B Arrays
+above), one of the \fInames\fP 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 \fB\-f\fP.
+.RE
+.TP
+.B dirs [\fB\-clpv\fP] [+\fIn\fP] [\-\fIn\fP]
+Without options, displays the list of currently remembered directories.
+The default display is on a single line with directory names separated
+by spaces.
+Directories are added to the list with the 
+.B pushd
+command; the
+.B popd
+command removes entries from the list.
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+Displays the \fIn\fPth entry counting from the left of the list
+shown by
+.B dirs
+when invoked without options, starting with zero.
+.TP
+\fB\-\fP\fIn\fP
+Displays the \fIn\fPth entry counting from the right of the list
+shown by
+.B dirs
+when invoked without options, starting with zero.
+.TP
+.B \-c
+Clears the directory stack by deleting all of the entries.
+.TP
+.B \-l
+Produces a longer listing; the default listing format uses a 
+tilde to denote the home directory.
+.TP
+.B \-p
+Print the directory stack with one entry per line.
+.TP
+.B \-v
+Print the directory stack with one entry per line,
+prefixing each entry with its index in the stack.
+.PD
+.PP
+The return value is 0 unless an
+invalid option is supplied or \fIn\fP indexes beyond the end
+of the directory stack.
+.RE
+.TP
+\fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ...]
+Without options, each
+.I jobspec
+is removed from the table of active jobs.
+If the \fB\-h\fP option is given, each
+.I jobspec
+is not removed from the table, but is marked so that
+.SM
+.B SIGHUP
+is not sent to the job if the shell receives a
+.SM
+.BR SIGHUP .
+If no
+.I jobspec
+is present, and neither the
+.B \-a
+nor the
+.B \-r
+option is supplied, the \fIcurrent job\fP is used.
+If no
+.I jobspec
+is supplied, the
+.B \-a
+option means to remove or mark all jobs; the
+.B \-r
+option without a
+.I jobspec
+argument restricts operation to running jobs.
+The return value is 0 unless a
+.I jobspec
+does not specify a valid job.
+.TP
+\fBecho\fP [\fB\-neE\fP] [\fIarg\fP ...]
+Output the \fIarg\fPs, separated by spaces, followed by a newline.
+The return status is always 0.
+If \fB\-n\fP is specified, the trailing newline is
+suppressed.  If the \fB\-e\fP option is given, interpretation of
+the following backslash-escaped characters is enabled.  The
+.B \-E
+option disables the interpretation of these escape characters,
+even on systems where they are interpreted by default.
+The \fBxpg_echo\fP shell option may be used to
+dynamically determine whether or not \fBecho\fP expands these
+escape characters by default.
+.B echo
+does not interpret
+.B \-\-
+to mean the end of options.
+.B echo
+interprets the following escape sequences:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ec
+suppress trailing newline
+.TP
+.B \ee
+an escape character
+.TP
+.B \ef
+form feed
+.TP
+.B \en
+new line
+.TP
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP
+.B \ev
+vertical tab
+.TP
+.B \e\e
+backslash
+.TP
+.B \e0\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(zero to three octal digits)
+.TP
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three octal digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.PD
+.RE
+.TP
+\fBenable\fP [\fB\-adnps\fP] [\fB\-f\fP \fIfilename\fP] [\fIname\fP ...]
+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 \fB\-n\fP is used, each \fIname\fP
+is disabled; otherwise,
+\fInames\fP are enabled.  For example, to use the
+.B test
+binary found via the
+.SM
+.B PATH
+instead of the shell builtin version, run
+.if t \f(CWenable -n test\fP.
+.if n ``enable -n test''.
+The
+.B \-f
+option means to load the new builtin command
+.I name
+from shared object
+.IR filename ,
+on systems that support dynamic loading.  The
+.B \-d
+option will delete a builtin previously loaded with
+.BR \-f .
+If no \fIname\fP arguments are given, or if the
+.B \-p
+option is supplied, a list of shell builtins is printed.
+With no other option arguments, the list consists of all enabled
+shell builtins.
+If \fB\-n\fP is supplied, only disabled builtins are printed.
+If \fB\-a\fP is supplied, the list printed includes all builtins, with an
+indication of whether or not each is enabled.
+If \fB\-s\fP is supplied, the output is restricted to the POSIX
+\fIspecial\fP builtins.
+The return value is 0 unless a
+.I name
+is not a shell builtin or there is an error loading a new builtin
+from a shared object.
+.TP
+\fBeval\fP [\fIarg\fP ...]
+The \fIarg\fPs are read and concatenated together into a single
+command.  This command is then read and executed by the shell, and
+its exit status is returned as the value of
+.BR eval .
+If there are no
+.IR args ,
+or only null arguments,
+.B eval
+returns 0.
+.TP
+\fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fIname\fP] [\fIcommand\fP [\fIarguments\fP]]
+If
+.I command
+is specified, it replaces the shell.
+No new process is created.  The
+.I arguments
+become the arguments to \fIcommand\fP.
+If the
+.B \-l
+option is supplied,
+the shell places a dash at the beginning of the zeroth arg passed to 
+.IR command .
+This is what
+.IR login (1)
+does.  The
+.B \-c
+option causes
+.I command
+to be executed with an empty environment.  If
+.B \-a
+is supplied, the shell passes
+.I name
+as the zeroth argument to the executed command.  If
+.I command
+cannot be executed for some reason, a non-interactive shell exits,
+unless the shell option
+.B execfail
+is enabled, in which case it returns failure.
+An interactive shell returns failure if the file cannot be executed.
+If
+.I command
+is not specified, any redirections take effect in the current shell,
+and the return status is 0.  If there is a redirection error, the
+return status is 1.
+.TP
+\fBexit\fP [\fIn\fP]
+Cause the shell to exit
+with a status of \fIn\fP.  If
+.I n
+is omitted, the exit status
+is that of the last command executed.
+A trap on
+.SM
+.B EXIT
+is executed before the shell terminates.
+.TP
+\fBexport\fP [\fB\-fn\fP\^] [\fIname\fP[=\fIword\fP]] ...
+.PD 0
+.TP
+.B export \-p
+.PD
+The supplied
+.I names
+are marked for automatic export to the environment of
+subsequently executed commands.  If the 
+.B \-f
+option is given,
+the 
+.I names
+refer to functions.
+If no
+.I names
+are given, or if the
+.B \-p
+option is supplied, a list
+of all names that are exported in this shell is printed.
+The
+.B \-n
+option causes the export property to be removed from the
+named variables.
+If a variable name is followed by =\fIword\fP, the value of
+the variable is set to \fIword\fP.
+.B export
+returns an exit status of 0 unless an invalid option is
+encountered,
+one of the \fInames\fP is not a valid shell variable name, or
+.B \-f
+is supplied with a
+.I name
+that is not a function.
+.TP
+\fBfc\fP [\fB\-e\fP \fIename\fP] [\fB\-nlr\fP] [\fIfirst\fP] [\fIlast\fP]
+.PD 0
+.TP
+\fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP]
+.PD
+Fix Command.  In the first form, a range of commands from
+.I first
+to
+.I last
+is selected from the history list.
+.I First
+and
+.I last
+may be specified as a string (to locate the last 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 
+.I last
+is not specified it is set to
+the current command for listing (so that
+.if n ``fc \-l \-10''
+.if t \f(CWfc \-l \-10\fP
+prints the last 10 commands) and to
+.I first
+otherwise.
+If
+.I first
+is not specified it is set to the previous
+command for editing and \-16 for listing.
+.sp 1
+The
+.B \-n
+option suppresses
+the command numbers when listing.  The
+.B \-r
+option reverses the order of
+the commands.  If the
+.B \-l
+option is given,
+the commands are listed on
+standard output.  Otherwise, the editor given by
+.I ename
+is invoked
+on a file containing those commands.  If
+.I ename
+is not given, the
+value of the
+.SM
+.B FCEDIT
+variable is used, and
+the value of
+.SM
+.B EDITOR
+if
+.SM
+.B FCEDIT
+is not set.  If neither variable is set,
+.FN vi
+is used.  When editing is complete, the edited commands are
+echoed and executed.
+.sp 1
+In the second form, \fIcommand\fP is re-executed after each instance
+of \fIpat\fP is replaced by \fIrep\fP.
+A useful alias to use with this is
+.if n ``r="fc -s"'',
+.if t \f(CWr='fc \-s'\fP,
+so that typing
+.if n ``r cc''
+.if t \f(CWr cc\fP
+runs the last command beginning with
+.if n ``cc''
+.if t \f(CWcc\fP
+and typing
+.if n ``r''
+.if t \f(CWr\fP
+re-executes the last command.
+.sp 1
+If the first form is used, the return value is 0 unless an invalid
+option is encountered or
+.I first
+or
+.I last
+specify history lines out of range.
+If the
+.B \-e
+option is supplied, the return value is the value of the last
+command executed or failure if an error occurs with the temporary
+file of commands.  If the second form is used, the return status
+is that of the command re-executed, unless
+.I cmd
+does not specify a valid history line, in which case
+.B fc
+returns failure.
+.TP
+\fBfg\fP [\fIjobspec\fP]
+Resume
+.I jobspec
+in the foreground, and make it the current job.
+If
+.I jobspec
+is not present, the shell's notion of the \fIcurrent job\fP is used.
+The return value is that of the command placed into the foreground,
+or failure if run when job control is disabled or, when run with
+job control enabled, if
+.I jobspec
+does not specify a valid job or
+.I jobspec
+specifies a job that was started without job control.
+.TP
+\fBgetopts\fP \fIoptstring\fP \fIname\fP [\fIargs\fP]
+.B getopts
+is used by shell procedures to parse positional parameters.
+.I 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 white space.
+The colon and question mark characters may not be used as
+option characters.
+Each time it is invoked,
+.B getopts
+places the next option in the shell variable
+.IR name ,
+initializing
+.I name
+if it does not exist,
+and the index of the next argument to be processed into the
+variable
+.SM
+.BR OPTIND .
+.SM
+.B OPTIND
+is initialized to 1 each time the shell or a shell script
+is invoked.  When an option requires an argument,
+.B getopts
+places that argument into the variable
+.SM
+.BR OPTARG .
+The shell does not reset
+.SM
+.B OPTIND
+automatically; it must be manually reset between multiple
+calls to
+.B getopts
+within the same shell invocation if a new set of parameters
+is to be used.
+.sp 1
+When the end of options is encountered, \fBgetopts\fP exits with a
+return value greater than zero.
+\fBOPTIND\fP is set to the index of the first non-option argument,
+and \fBname\fP is set to ?.
+.sp 1
+.B getopts
+normally parses the positional parameters, but if more arguments are
+given in
+.IR args ,
+.B getopts
+parses those instead.
+.sp 1
+.B getopts
+can report errors in two ways.  If the first character of
+.I optstring
+is a colon,
+.I silent
+error reporting is used.  In normal operation diagnostic messages
+are printed when invalid options or missing option arguments are
+encountered.
+If the variable
+.SM
+.B OPTERR
+is set to 0, no error messages will be displayed, even if the first
+character of 
+.I optstring
+is not a colon.
+.sp 1
+If an invalid option is seen,
+.B getopts
+places ? into
+.I name
+and, if not silent,
+prints an error message and unsets
+.SM
+.BR OPTARG .
+If
+.B getopts
+is silent,
+the option character found is placed in
+.SM
+.B OPTARG
+and no diagnostic message is printed.
+.sp 1
+If a required argument is not found, and
+.B getopts
+is not silent,
+a question mark (\^\fB?\fP\^) is placed in
+.IR name ,
+.SM
+.B OPTARG
+is unset, and a diagnostic message is printed.
+If
+.B getopts
+is silent, then a colon (\^\fB:\fP\^) is placed in
+.I name
+and
+.SM
+.B OPTARG
+is set to the option character found.
+.sp 1
+.B getopts
+returns true if an option, specified or unspecified, is found.
+It returns false if the end of options is encountered or an
+error occurs.
+.TP
+\fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIfilename\fP] [\fB\-dt\fP] [\fIname\fP]
+For each
+.IR name ,
+the full file name of the command is determined by searching
+the directories in
+.B $PATH
+and remembered.
+If the
+.B \-p
+option is supplied, no path search is performed, and
+.I filename
+is used as the full file name of the command.
+The
+.B \-r
+option causes the shell to forget all
+remembered locations.
+The
+.B \-d
+option causes the shell to forget the remembered location of each \fIname\fP.
+If the
+.B \-t
+option is supplied, the full pathname to which each \fIname\fP corresponds
+is printed.  If multiple \fIname\fP arguments are supplied with \fB\-t\fP,
+the \fIname\fP is printed before the hashed full pathname.
+The
+.B \-l
+option causes output to be displayed in a format that may be reused as input.
+If no arguments are given, or if only \fB\-l\fP is supplied,
+information about remembered commands is printed.
+The return status is true unless a
+.I name
+is not found or an invalid option is supplied.
+.TP
+\fBhelp\fP [\fB\-s\fP] [\fIpattern\fP]
+Display helpful information about builtin commands.  If
+.I pattern
+is specified,
+.B help
+gives detailed help on all commands matching
+.IR pattern ;
+otherwise help for all the builtins and shell control structures
+is printed.
+The \fB\-s\fP option restricts the information displayed to a short
+usage synopsis.
+The return status is 0 unless no command matches
+.IR pattern .
+.TP
+\fBhistory [\fIn\fP]
+.PD 0
+.TP
+\fBhistory\fP \fB\-c\fP
+.TP
+\fBhistory \-d\fP \fIoffset\fP
+.TP
+\fBhistory\fP \fB\-anrw\fP [\fIfilename\fP]
+.TP
+\fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP]
+.TP
+\fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg ...\fP]
+.PD
+With no options, display the command
+history list with line numbers.  Lines listed
+with a 
+.B *
+have been modified.  An argument of
+.I n
+lists only the last
+.I n
+lines.  If \fIfilename\fP is supplied, it is used as the
+name of the history file; if not, the value of
+.SM
+.B HISTFILE
+is used.  Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-c
+Clear the history list by deleting all the entries.
+.TP
+\fB\-d\fP \fIoffset\fP
+Delete the history entry at position \fIoffset\fP.
+.TP
+.B \-a
+Append the ``new'' history lines (history lines entered since the
+beginning of the current \fBbash\fP session) to the history file.
+.TP
+.B \-n
+Read the history lines not already read from the history
+file into the current history list.  These are lines
+appended to the history file since the beginning of the
+current \fBbash\fP session.
+.TP
+.B \-r
+Read the contents of the history file
+and use them as the current history.
+.TP
+.B \-w
+Write the current history to the history file, overwriting the
+history file's contents.
+.TP
+.B \-p
+Perform history substitution on the following \fIargs\fP and display
+the result on the standard output.
+Does not store the results in the history list.
+Each \fIarg\fP must be quoted to disable normal history expansion.
+.TP
+.B \-s
+Store the
+.I args
+in the history list as a single entry.  The last command in the
+history list is removed before the
+.I args
+are added.
+.PD
+.PP
+The return value is 0 unless an invalid option is encountered, an
+error occurs while reading or writing the history file, an invalid
+\fIoffset\fP is supplied as an argument to \fB\-d\fP, or the
+history expansion supplied as an argument to \fB\-p\fP fails.
+.RE
+.TP
+\fBjobs\fP [\fB\-lnprs\fP] [ \fIjobspec\fP ... ]
+.PD 0
+.TP
+\fBjobs\fP \fB\-x\fP \fIcommand\fP [ \fIargs\fP ... ]
+.PD
+The first form lists the active jobs.  The options have the following
+meanings:
+.RS
+.PD 0
+.TP
+.B \-l
+List process IDs
+in addition to the normal information.
+.TP
+.B \-p
+List only the process ID of the job's process group
+leader.
+.TP
+.B \-n
+Display information only about jobs that have changed status since
+the user was last notified of their status.
+.TP
+.B \-r
+Restrict output to running jobs.
+.TP
+.B \-s
+Restrict output to stopped jobs.
+.PD
+.PP
+If
+.I jobspec
+is given, output is restricted to information about that job.
+The return status is 0 unless an invalid option is encountered
+or an invalid
+.I jobspec
+is supplied.
+.PP
+If the
+.B \-x
+option is supplied,
+.B jobs
+replaces any
+.I jobspec
+found in
+.I command
+or
+.I args
+with the corresponding process group ID, and executes
+.I command
+passing it
+.IR args ,
+returning its exit status.
+.RE
+.TP
+\fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] [\fIpid\fP | \fIjobspec\fP] ...
+.PD 0
+.TP
+\fBkill\fP \fB\-l\fP [\fIsigspec\fP | \fIexit_status\fP]
+.PD
+Send the signal named by
+.I sigspec
+or
+.I signum
+to the processes named by
+.I pid
+or
+.IR jobspec .
+.I sigspec
+is either a signal name such as
+.SM
+.B SIGKILL
+or a signal number;
+.I signum
+is a signal number.  If
+.I sigspec
+is a signal name, the name may be
+given with or without the
+.SM
+.B SIG
+prefix.
+If
+.I sigspec
+is not present, then
+.SM
+.B SIGTERM
+is assumed.
+An argument of
+.B \-l
+lists the signal names.
+If any arguments are supplied when
+.B \-l
+is given, the names of the signals corresponding to the arguments are
+listed, and the return status is 0.
+The \fIexit_status\fP argument to
+.B \-l
+is a number specifying either a signal number or the exit status of
+a process terminated by a signal.
+.B kill
+returns true if at least one signal was successfully sent, or false
+if an error occurs or an invalid option is encountered.
+.TP
+\fBlet\fP \fIarg\fP [\fIarg\fP ...]
+Each
+.I arg
+is an arithmetic expression to be evaluated (see
+.SM
+.BR "ARITHMETIC EVALUATION" ).
+If the last
+.I arg
+evaluates to 0,
+.B let
+returns 1; 0 is returned otherwise.
+.TP
+\fBlocal\fP [\fIoption\fP] [\fIname\fP[=\fIvalue\fP] ...]
+For each argument, a local variable named
+.I name 
+is created, and assigned
+.IR value .
+The \fIoption\fP can be any of the options accepted by \fBdeclare\fP.
+When
+.B local
+is used within a function, it causes the variable
+.I name
+to have a visible scope restricted to that function and its children.
+With no operands,
+.B local
+writes a list of local variables to the standard output.  It is
+an error to use
+.B local
+when not within a function.  The return status is 0 unless
+.B local
+is used outside a function, an invalid
+.I name
+is supplied, or
+\fIname\fP is a readonly variable.
+.TP
+.B logout
+Exit a login shell.
+.TP
+\fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP]
+Removes entries from the directory stack.  With no arguments,
+removes the top directory from the stack, and performs a
+.B cd
+to the new top directory.
+Arguments, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+Removes the \fIn\fPth entry counting from the left of the list
+shown by
+.BR dirs ,
+starting with zero.  For example:
+.if n ``popd +0''
+.if t \f(CWpopd +0\fP
+removes the first directory,
+.if n ``popd +1''
+.if t \f(CWpopd +1\fP
+the second.
+.TP
+\fB\-\fP\fIn\fP
+Removes the \fIn\fPth entry counting from the right of the list
+shown by
+.BR dirs ,
+starting with zero.  For example:
+.if n ``popd -0''
+.if t \f(CWpopd -0\fP
+removes the last directory,
+.if n ``popd -1''
+.if t \f(CWpopd -1\fP
+the next to last.
+.TP
+.B \-n
+Suppresses the normal change of directory when removing directories
+from the stack, so that only the stack is manipulated.
+.PD
+.PP
+If the
+.B popd
+command is successful, a 
+.B dirs
+is performed as well, and the return status is 0.
+.B popd
+returns false if an invalid option is encountered, the directory stack
+is empty, a non-existent directory stack entry is specified, or the
+directory change fails.
+.RE
+.TP
+\fBprintf\fP \fIformat\fP [\fIarguments\fP]
+Write the formatted \fIarguments\fP to the standard output under the
+control of the \fIformat\fP.
+The \fIformat\fP 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
+\fIargument\fP.
+In addition to the standard \fIprintf\fP(1) formats, \fB%b\fP causes
+\fBprintf\fP to expand backslash escape sequences in the corresponding
+\fIargument\fP, and \fB%q\fP causes \fBprintf\fP to output the corresponding
+\fIargument\fP in a format that can be reused as shell input.
+.sp 1
+The \fIformat\fP is reused as necessary to consume all of the \fIarguments\fP.
+If the \fIformat\fP requires more \fIarguments\fP 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.
+.TP
+\fBpushd\fP [\fB\-n\fP] [\fIdir\fP]
+.PD 0
+.TP
+\fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP]
+.PD
+Adds a directory to the top of the directory stack, or rotates
+the stack, making the new top of the stack the current working
+directory.  With no arguments, exchanges the top two directories
+and returns 0, unless the directory stack is empty.
+Arguments, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+\fB+\fP\fIn\fP
+Rotates the stack so that the \fIn\fPth directory
+(counting from the left of the list shown by
+.BR dirs ,
+starting with zero)
+is at the top.
+.TP
+\fB\-\fP\fIn\fP
+Rotates the stack so that the \fIn\fPth directory
+(counting from the right of the list shown by
+.BR dirs ,
+starting with zero) is at the top.
+.TP
+.B \-n
+Suppresses the normal change of directory when adding directories
+to the stack, so that only the stack is manipulated.
+.TP
+.I dir
+Adds
+.I dir
+to the directory stack at the top, making it the
+new current working directory.
+.PD
+.PP
+If the
+.B pushd
+command is successful, a 
+.B dirs
+is performed as well.
+If the first form is used,
+.B pushd
+returns 0 unless the cd to
+.I dir
+fails.  With the second form,
+.B pushd
+returns 0 unless the directory stack is empty,
+a non-existent directory stack element is specified,
+or the directory change to the specified new current directory
+fails.
+.RE
+.TP
+\fBpwd\fP [\fB\-LP\fP]
+Print the absolute pathname of the current working directory.
+The pathname printed contains no symbolic links if the
+.B \-P
+option is supplied or the 
+.B \-o physical
+option to the
+.B set
+builtin command is enabled.
+If the
+.B \-L
+option is used, the pathname printed may contain symbolic links.
+The return status is 0 unless an error occurs while
+reading the name of the current directory or an
+invalid option is supplied.
+.TP
+\fBread\fP [\fB\-ers\fP] [\fB\-u\fP \fIfd\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-a\fP \fIaname\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-n\fP \fInchars\fP] [\fB\-d\fP \fIdelim\fP] [\fIname\fP ...]
+One line is read from the standard input, or from the file descriptor
+\fIfd\fP supplied as an argument to the \fB\-u\fP option, and the first word
+is assigned to the first
+.IR name ,
+the second word to the second
+.IR name ,
+and so on, with leftover words and their intervening separators assigned
+to the last
+.IR name .
+If there are fewer words read from the input stream than names,
+the remaining names are assigned empty values.
+The characters in 
+.SM
+.B IFS
+are used to split the line into words.
+The backslash character (\fB\e\fP) may be used to remove any special
+meaning for the next character read and for line continuation.
+Options, if supplied, have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-a \fIaname\fP
+The words are assigned to sequential indices
+of the array variable
+.IR aname ,
+starting at 0.
+.I aname
+is unset before any new values are assigned.
+Other \fIname\fP arguments are ignored.
+.TP
+.B \-d \fIdelim\fP
+The first character of \fIdelim\fP is used to terminate the input line,
+rather than newline.
+.TP
+.B \-e
+If the standard input
+is coming from a terminal,
+.B readline
+(see
+.SM
+.B READLINE
+above) is used to obtain the line.
+.TP
+.B \-n \fInchars\fP
+\fBread\fP returns after reading \fInchars\fP characters rather than
+waiting for a complete line of input.
+.TP
+.B \-p \fIprompt\fP
+Display \fIprompt\fP on standard error, without a
+trailing newline, before attempting to read any input.  The prompt
+is displayed only if input is coming from a terminal.
+.TP
+.B \-r
+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.
+.TP
+.B \-s
+Silent mode.  If input is coming from a terminal, characters are
+not echoed.
+.TP
+.B \-t \fItimeout\fP
+Cause \fBread\fP to time out and return failure if a complete line of
+input is not read within \fItimeout\fP seconds.
+This option has no effect if \fBread\fP is not reading input from the
+terminal or a pipe.
+.TP
+.B \-u \fIfd\FP
+Read input from file descriptor \fIfd\fP.
+.PD
+.PP
+If no
+.I names
+are supplied, the line read is assigned to the variable
+.SM
+.BR REPLY .
+The return code is zero, unless end-of-file is encountered, \fBread\fP
+times out, or an invalid file descriptor is supplied as the argument to
+\fB\-u\fP.
+.RE
+.TP
+\fBreadonly\fP [\fB\-apf\fP] [\fIname\fP[=\fIword\fP] ...]
+.PD
+The given
+\fInames\fP are marked readonly; the values of these
+.I names
+may not be changed by subsequent assignment.
+If the
+.B \-f
+option is supplied, the functions corresponding to the
+\fInames\fP are so
+marked.
+The
+.B \-a
+option restricts the variables to arrays.
+If no
+.I name
+arguments are given, or if the
+.B \-p
+option is supplied, a list of all readonly names is printed.
+The
+.B \-p
+option causes output to be displayed in a format that
+may be reused as input.
+If a variable name is followed by =\fIword\fP, the value of
+the variable is set to \fIword\fP.
+The return status is 0 unless an invalid option is encountered,
+one of the
+.I names
+is not a valid shell variable name, or
+.B \-f
+is supplied with a
+.I name
+that is not a function.
+.TP
+\fBreturn\fP [\fIn\fP]
+Causes a function to exit with the return value specified by
+.IR n .
+If 
+.I n
+is omitted, the return status is that of the last command
+executed in the function body.  If used outside a function,
+but during execution of a script by the 
+.B .
+(\fBsource\fP) command, it causes the shell to stop executing
+that script and return either
+.I n
+or the exit status of the last command executed within the
+script as the exit status of the script.  If used outside a
+function and not during execution of a script by \fB.\fP\^,
+the return status is false.
+Any command associated with the \fBRETURN\fP trap is executed
+before execution resumes after the function or script.
+.TP
+\fBset\fP [\fB\-\-abefhkmnptuvxBCHP\fP] [\fB\-o\fP \fIoption\fP] [\fIarg\fP ...]
+Without options, the name and value of each shell variable are displayed
+in a format that can be reused as input.
+The output is sorted according to the current locale.
+When options are specified, they set or unset shell attributes.
+Any arguments remaining after the options are processed are treated
+as values for the positional parameters and are assigned, in order, to 
+.BR $1 ,
+.BR $2 ,
+.B ...
+.BR $\fIn\fP .
+Options, if specified, have the following meanings:
+.RS
+.PD 0
+.TP 8
+.B \-a
+Automatically mark variables and functions which are modified or created
+for export to the environment of subsequent commands.
+.TP 8
+.B \-b
+Report the status of terminated background jobs
+immediately, rather than before the next primary prompt.  This is
+effective only when job control is enabled.
+.TP 8
+.B \-e
+Exit immediately if a \fIsimple command\fP (see
+.SM
+.B SHELL GRAMMAR
+above) exits with a non-zero status.
+The shell does not exit if the
+command that fails is part of the command list immediately following a
+.B while
+or
+.B until
+keyword, 
+part of the test in an
+.I if
+statement, part of a
+.B &&
+or
+.B \(bv\(bv
+list, or if the command's return value is
+being inverted via
+.BR ! .
+A trap on \fBERR\fP, if set, is executed before the shell exits.
+.TP 8
+.B \-f
+Disable pathname expansion.
+.TP 8 
+.B \-h
+Remember the location of commands as they are looked up for execution.
+This is enabled by default.
+.TP 8
+.B \-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.
+.TP 8
+.B \-m
+Monitor mode.  Job control is enabled.  This option is on
+by default for interactive shells on systems that support
+it (see
+.SM
+.B JOB CONTROL
+above).  Background processes run in a separate process
+group and a line containing their exit status is printed
+upon their completion.
+.TP 8
+.B \-n
+Read commands but do not execute them.  This may be used to 
+check a shell script for syntax errors.  This is ignored by
+interactive shells.
+.TP 8
+.B \-o \fIoption\-name\fP
+The \fIoption\-name\fP can be one of the following:
+.RS
+.TP 8
+.B allexport
+Same as
+.BR \-a .
+.TP 8
+.B braceexpand
+Same as
+.BR \-B .
+.TP 8
+.B emacs
+Use an emacs-style command line editing interface.  This is enabled
+by default when the shell is interactive, unless the shell is started
+with the
+.B \-\-noediting
+option.
+.TP 8
+.B errtrace
+Same as
+.BR \-E .
+.TP 8
+.B functrace
+Same as
+.BR \-T .
+.TP 8
+.B errexit
+Same as
+.BR \-e .
+.TP 8
+.B hashall
+Same as
+.BR \-h .
+.TP 8
+.B histexpand
+Same as
+.BR \-H .
+.TP 8
+.B history
+Enable command history, as described above under
+.SM
+.BR HISTORY .
+This option is on by default in interactive shells.
+.TP 8
+.B ignoreeof
+The effect is as if the shell command
+.if t \f(CWIGNOREEOF=10\fP
+.if n ``IGNOREEOF=10''
+had been executed
+(see
+.B Shell Variables
+above).
+.TP 8
+.B keyword
+Same as
+.BR \-k .
+.TP 8
+.B monitor
+Same as
+.BR \-m .
+.TP 8
+.B noclobber
+Same as
+.BR \-C .
+.TP 8
+.B noexec
+Same as
+.BR \-n .
+.TP 8
+.B noglob
+Same as
+.BR \-f .
+.B nolog
+Currently ignored.
+.TP 8
+.B notify
+Same as
+.BR \-b .
+.TP 8
+.B nounset
+Same as
+.BR \-u .
+.TP 8
+.B onecmd
+Same as
+.BR \-t .
+.TP 8
+.B physical
+Same as
+.BR \-P .
+.TP 8
+.B posix
+Change the behavior of
+.B bash
+where the default operation differs
+from the POSIX 1003.2 standard to match the standard (\fIposix mode\fP).
+.TP 8
+.B privileged
+Same as
+.BR \-p .
+.TP 8
+.B verbose
+Same as
+.BR \-v .
+.TP 8
+.B vi
+Use a vi-style command line editing interface.
+.TP 8
+.B xtrace
+Same as
+.BR \-x .
+.sp .5
+.PP
+If
+.B \-o
+is supplied with no \fIoption\-name\fP, the values of the current options are
+printed.
+If
+.B +o
+is supplied with no \fIoption\-name\fP, a series of
+.B set
+commands to recreate the current option settings is displayed on
+the standard output.
+.RE
+.TP 8
+.B \-p
+Turn on
+.I privileged
+mode.  In this mode, the
+.SM
+.B $ENV
+and
+.SM
+.B $BASH_ENV
+files are not processed, shell functions are not inherited from the
+environment, and the
+.SM
+.B SHELLOPTS
+variable, if it appears in the environment, is ignored.
+If the shell is started with the effective user (group) id not equal to the
+real user (group) id, and the \fB\-p\fP option is not supplied, these actions
+are taken and the effective user id is set to the real user id.
+If the \fB\-p\fP 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.
+.TP 8
+.B \-t
+Exit after reading and executing one command.
+.TP 8
+.B \-u
+Treat unset variables as an error when performing
+parameter expansion.  If expansion is attempted on an
+unset variable, the shell prints an error message, and,
+if not interactive, exits with a non-zero status.
+.TP 8
+.B \-v
+Print shell input lines as they are read.
+.TP 8
+.B \-x
+After expanding each \fIsimple command\fP,
+\fBfor\fP command, \fBcase\fP command, \fBselect\fP command, or
+arithmetic \fBfor\fP command, display the expanded value of
+.SM
+.BR PS4 ,
+followed by the command and its expanded arguments
+or associated word list.
+.TP 8
+.B \-B
+The shell performs brace expansion (see
+.B Brace Expansion
+above).  This is on by default.
+.TP 8
+.B \-C
+If set,
+.B bash
+does not overwrite an existing file with the
+.BR > ,
+.BR >& ,
+and
+.B <>
+redirection operators.  This may be overridden when 
+creating output files by using the redirection operator
+.B >|
+instead of
+.BR > .
+.TP 8
+.B \-E
+If set, any trap on \fBERR\fP is inherited by shell functions, command
+substitutions, and commands executed in a subshell environment.
+The \fBERR\fP trap is normally not inherited in such cases.
+.TP 8
+.B \-H
+Enable
+.B !
+style history substitution.  This option is on by
+default when the shell is interactive.
+.TP 8
+.B \-P
+If set, the shell does not follow symbolic links when executing
+commands such as
+.B cd
+that change the current working directory.  It uses the
+physical directory structure instead.  By default,
+.B bash
+follows the logical chain of directories when performing commands
+which change the current directory.
+.TP 8
+.B \-T
+If set, any trap on \fBDEBUG\fP is inherited by shell functions, command
+substitutions, and commands executed in a subshell environment.
+The \fBDEBUG\fP trap is normally not inherited in such cases.
+.TP 8
+.B \-\-
+If no arguments follow this option, then the positional parameters are
+unset.  Otherwise, the positional parameters are set to the
+\fIarg\fPs, even if some of them begin with a
+.BR \- .
+.TP 8
+.B \-
+Signal the end of options, cause all remaining \fIarg\fPs to be
+assigned to the positional parameters.  The
+.B \-x
+and
+.B \-v
+options are turned off.
+If there are no \fIarg\fPs,
+the positional parameters remain unchanged.
+.PD
+.PP
+The options are off by default unless otherwise noted.
+Using + rather than \- causes these options to be turned off.
+The options can also be specified as arguments to an invocation of
+the shell.
+The current set of options may be found in
+.BR $\- .
+The return status is always true unless an invalid option is encountered.
+.RE
+.TP
+\fBshift\fP [\fIn\fP]
+The positional parameters from \fIn\fP+1 ... are renamed to
+.B $1
+.B ....
+Parameters represented by the numbers \fB$#\fP
+down to \fB$#\fP\-\fIn\fP+1 are unset.
+.I n
+must be a non-negative number less than or equal to \fB$#\fP.
+If
+.I n
+is 0, no parameters are changed.
+If
+.I n 
+is not given, it is assumed to be 1.
+If
+.I n
+is greater than \fB$#\fP, the positional parameters are not changed.
+The return status is greater than zero if
+.I n
+is greater than
+.B $#
+or less than zero; otherwise 0.
+.TP
+\fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fIoptname\fP ...]
+Toggle the values of variables controlling optional shell behavior.
+With no options, or with the
+.B \-p
+option, a list of all settable options is displayed, with
+an indication of whether or not each is set.
+The \fB\-p\fP option causes output to be displayed in a form that
+may be reused as input.
+Other options have the following meanings:
+.RS
+.PD 0
+.TP
+.B \-s
+Enable (set) each \fIoptname\fP.
+.TP
+.B \-u
+Disable (unset) each \fIoptname\fP.
+.TP
+.B \-q
+Suppresses normal output (quiet mode); the return status indicates
+whether the \fIoptname\fP is set or unset.
+If multiple \fIoptname\fP arguments are given with
+.BR \-q ,
+the return status is zero if all \fIoptnames\fP are enabled; non-zero
+otherwise.
+.TP
+.B \-o
+Restricts the values of \fIoptname\fP to be those defined for the
+.B \-o
+option to the
+.B set
+builtin.
+.PD
+.PP
+If either
+.B \-s
+or
+.B \-u
+is used with no \fIoptname\fP arguments, the display is limited to
+those options which are set or unset, respectively.
+Unless otherwise noted, the \fBshopt\fP options are disabled (unset)
+by default.
+.PP
+The return status when listing options is zero if all \fIoptnames\fP
+are enabled, non-zero otherwise.  When setting or unsetting options,
+the return status is zero unless an \fIoptname\fP is not a valid shell
+option.
+.PP
+The list of \fBshopt\fP options is:
+.if t .sp .5v
+.if n .sp 1v
+.PD 0
+.TP 8
+.B cdable_vars
+If set, an argument to the
+.B 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.
+.TP 8
+.B cdspell
+If set, minor errors in the spelling of a directory component in a
+.B cd
+command will be corrected.
+The errors checked for are transposed characters,
+a missing character, and one character too many.
+If a correction is found, the corrected file name is printed,
+and the command proceeds.
+This option is only used by interactive shells.
+.TP 8
+.B checkhash
+If set, \fBbash\fP 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.
+.TP 8
+.B checkwinsize
+If set, \fBbash\fP checks the window size after each command
+and, if necessary, updates the values of
+.SM
+.B LINES
+and
+.SM
+.BR COLUMNS .
+.TP 8
+.B cmdhist
+If set,
+.B 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.
+.TP 8
+.B dotglob
+If set, 
+.B bash
+includes filenames beginning with a `.' in the results of pathname
+expansion.
+.TP 8
+.B execfail
+If set, a non-interactive shell will not exit if
+it cannot execute the file specified as an argument to the
+.B exec
+builtin command.  An interactive shell does not exit if
+.B exec
+fails.
+.TP 8
+.B expand_aliases
+If set, aliases are expanded as described above under
+.SM
+.BR ALIASES .
+This option is enabled by default for interactive shells.
+.TP 8
+.B extdebug
+If set, behavior intended for use by debuggers is enabled:
+.RS
+.TP
+.B 1.
+The \fB\-F\fP option to the \fBdeclare\fP builtin displays the source
+file name and line number corresponding to each function name supplied
+as an argument.
+.TP
+.B 2.
+If the command run by the \fBDEBUG\fP trap returns a non-zero value, the
+next command is skipped and not executed.
+.TP
+.B 3.
+If the command run by the \fBDEBUG\fP trap returns a value of 2, and the
+shell is executing in a subroutine (a shell function or a shell script
+executed by the \fB.\fP or \fBsource\fP builtins), a call to
+\fBreturn\fP is simulated.
+.RE
+.TP 8
+.B extglob
+If set, the extended pattern matching features described above under
+\fBPathname Expansion\fP are enabled.
+.TP 8
+.B extquote
+If set, \fB$\fP'\fIstring\fP' and \fB$\fP"\fIstring\fP" quoting is
+performed within \fB${\fP\fIparameter\fP\fB}\fP expansions
+enclosed in double quotes.  This option is enabled by default.
+.TP 8
+.B histappend
+If set, the history list is appended to the file named by the value
+of the
+.B HISTFILE
+variable when the shell exits, rather than overwriting the file.
+.TP 8
+.B histreedit
+If set, and
+.B readline
+is being used, a user is given the opportunity to re-edit a
+failed history substitution.
+.TP 8
+.B histverify
+If set, and 
+.B 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 \fBreadline\fP editing buffer, allowing further modification.
+.TP 8
+.B hostcomplete
+If set, and
+.B readline
+is being used, \fBbash\fP will attempt to perform hostname completion when a
+word containing a \fB@\fP is being completed (see
+.B Completing
+under
+.SM
+.B READLINE
+above).
+This is enabled by default.
+.TP 8
+.B huponexit
+If set, \fBbash\fP will send
+.SM
+.B SIGHUP
+to all jobs when an interactive login shell exits.
+.TP 8
+.B interactive_comments
+If set, allow a word beginning with
+.B #
+to cause that word and all remaining characters on that
+line to be ignored in an interactive shell (see
+.SM
+.B COMMENTS
+above).  This option is enabled by default.
+.TP 8
+.B lithist
+If set, and the
+.B cmdhist
+option is enabled, multi-line commands are saved to the history with
+embedded newlines rather than using semicolon separators where possible.
+.TP 8
+.B login_shell
+The shell sets this option if it is started as a login shell (see
+.SM
+.B "INVOCATION"
+above).
+The value may not be changed.
+.TP 8
+.B mailwarn
+If set, and a file that \fBbash\fP is checking for mail has been  
+accessed since the last time it was checked, the message ``The mail in
+\fImailfile\fP has been read'' is displayed.
+.TP 8
+.B no_empty_cmd_completion
+If set, and
+.B readline
+is being used,
+.B bash
+will not attempt to search the \fBPATH\fP for possible completions when
+completion is attempted on an empty line.
+.TP 8
+.B nocaseglob
+If set,
+.B bash
+matches filenames in a case\-insensitive fashion when performing pathname
+expansion (see
+.B Pathname Expansion
+above).
+.TP 8
+.B nullglob
+If set,
+.B bash
+allows patterns which match no
+files (see
+.B Pathname Expansion
+above)
+to expand to a null string, rather than themselves.
+.TP 8
+.B progcomp
+If set, the programmable completion facilities (see
+\fBProgrammable Completion\fP above) are enabled.
+This option is enabled by default.
+.TP 8
+.B promptvars
+If set, prompt strings undergo variable and parameter expansion after
+being expanded as described in
+.SM
+.B PROMPTING
+above.  This option is enabled by default.
+.TP 8
+.B restricted_shell
+The shell sets this option if it is started in restricted mode (see
+.SM
+.B "RESTRICTED SHELL"
+below).
+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.
+.TP 8
+.B shift_verbose
+If set, the
+.B shift
+builtin prints an error message when the shift count exceeds the
+number of positional parameters.
+.TP 8
+.B sourcepath
+If set, the
+\fBsource\fP (\fB.\fP) builtin uses the value of
+.SM
+.B PATH
+to find the directory containing the file supplied as an argument.
+This option is enabled by default.
+.TP 8
+.B xpg_echo
+If set, the \fBecho\fP builtin expands backslash-escape sequences
+by default.
+.RE
+.TP
+\fBsuspend\fP [\fB\-f\fP]
+Suspend the execution of this shell until it receives a
+.SM
+.B SIGCONT
+signal.  The
+.B \-f
+option says not to complain if this is 
+a login shell; just suspend anyway.  The return status is 0 unless
+the shell is a login shell and
+.B \-f
+is not supplied, or if job control is not enabled.
+.TP
+\fBtest\fP \fIexpr\fP
+.PD 0
+.TP
+\fB[\fP \fIexpr\fP \fB]\fP
+Return a status of 0 or 1 depending on
+the evaluation of the conditional expression
+.IR expr .
+Each operator and operand must be a separate argument.
+Expressions are composed of the primaries described above under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" .
+.if t .sp 0.5
+.if n .sp 1
+Expressions may be combined using the following operators, listed
+in decreasing order of precedence.
+.RS
+.PD 0
+.TP
+.B ! \fIexpr\fP
+True if
+.I expr
+is false.
+.TP
+.B ( \fIexpr\fP )
+Returns the value of \fIexpr\fP.
+This may be used to override the normal precedence of operators.
+.TP
+\fIexpr1\fP \-\fBa\fP \fIexpr2\fP
+True if both
+.I expr1
+and
+.I expr2
+are true.
+.TP
+\fIexpr1\fP \-\fBo\fP \fIexpr2\fP
+True if either
+.I expr1
+or
+.I expr2
+is true.
+.PD
+.PP
+\fBtest\fP and \fB[\fP evaluate conditional
+expressions using a set of rules based on the number of arguments.
+.if t .sp 0.5
+.if n .sp 1
+.PD 0
+.TP
+0 arguments
+The expression is false.
+.TP
+1 argument
+The expression is true if and only if the argument is not null.
+.TP
+2 arguments
+If the first argument is \fB!\fP, the expression is true if and
+only if the second argument is null.
+If the first argument is one of the unary conditional operators listed above
+under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" ,
+the expression is true if the unary test is true.
+If the first argument is not a valid unary conditional operator, the expression
+is false.
+.TP
+3 arguments
+If the second argument is one of the binary conditional operators listed above
+under
+.SM
+.BR "CONDITIONAL EXPRESSIONS" ,
+the result of the expression is the result of the binary test using
+the first and third arguments as operands.
+If the first argument is \fB!\fP, the value is the negation of
+the two-argument test using the second and third arguments.
+If the first argument is exactly \fB(\fP and the third argument is
+exactly \fB)\fP, the result is the one-argument test of the second
+argument.
+Otherwise, the expression is false.
+The \fB\-a\fP and \fB\-o\fP operators are considered binary operators
+in this case.  
+.TP
+4 arguments
+If the first argument is \fB!\fP, 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.
+.TP
+5 or more arguments
+The expression is parsed and evaluated according to precedence
+using the rules listed above.
+.RE
+.PD
+.TP
+.B times
+Print the accumulated user and system times for the shell and
+for processes run from the shell.  The return status is 0.
+.TP
+\fBtrap\fP [\fB\-lp\fP] [\fIarg\fP] [\fIsigspec\fP ...]
+The command
+.I arg
+is to be read and executed when the shell receives
+signal(s)
+.IR sigspec .
+If
+.I arg
+is absent or
+.BR \- ,
+all specified signals are
+reset to their original values (the values they had
+upon entrance to the shell).
+If 
+.I arg
+is the null string the signal specified by each
+.I sigspec
+is ignored by the shell and by the commands it invokes.
+If
+.I arg
+is not present and
+.B \-p
+has been supplied, then the trap commands associated with each
+.I sigspec
+are displayed.
+If no arguments are supplied or if only
+.B \-p
+is given,
+.B trap
+prints the list of commands associated with each signal number.
+The
+.B \-l
+option causes the shell to print a list of signal names and
+their corresponding numbers.
+Each
+.I sigspec
+is either
+a signal name defined in <\fIsignal.h\fP>, or a signal number.
+If a
+.I sigspec
+is
+.SM
+.B EXIT
+(0) the command
+.I arg
+is executed on exit from the shell.
+If a
+.I sigspec
+is
+.SM
+.BR DEBUG ,
+the command
+.I arg
+is executed before every \fIsimple command\fP, \fIfor\fP command,
+\fIcase\fP command, \fIselect\fP command, every arithmetic \fIfor\fP
+command, and before the first command executes in a shell function (see
+.SM
+.B SHELL GRAMMAR
+above).
+Refer to the description of the \fBextglob\fP option to the
+\fBshopt\fP builtin for details of its effect on the \fBDEBUG\fP trap.
+If a
+.I sigspec
+is
+.SM
+.BR ERR ,
+the command
+.I arg
+is executed whenever a simple command has a non\-zero exit status.
+The
+.SM
+.B ERR
+trap is not executed if the failed
+command is part of the command list immediately following a
+.B while
+or
+.B until
+keyword, 
+part of the test in an
+.I if
+statement, part of a
+.B &&
+or
+.B \(bv\(bv
+list, or if the command's return value is
+being inverted via
+.BR ! .
+If a
+.I sigspec
+is
+.SM
+.BR RETURN ,
+the command
+.I arg
+is executed each time a shell function or a script executed with the
+\fB.\fP or \fBsource\fP builtins finishes executing.
+Signals ignored upon entry to the shell cannot be trapped or reset.
+Trapped signals are reset to their original values in a child
+process when it is created.
+The return status is false if any
+.I sigspec
+is invalid; otherwise
+.B trap
+returns true.
+.TP
+\fBtype\fP [\fB\-aftpP\fP] \fIname\fP [\fIname\fP ...]
+With no options, 
+indicate how each
+.I name
+would be interpreted if used as a command name.
+If the
+.B \-t
+option is used,
+.B type
+prints a string which is one of
+.IR alias ,
+.IR keyword ,
+.IR function ,
+.IR builtin ,
+or
+.I file 
+if
+.I name
+is an alias, shell reserved word, function, builtin, or disk file,
+respectively.
+If the
+.I name
+is not found, then nothing is printed, and an exit status of false
+is returned.
+If the
+.B \-p
+option is used,
+.B type
+either returns the name of the disk file
+that would be executed if
+.I name
+were specified as a command name,
+or nothing if
+.if t \f(CWtype -t name\fP
+.if n ``type -t name''
+would not return
+.IR file .
+The
+.B \-P
+option forces a
+.SM
+.B PATH
+search for each \fIname\fP, even if
+.if t \f(CWtype -t name\fP
+.if n ``type -t name''
+would not return
+.IR file .
+If a command is hashed,
+.B \-p
+and
+.B \-P
+print the hashed value, not necessarily the file that appears
+first in 
+.SM
+.BR PATH .
+If the
+.B \-a
+option is used, 
+.B type
+prints all of the places that contain
+an executable named 
+.IR name .
+This includes aliases and functions,
+if and only if the 
+.B \-p
+option is not also used.
+The table of hashed commands is not consulted
+when using
+.BR \-a .
+The
+.B \-f
+option suppresses shell function lookup, as with the \fBcommand\fP builtin.
+.B type
+returns true if any of the arguments are found, false if
+none are found.
+.TP
+\fBulimit\fP [\fB\-SHacdflmnpstuv\fP [\fIlimit\fP]]
+Provides control over the resources available to the shell and to
+processes started by it, on systems that allow such control.
+The \fB\-H\fP and \fB\-S\fP options specify that the hard or soft limit is
+set for the given resource.  A hard limit cannot be increased once it
+is set; a soft limit may be increased up to the value of the hard limit.
+If neither \fB\-H\fP nor \fB\-S\fP is specified, both the soft and hard
+limits are set.
+The value of
+.I limit
+can be a number in the unit specified for the resource
+or one of the special values
+.BR hard ,
+.BR soft ,
+or
+.BR unlimited ,
+which stand for the current hard limit, the current soft limit, and
+no limit, respectively.
+If
+.I limit
+is omitted, the current value of the soft limit of the resource is
+printed, unless the \fB\-H\fP option is given.  When more than one
+resource is specified, the limit name and unit are printed before the value.
+Other options are interpreted as follows:
+.RS
+.PD 0
+.TP
+.B \-a
+All current limits are reported
+.TP
+.B \-c
+The maximum size of core files created
+.TP
+.B \-d
+The maximum size of a process's data segment
+.TP
+.B \-f
+The maximum size of files created by the shell
+.TP
+.B \-l
+The maximum size that may be locked into memory
+.TP
+.B \-m
+The maximum resident set size
+.TP
+.B \-n
+The maximum number of open file descriptors (most systems do not
+allow this value to be set)
+.TP
+.B \-p
+The pipe size in 512-byte blocks (this may not be set)
+.TP
+.B \-s
+The maximum stack size
+.TP
+.B \-t
+The maximum amount of cpu time in seconds
+.TP
+.B \-u
+The maximum number of processes available to a single user
+.TP
+.B \-v
+The maximum amount of virtual memory available to the shell
+.PD
+.PP
+If
+.I limit
+is given, it is the new value of the specified resource (the
+.B \-a
+option is display only).
+If no option is given, then
+.B \-f
+is assumed.  Values are in 1024-byte increments, except for
+.BR \-t ,
+which is in seconds,
+.BR \-p ,
+which is in units of 512-byte blocks,
+and
+.B \-n
+and
+.BR \-u ,
+which are unscaled values.
+The return status is 0 unless an invalid option or argument is supplied,
+or an error occurs while setting a new limit.
+.RE
+.TP
+\fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP]
+The user file-creation mask is set to 
+.IR mode .
+If
+.I mode
+begins with a digit, it
+is interpreted as an octal number; otherwise
+it is interpreted as a symbolic mode mask similar
+to that accepted by
+.IR chmod (1).
+If
+.I mode
+is omitted, the current value of the mask is printed.
+The
+.B \-S
+option causes the mask to be printed in symbolic form; the
+default output is an octal number.
+If the
+.B \-p
+option is supplied, and
+.I mode
+is omitted, the output is in a form that may be reused as input.
+The return status is 0 if the mode was successfully changed or if
+no \fImode\fP argument was supplied, and false otherwise.
+.TP
+\fBunalias\fP [\-\fBa\fP] [\fIname\fP ...]
+Remove each \fIname\fP from the list of defined aliases.  If
+.B \-a
+is supplied, all alias definitions are removed.  The return
+value is true unless a supplied
+.I name
+is not a defined alias.
+.TP
+\fBunset\fP [\-\fBfv\fP] [\fIname\fP ...]
+For each
+.IR name ,
+remove the corresponding variable or function.
+If no options are supplied, or the
+.B \-v
+option is given, each
+.I name
+refers to a shell variable.
+Read-only variables may not be unset.
+If
+.B \-f
+is specifed, 
+each
+.I name
+refers to a shell function, and the function definition
+is removed.
+Each unset variable or function is removed from the environment
+passed to subsequent commands.
+If any of
+.SM
+.BR RANDOM ,
+.SM
+.BR SECONDS ,
+.SM
+.BR LINENO ,
+.SM
+.BR HISTCMD ,
+.SM
+.BR FUNCNAME ,
+.SM
+.BR GROUPS ,
+or
+.SM
+.B DIRSTACK
+are unset, they lose their special properties, even if they are
+subsequently reset.  The exit status is true unless a
+.I name
+is readonly.
+.TP
+\fBwait\fP [\fIn\fP]
+Wait for the specified process and return its termination
+status.
+.I n
+may be a process
+ID or a job specification; if a job spec is given, all processes
+in that job's pipeline are waited for.  If
+.I n
+is not given, all currently active child processes
+are waited for, and the return status is zero.  If
+.I n
+specifies a non-existent process or job, the return status is
+127.  Otherwise, the return status is the exit status of the last
+process or job waited for.
+.\" bash_builtins
+.if \n(zZ=1 .ig zZ
+.SH "RESTRICTED SHELL"
+.\" rbash.1
+.zY
+.PP
+If
+.B bash
+is started with the name
+.BR rbash ,
+or the
+.B \-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.
+It behaves identically to
+.B bash
+with the exception that the following are disallowed or not performed:
+.IP \(bu
+changing directories with \fBcd\fP
+.IP \(bu
+setting or unsetting the values of
+.BR SHELL ,
+.BR PATH ,
+.BR ENV ,
+or
+.B BASH_ENV
+.IP \(bu
+specifying command names containing
+.B /
+.IP \(bu
+specifying a file name containing a
+.B /
+as an argument to the
+.B .
+builtin command
+.IP \(bu
+Specifying a filename containing a slash as an argument to the
+.B \-p
+option to the
+.B hash
+builtin command
+.IP \(bu
+importing function definitions from the shell environment at startup
+.IP \(bu
+parsing the value of \fBSHELLOPTS\fP from the shell environment at startup
+.IP \(bu
+redirecting output using the >, >|, <>, >&, &>, and >> redirection operators
+.IP \(bu
+using the
+.B exec
+builtin command to replace the shell with another command
+.IP \(bu
+adding or deleting builtin commands with the
+.B \-f
+and
+.B \-d
+options to the
+.B enable
+builtin command
+.IP \(bu
+Using the \fBenable\fP builtin command to enable disabled shell builtins
+.IP \(bu
+specifying the
+.B \-p
+option to the
+.B command
+builtin command
+.IP \(bu
+turning off restricted mode with
+\fBset +r\fP or \fBset +o restricted\fP.
+.PP
+These restrictions are enforced after any startup files are read.
+.PP
+When a command that is found to be a shell script is executed (see
+.SM
+.B "COMMAND EXECUTION"
+above),
+.B rbash
+turns off any restrictions in the shell spawned to execute the
+script.
+.\" end of rbash.1
+.if \n(zY=1 .ig zY
+.SH "SEE ALSO"
+.PD 0
+.TP
+\fIBash Reference Manual\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE
+.TP
+\fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1)
+.TP
+\fIemacs\fP(1), \fIvi\fP(1)
+.TP
+\fIreadline\fP(3)
+.PD
+.SH FILES
+.PD 0
+.TP
+.FN /bin/bash
+The \fBbash\fP executable
+.TP
+.FN /etc/profile
+The systemwide initialization file, executed for login shells
+.TP
+.FN ~/.bash_profile
+The personal initialization file, executed for login shells
+.TP
+.FN ~/.bashrc
+The individual per-interactive-shell startup file
+.TP
+.FN ~/.bash_logout
+The individual login shell cleanup file, executed when a login shell exits
+.TP
+.FN ~/.inputrc
+Individual \fIreadline\fP initialization file
+.PD
+.SH AUTHORS
+Brian Fox, Free Software Foundation
+.br
+bfox@gnu.org
+.PP
+Chet Ramey, Case Western Reserve University
+.br
+chet@po.CWRU.Edu
+.SH BUG REPORTS
+If you find a bug in
+.B bash,
+you should report it.  But first, you should
+make sure that it really is a bug, and that it appears in the latest
+version of
+.BR bash .
+The latest version is always available from
+\fIftp://ftp.gnu.org/pub/bash/\fP.
+.PP
+Once you have determined that a bug actually exists, use the
+.I 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 \fIbug-bash@gnu.org\fP or posted to the Usenet
+newsgroup
+.BR gnu.bash.bug .
+.PP
+ALL bug reports should include:
+.PP
+.PD 0
+.TP 20
+The version number of \fBbash\fR
+.TP
+The hardware and operating system
+.TP
+The compiler used to compile
+.TP
+A description of the bug behaviour
+.TP
+A short script or `recipe' which exercises the bug
+.PD
+.PP
+.I bashbug
+inserts the first three items automatically into the template
+it provides for filing a bug report.
+.PP
+Comments and bug reports concerning
+this manual page should be directed to
+.IR chet@po.CWRU.Edu .
+.SH BUGS
+.PP
+It's too big and too slow.
+.PP
+There are some subtle differences between 
+.B bash
+and traditional versions of
+.BR sh ,
+mostly because of the
+.SM
+.B POSIX
+specification.
+.PP
+Aliases are confusing in some uses.
+.PP
+Shell builtin commands and functions are not stoppable/restartable.
+.PP
+Compound commands and command sequences of the form `a ; b ; c'
+are not handled gracefully when process suspension is attempted.
+When a process is stopped, the shell immediately executes the next
+command in the sequence.
+It suffices to place the sequence of commands between
+parentheses to force it into a subshell, which may be stopped as
+a unit.
+.PP
+Commands inside of \fB$(\fP...\fB)\fP command substitution are not
+parsed until substitution is attempted.  This will delay error
+reporting until some time after the command is entered.
+.PP
+Array variables may not (yet) be exported.
+.zZ
+.zY
index 2cfb654..c19bc7b 100644 (file)
@@ -642,7 +642,6 @@ command:
 </DL>
 
 
-
 <A NAME="lbAK">&nbsp;</A>
 <H2>SHELL GRAMMAR</H2>
 
@@ -5411,7 +5410,7 @@ the version of <B>bash</B> (e.g., 2.00)
 <DT><B>\V</B>
 
 <DD>
-the release of <B>bash</B>, version + patchelvel (e.g., 2.00.0)
+the release of <B>bash</B>, version + patch level (e.g., 2.00.0)
 <DT><B>\w</B>
 
 <DD>
@@ -11355,6 +11354,6 @@ Array variables may not (yet) be exported.
 </DL>
 <HR>
 This document was created by man2html from bash.1.<BR>
-Time: 29 June 2004 10:37:49 EDT
+Time: 19 July 2004 16:04:22 EDT
 </BODY>
 </HTML>
index 0d7436b..9a671a1 100644 (file)
Binary files a/doc/bash.pdf and b/doc/bash.pdf differ
index 2c086e6..f268622 100644 (file)
@@ -1,6 +1,6 @@
 %!PS-Adobe-3.0
 %%Creator: groff version 1.18.1
-%%CreationDate: Tue Jun 29 10:37:28 2004
+%%CreationDate: Mon Jul 19 16:03:47 2004
 %%DocumentNeededResources: font Times-Roman
 %%+ font Times-Bold
 %%+ font Times-Italic
@@ -3625,15 +3625,16 @@ F1(\\@)144 156 Q F0(the current time in 12-hour am/pm format)23.92 E F1
 144 180 Q F0(the username of the current user)27.66 E F1(\\v)144 192 Q
 F0(the v)28.22 E(ersion of)-.15 E F1(bash)2.5 E F0(\(e.g., 2.00\))2.5 E
 F1(\\V)144 204 Q F0(the release of)26 E F1(bash)2.5 E F0 2.5(,v)C
-(ersion + patchelv)-2.65 E(el \(e.g., 2.00.0\))-.15 E F1(\\w)144 216 Q
-F0(the current w)26 E(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F1
-($HOME)2.5 E F0(abbre)2.5 E(viated with a tilde)-.25 E F1(\\W)144 228 Q
-F0(the basename of the current w)23.22 E(orking directory)-.1 E 2.5(,w)
--.65 G(ith)-2.5 E F1($HOME)2.5 E F0(abbre)2.5 E(viated with a tilde)-.25
-E F1(\\!)144 240 Q F0(the history number of this command)29.89 E F1(\\#)
-144 252 Q F0(the command number of this command)28.22 E F1(\\$)144 264 Q
-F0(if the ef)28.22 E(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 276 Q/F2 10
+(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 216 Q F0(the current w)26 E(orking directory)-.1 E 2.5
+(,w)-.65 G(ith)-2.5 E F1($HOME)2.5 E F0(abbre)2.5 E(viated with a tilde)
+-.25 E F1(\\W)144 228 Q F0(the basename of the current w)23.22 E
+(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F1($HOME)2.5 E F0
+(abbre)2.5 E(viated with a tilde)-.25 E F1(\\!)144 240 Q F0
+(the history number of this command)29.89 E F1(\\#)144 252 Q F0
+(the command number of this command)28.22 E F1(\\$)144 264 Q F0
+(if the ef)28.22 E(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 276 Q/F2 10
 /Times-Italic@0 SF(nnn)A F0
 (the character corresponding to the octal number)18.22 E F2(nnn)2.5 E F1
 (\\\\)144 288 Q F0 2.5(ab)30.44 G(ackslash)-2.5 E F1(\\[)144 300 Q F0
index 333e9c4..f889489 100644 (file)
Binary files a/doc/bashref.dvi and b/doc/bashref.dvi differ
index e71130a..0189bd4 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on June, 29  2004 by texi2html 1.64 -->
+<!-- Created on July, 27  2004 by texi2html 1.64 -->
 <!-- 
 Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -33,12 +33,12 @@ Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
 <H1>Bash Reference Manual</H1></P><P>
 
 This text is a brief description of the features that are present in
-the Bash shell (version 3.0-rc1, 26 June 2004)..
+the Bash shell (version 3.0, 27 July 2004)..
 </P><P>
 
-This is Edition 3.0, last updated 26 June 2004,
+This is Edition 3.0, last updated 27 July 2004,
 of <CITE>The GNU Bash Reference Manual</CITE>,
-for <CODE>Bash</CODE>, Version 3.0-rc1.
+for <CODE>Bash</CODE>, Version 3.0.
 </P><P>
 
 Bash contains features that appear in other popular shells, and some
@@ -15013,7 +15013,7 @@ to permit their use in free software.
 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
 </TR></TABLE>
 <H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>June, 29  2004</I>
+This document was generated by <I>Chet Ramey</I> on <I>July, 27  2004</I>
 using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
 "><I>texi2html</I></A>
 <P></P>  
@@ -15175,7 +15175,7 @@ the following structure:
 <BR>  
 <FONT SIZE="-1">
 This document was generated
-by <I>Chet Ramey</I> on <I>June, 29  2004</I>
+by <I>Chet Ramey</I> on <I>July, 27  2004</I>
 using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
 "><I>texi2html</I></A>
 
index 1d42740..3ced88d 100644 (file)
@@ -1,6 +1,6 @@
-This is TeX, Version 3.14159 (Web2C 7.3.1) (format=tex 2001.2.12)  29 JUN 2004 10:37
-**/usr/homes/chet/src/bash/src/doc/bashref.texi
-(/usr/homes/chet/src/bash/src/doc/bashref.texi (texinfo.tex
+This is TeX, Version 3.14159 (Web2C 7.4.5) (format=tex 2003.12.31)  27 JUL 2004 09:12
+**/Users/chet/src/bash/src/doc/bashref.texi
+(/Users/chet/src/bash/src/doc/bashref.texi (./texinfo.tex
 Loading texinfo [version 2003-02-03.16]: Basics,
 \bindingoffset=\dimen16
 \normaloffset=\dimen17
@@ -106,7 +106,7 @@ cross references,
 \auxfile=\write2
 \savesfregister=\count46
 \footnoteno=\count47
- (/usr/local/share/texmf/tex/plain/dvips/epsf.tex
+ (/sw/share/texmf/tex/generic/misc/epsf.tex
 \epsffilein=\read0
 \epsfframemargin=\dimen39
 \epsfframethickness=\dimen40
@@ -119,18 +119,18 @@ cross references,
 \epsfnoopenhelp=\toks24
 )
 \noepsfhelp=\toks25
-
-localization,
+ localization,
 \nolanghelp=\toks26
 \defaultparindent=\dimen47
- and turning on texinfo input format.) (bashref.aux)
+
+and turning on texinfo input format.) (./bashref.aux)
 @cpindfile=@write3
 @fnindfile=@write4
 @vrindfile=@write5
 @tpindfile=@write6
 @kyindfile=@write7
 @pgindfile=@write8
- (version.texi)
+ (./version.texi)
 @btindfile=@write9
 @rwindfile=@write10
  [1
@@ -152,11 +152,12 @@ localization,
 
 \openout10 = `bashref.rw'.
 
-] [2] (bashref.toc [-1] [-2] [-3]) [-4] Chapter 1
+]
+[2] (./bashref.toc [-1] [-2] [-3]) [-4] Chapter 1
 \openout0 = `bashref.toc'.
 
- [1] Chapter 2 [2]
-[3] Chapter 3 [4] [5] [6] [7] [8] [9] [10]
+ [1] Chapter 2 [2] [3]
+Chapter 3 [4] [5] [6] [7] [8] [9] [10]
 Overfull \hbox (43.33539pt too wide) in paragraph at lines 862--862
  []@texttt case @textttsl word @texttt in [ [(] @textttsl pat-tern @texttt [| @
 textttsl pat-tern@texttt ][]) @textttsl command-list @texttt ;;][] esac[][] 
@@ -264,7 +265,7 @@ the file
 .etc.
 
 [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] Chapter 7
-[78] [79] [80] [81] (/usr/homes/chet/src/bash/src/lib/readline/doc/rluser.texi
+[78] [79] [80] [81] (/Users/chet/src/bash/src/lib/readline/doc/rluser.texi
 Chapter 8 [82] [83] [84] [85] [86] [87]
 Underfull \hbox (badness 5231) in paragraph at lines 488--504
  @texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr
@@ -316,7 +317,7 @@ Underfull \hbox (badness 2753) in paragraph at lines 1742--1745
 .@texttt o
 .etc.
 
-[107]) (/usr/homes/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9
+[107]) (/Users/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9
 [108] [109] [110] [111] [112]) Chapter 10 [113] [114] [115] [116] [117]
 Underfull \hbox (badness 2772) in paragraph at lines 6610--6614
  []@textrm Enable sup-port for large files (@texttt http://www.sas.com/standard
@@ -331,8 +332,8 @@ s/large_
 .etc.
 
 [118] [119] [120] Appendix A [121] [122] Appendix B [123] [124] [125] [126]
-[127] [128] Appendix C [129] [130] (fdl.texi [131] [132] [133] [134] [135]
-[136]) (Index of Shell Builtin Commands) [137] [138] (bashref.bts)
+[127] [128] Appendix C [129] [130] (./fdl.texi [131] [132] [133] [134] [135]
+[136]) (Index of Shell Builtin Commands) [137] [138] (./bashref.bts)
 (Index of Shell Reserved Words)
 Overfull \vbox (42.26959pt too high) has occurred while \output is active
 \vbox(643.19986+0.0)x433.62, glue set - 1.0
@@ -351,16 +352,16 @@ Overfull \vbox (42.26959pt too high) has occurred while \output is active
 .etc.
 
 
-[139] [140] (bashref.rws) (Parameter and Variable Index) [141] [142]
-(bashref.vrs [143]) (Function Index) [144] (bashref.fns [145]) (Concept Index)
-[146] (bashref.cps [147]) [148] ) 
+[139] [140] (./bashref.rws) (Parameter and Variable Index) [141] [142]
+(./bashref.vrs [143]) (Function Index) [144] (./bashref.fns [145])
+(Concept Index) [146] (./bashref.cps [147]) [148] ) 
 Here is how much of TeX's memory you used:
- 1713 strings out of 13013
- 23227 string characters out of 97233
- 52385 words of memory out of 263001
- 2577 multiletter control sequences out of 10000+0
- 31953 words of font info for 111 fonts, out of 400000 for 1000
+ 1726 strings out of 98002
+ 23501 string characters out of 1221986
+ 52362 words of memory out of 1000001
+ 2577 multiletter control sequences out of 10000+50000
+ 31953 words of font info for 111 fonts, out of 500000 for 1000
  19 hyphenation exceptions out of 1000
- 15i,8n,11p,273b,465s stack positions out of 300i,100n,500p,50000b,4000s
+ 15i,8n,11p,269b,465s stack positions out of 1500i,500n,5000p,200000b,5000s
 
-Output written on bashref.dvi (154 pages, 580120 bytes).
+Output written on bashref.dvi (154 pages, 580108 bytes).
index bcb8bc0..6221fbe 100644 (file)
Binary files a/doc/bashref.pdf and b/doc/bashref.pdf differ
index c8c1301..89c2080 100644 (file)
@@ -1,14 +1,16 @@
 %!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
 %%Title: bashref.dvi
 %%Pages: 154
 %%PageOrder: Ascend
 %%BoundingBox: 0 0 612 792
+%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSL10 CMSY10 CMBXTI10 CMTI10
+%%+ CMCSC10 CMSLTT10 CMTT12 CMSY9 CMR8 CMTT9 CMTI9 CMR9
 %%EndComments
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi
 %DVIPSParameters: dpi=600, compressed
-%DVIPSSource:  TeX output 2004.06.29:1037
+%DVIPSSource:  TeX output 2004.07.27:0912
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -67,2466 +69,4150 @@ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
 rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
 
 %%EndProcSet
-TeXDict begin 40258431 52099146 1000 600 600 (bashref.dvi)
-@start
-%DVIPSBitmapFont: Fa cmtt12 14.4 2
-/Fa 2 126 df<EE1FFC923801FFFE150F153F5D92B5FC4A14FC4AEBF8004A138003FCC7
-FC4A5A5DB3A9141F4A5A147F903803FFC0013F5B007FB5C8FCB55A5C14F014FC806C7FD8
-003F7F01037F9038007FE0143F6E7E140FB3A9816E7EEDFF806E13F86EEBFFFC6E14FE81
-81150F15019238001FFC2F5D79D23E>123 D<EA3FF048B47EB512F014FC80806C80D800
-1F7F01017FEB003F6E7E140FB3A9816E7E81913803FFC06E13FC6EEBFFFC6F13FE81150F
-153F5D92B512FC4AEBFC004A13C04A48C7FC5D4A5A5DB3A9141F4A5AEB01FF011F5B007F
-B55AB6C8FC5C5C14F06C1380D83FF0C9FC2F5D79D23E>125 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmr9 9 54
-/Fb 54 123 df<EC1FE0ECFFFC903803F01E90390FC00780EB1F8090393F000FC0017E13
-1F5BA2485AED0F8092C7FCA9ED0FC0B7FCA33901F8001F150FB3A6486CEB1FE0267FFFC1
-B5FCA328357FB42B>12 D<123C127EB4FCA21380A2127F123D1201A412031300A25A1206
-120E120C121C5A5A126009177A8715>44 D<EB0FE0EB7FFCEBF83E3903E00F803907C007
-C0EB8003000F14E0391F0001F0A24814F8A2003E1300007E14FCA500FE14FEB2007E14FC
-A56CEB01F8A36C14F0A2390F8003E03907C007C0A23903E00F803900F83E00EB7FFCEB0F
-E01F347DB126>48 D<13075B5B137FEA07FFB5FC13BFEAF83F1200B3B3A2497E007FB512
-80A319327AB126>I<EB3FC0EBFFF0000313FC380F80FF391E007F80001CEB3FC048EB1F
-E048130F15F00060130712FC6C14F87E1403A3007E1307123CC7FC15F0A2140F15E0EC1F
-C0A2EC3F801500147E5C495A5C495A495A495A49C7FC133E133C4913185B485A48481330
-485A48C7FC001C1470001FB512F05A5AB612E0A31D327CB126>I<EB1FE0EBFFFC4813FF
-3907E03F80390F001FC0001EEB0FE0001CEB07F0123F018013F8140313C01380A2381F00
-07C7FC15F0A2EC0FE015C0141FEC3F80EC7E00EB01F8EB7FE014FCEB003FEC1FC0EC0FE0
-EC07F015F8140315FC140115FEA3127EB4FCA415FC48130312780070EB07F86C14F0003C
-130F001FEB1FE0390FE03F800003B51200C613FCEB1FE01F347DB126>I<EC01C0A21403
-1407A2140F141FA2143F147F146F14CF1301EB038F140F1307130E130C131C1338133013
-7013E013C0EA0180120313001206120E120C5A123812305A12E0B71280A3C7380FC000A9
-4A7E0107B51280A321337EB226>I<000C14C0380FC00F90B5128015005C5C14F014C0D8
-0C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E000CEB07E0
-A2C713F01403A215F8A41218127E12FEA315F0140712F8006014E01270EC0FC06C131F00
-3C14806CEB7F00380F80FE3807FFF8000113E038003F801D347CB126>I<14FE903807FF
-80011F13E090383F00F0017C13703901F801F8EBF003EA03E01207EA0FC0EC01F04848C7
-FCA248C8FCA35A127EEB07F0EB1FFC38FE381F9038700F809038E007C039FFC003E00180
-13F0EC01F8130015FC1400A24814FEA5127EA4127F6C14FCA26C1301018013F8000F14F0
-EBC0030007EB07E03903E00FC03901F81F806CB51200EB3FFCEB0FE01F347DB126>I<12
-30123C003FB6FCA34814FEA215FC0070C7123800601430157015E04814C01401EC0380C7
-EA07001406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91C7FCA25BA55B
-A9131C20347CB126>I<EB0FE0EB7FFC90B5FC3903F01F803907C007C0390F0003E0000E
-EB01F0001E1300001C14F8003C1478A3123EA2003F14F86D13F0EBC001D81FF013E09038
-F803C0390FFE07803907FF0F006C13DE6C13F87EEB3FFE8001F713C0D803E313E0D80780
-13F0390F007FF8001E131F003EEB07FC003C1303481301EC007E12F848143EA2151EA37E
-153C1278007C14787E6C14F0390F8003E03907F01FC00001B5120038007FFCEB1FE01F34
-7DB126>I<EB0FE0EB7FF8EBFFFE3803F83F3907E00F80390FC007C0D81F8013E0EC03F0
-EA3F0048EB01F8127EA200FE14FC1400A415FEA5007E1301A2127F7E1403EA1F80000F13
-073807C00E3803E01C3801F03838007FF090381FC0FC90C7FC1401A215F8A215F0140300
-1F14E0383F800715C0140FEC1F809038003F00001C137E381F01FC380FFFF0000313C0C6
-90C7FC1F347DB126>I<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA2
-02707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA2010E80010F
-B5FCA249800118C77EA24981163FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8
-FFFE49B512E0A333367DB53A>65 D<B7FC16E016F83A03FC0003FE0001EC00FFEE7F80EE
-3FC0161F17E0160F17F0A617E0161F17C0EE3F80EE7F0016FEED03FC90B612F05E9039FC
-0007FCED00FEEE3F80EE1FC0EE0FE017F0160717F8160317FCA617F81607A2EE0FF0EE1F
-E0163FEE7FC00003913803FF00B75A16F816C02E337DB236>I<B77E16F016FE3A01FE00
-01FF00009138003FC0EE0FE0707E707E707E707E177E177FEF3F80A2EF1FC0A3EF0FE0A4
-18F0AA18E0A3171F18C0A21880173F18005F17FE5F4C5AEE07F04C5AEE3FC000014AB45A
-B748C7FC16F8168034337EB23B>68 D<B81280A3D803FCC7FC0001151FEE07C01603A216
-01A21600A41760150CA31700A2151CA2153C15FC90B5FCA3EBFC00153C151CA2150CA592
-C8FCAB487EB512FEA32B337DB232>70 D<DA03FE130C91393FFF801C91B512E0903A03FE
-01F83C903A0FF0003C7CD91FC0EB0EFCD97F80130701FEC7120348481401000315005B48
-48157C485A173C485A171C123F5B007F160CA390C9FC4893C7FCAA0303B512E07E7F9239
-0003FE00705A123F7F121FA26C7E7F12076C7E7F6C6C14036C7E6D6C1307D91FC0EB0E7C
-D90FF0EB1C3CD903FEEBF81C0100B5EAF00C023F01C0C7FCDA03FEC8FC33377CB43C>I<
-B5D8FE03B512F8A3000190C73807FC006C486E5AB390B7FCA349C71203B3A3486C4A7EB5
-D8FE03B512F8A335337EB23A>I<B512FEA3000113006C5AB3B3A7487EB512FEA317337E
-B21C>I<B512FEA3D803FEC9FC6C5AB3A9EE0180A416031700A45EA25E5E5E5E16FE0003
-1407B7FCA329337DB230>76 D<D8FFFC923801FFF86D5DA20003EFFE00D801BFED06FCA3
-D99F80140CA2D98FC01418A3D987E01430A2D983F01460A3D981F814C0A3D980FCEB0180
-A2027EEB0300A36E1306A26E6C5AA36E6C5AA36E6C5AA26E6C5AA36E6C5AA3913800FD80
-A2037FC7FCA3486C133ED80FF04B7EB5011C90387FFFF8A33D337CB246>I<D8FFFE9138
-1FFFF87F80C6030013006E143CD9DFE01418EBCFF0A2EBC7F8EBC3FCA2EBC1FEEBC0FF6E
-7EA26E7E6E7EA26E7E6E7E6E7EA26E7E6E7EA2ED7F80ED3FC0ED1FE0A2ED0FF0ED07F8A2
-ED03FCED01FEED00FFA2EE7F98EE3FD8A2EE1FF8160F1607A216031601A2486C1400D807
-F81578B500C01438A2171835337EB23A>I<EC07FC91387FFFC0903901FC07F0903907E0
-00FCD90F80133E013FC76C7E017E6E7E496E7E48486E7E48486E7EA248486E7E000F8249
-157E001F167FA24848ED3F80A2007F17C0A290C9121FA24817E0AB6C17C06D153FA3003F
-17806D157FA2001F17006D5D000F5E6C6C4A5AA26C6C4A5A00015E6C6C4A5A017E4A5A6D
-4A5AD91FC0017FC7FCD907E013FC903901FC07F09039007FFFC0DA07FCC8FC33377CB43C
->I<B612FEEDFFC016F03A03FC0007FC0001EC00FE167FEE3F80EE1FC017E0160FA217F0
-A617E0A2EE1FC0A2EE3F80EE7F0016FEED07F890B65A168001FCC9FCB3A2487EB512F8A3
-2C337DB234>I<B612FCEDFF8016F03A01FE0007FC0000EC01FEED007F707E707E83160F
-83A65FA24C5AA24C5A047EC7FC4B5AED0FF090B612C093C8FC9039FE001FC0ED07F06F7E
-6F7E150082167E167FA583A5180C17C0A2043F131C486C1618B500FEEB1FE0040F133893
-3807F070C93801FFE09338003F8036357EB239>82 D<90381FE00390387FFC0748B5FC39
-07F01FCF390F8003FF48C7FC003E80814880A200788000F880A46C80A27E92C7FC127F13
-C0EA3FF013FF6C13F06C13FF6C14C06C14F0C680013F7F01037F9038003FFF1403020013
-80157F153FED1FC0150F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E01C0
-5B39F1FC03F800E0B512E0011F138026C003FEC7FC22377CB42B>I<B500FE90381FFFF8
-A3000190C813006C48153C1718B3AF1738017F1530A217706D6C1460011F15E06E495A01
-0F14036D6C495A6D6C49C7FCD901FC131E6DB413FC91383FFFF0020F13C0020190C8FC35
-357EB23A>85 D<267FFFFC90B512C0A3000101E090381FF80026007F80EB0FC0013F6E5A
-6E91C7FC6D6C130E010F140C6E5B6D6C133801035C6E13606D6C13E06D6C485A5EDA7F83
-C8FCEC3FC715C6EC1FECEC0FFC5D14076E7EA26E7E815C6F7E9138063FC0140E4A6C7E91
-38180FF0EC380702707F91386003FCECC0010101804A6C7E49C77E4981010E6E7E010C6E
-7E131C496E7E01786E7E13FCD807FEEC1FFEB56C90B512F8A335337EB23A>88
-D<EB7F803803FFF0380F80FC381C003E003F133F6D6C7E6E7EA26E7EEA1F00C7FCA4EB01
-FF131FEBFF873803FC07EA0FF0EA1FC0EA3F80127F13004815C05AA3140FA26C131F6C13
-3B3A3F8071F180391FC1E1FF2607FFC013003900FE003C22237DA126>97
-D<EA03F012FFA312071203AEEC3F80ECFFE09038F3C0F89038F7007E01FE7F49EB1F8049
-EB0FC05BED07E016F0A2150316F8AA16F0150716E0A2ED0FC07F6DEB1F8001ECEB3F0001
-CF137C90388381F8903801FFE0C76CC7FC25357EB32B>I<EB07F8EB3FFF9038FC07C039
-01F000E03903E003F03807C007120FEA1F80123F90380003E04890C7FCA2127E12FEAA12
-7FA26C14187F001F14386D1330000F14706C6C13E03903F001C03900FC0F8090383FFE00
-EB07F01D237EA122>I<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC0F3901F003BF39
-07E001FF48487E48487F8148C7FCA25A127E12FEAA127E127FA27E6C6C5BA26C6C5B6C6C
-4813803A03F007BFFC3900F81E3FEB3FFCD90FE0130026357DB32B>I<EB0FE0EB7FFCEB
-F83F3903F00F80D807E013C0390FC007E0381F800315F0EA3F0014014814F8127EA212FE
-A2B6FCA248C8FCA5127E127FA26C1418A26C6C1338000F14306D13706C6C13E03901F003
-C03900FC0F00EB3FFEEB07F01D237EA122>I<EB01FCEB07FF90381F078090383E0FC0EB
-7C1F13FCEA01F8A20003EB070049C7FCACB512F0A3D803F0C7FCB3A7487E387FFFE0A31A
-357FB417>I<151F90391FC07F809039FFF8E3C03901F07FC73907E03F033A0FC01F8380
-9039800F8000001F80EB00074880A66C5CEB800F000F5CEBC01F6C6C48C7FCEBF07C380E
-FFF8380C1FC0001CC9FCA3121EA2121F380FFFFEECFFC06C14F06C14FC4880381F000100
-3EEB007F4880ED1F8048140FA56C141F007C15006C143E6C5C390FC001F83903F007E0C6
-B51280D91FFCC7FC22337EA126>I<EA03F012FFA312071203AEEC1FC0EC7FF09038F1E0
-FC9038F3807C9038F7007E13FE497FA25BA25BB3486CEB7F80B538C7FFFCA326347EB32B
->I<EA0780EA0FC0EA1FE0A4EA0FC0EA0780C7FCAAEA07E012FFA3120F1207B3A6EA0FF0
-B5FCA310337EB215>I<EB03C0EB07E0EB0FF0A4EB07E0EB03C090C7FCAAEB03F013FFA3
-13071303B3B01238127C00FE13E0130714C0130F007C138038381F00EA1FFCEA07F01443
-84B217>I<EA03F012FFA312071203AF913803FFE0A36E1300EC00F8EC01E05D4A5A020F
-C7FC141C5C5C14F0EBF3F8EBF7FC13FEEBFC7EEBF87F496C7E141F6E7E8114076E7E8114
-016E7E81486CEBFF80B500C313F0A324347EB329>I<EA07E012FFA3120F1207B3B3A7EA
-0FF0B5FCA310347EB315>I<2703F01FE013FF00FF90267FF80313C0903BF1E07C0F03E0
-903BF3803E1C01F02807F7003F387FD803FE1470496D486C7EA2495CA2495CB3486C496C
-487EB53BC7FFFE3FFFF0A33C217EA041>I<3903F01FC000FFEB7FF09038F1E0FC9038F3
-807C3907F7007EEA03FE497FA25BA25BB3486CEB7F80B538C7FFFCA326217EA02B>I<EB
-07F0EB3FFE9038FC1F803901F007C03903C001E000078048486C7E48C7127CA248147E00
-3E143E007E143FA300FE1580A8007E1500A36C147EA26C147C6D13FC6C6C485A00075C39
-03F007E03900FC1F80D93FFEC7FCEB07F021237EA126>I<3903F03F8000FFEBFFE09038
-F3C0F89038F7007ED807FE7F6C48EB1F804914C049130F16E0ED07F0A3ED03F8A9150716
-F0A216E0150F16C06D131F6DEB3F80160001FF13FC9038F381F89038F1FFE0D9F07FC7FC
-91C8FCAA487EB512C0A325307EA02B>I<903807F00390383FFC07EBFC0F3901F8038F38
-07E001000F14DF48486CB4FC497F123F90C77E5AA25A5AA9127FA36C6C5B121F6D5B000F
-5B3907E003BF3903F0073F3800F81EEB3FF8EB0FE090C7FCAAED7F8091380FFFFCA32630
-7DA029>I<3803E07C38FFE1FF9038E38F809038E71FC0EA07EEEA03ECA29038FC0F8049
-C7FCA35BB2487EB512E0A31A217FA01E>I<EBFF06000713CE381F00FE003C133E48131E
-140E5A1406A27EA200FE90C7FC6C7EEA7FFC383FFFC014F0000F7F6C7FC67FEB0FFF1300
-EC3F8000C0131F140F6C1307A37E15006C5B6C130E6C5B38F7807838E1FFE038C07F8019
-237EA11E>I<1330A51370A313F0A21201A212031207381FFFFEB5FCA23803F000AF1403
-A814073801F806A23800FC0EEB7E1CEB1FF8EB07E0182F7FAD1E>I<D803F0133F00FFEB
-0FFFA30007EB007F000380B35DA35D12016D4813800000903803BFFC90387E073FEB1FFE
-D907F8130026227EA02B>I<B5EBFFF0A3D80FF0EB3F800007EC1F000003140E150C6D13
-1C00011418A26C6C5BA26D1370017E1360137F6D5BA290381F8180A214C3010F90C7FCA2
-EB07E6A214FE6D5AA26D5AA36D5AA2146024217E9F29>I<B53A1FFF81FFF0A33C07F801
-FC003F8001F049EB1E0000030100141C816C6C017C1318A26D017E1338000002FE1330A2
-90267E01FF5B159F168090263F030F5BA216C0903A1F8607C180A202C613E390260FCC03
-90C7FCA2D907FC13F6ECF80116FE6D486C5AA36D481378A36D48133034217F9F37>I<B5
-3801FFF8A32603FE0013806C48EB7C0000001478017E1370017F5B90383F81C090381F83
-80D90FC3C7FCEB07E614FE6D5A6D5A6D7E80805B9038039F809038071FC09038060FE0EB
-0C0790381C03F0496C7E01707FEBF000000180000FECFF8026FFFC0313FCA326207F9F29
->I<3A7FFF807FF8A33A07F8001FC00003EC0F800001EC070015066C6C5BA26D131C017E
-1318A26D5BA2EC8070011F1360ECC0E0010F5BA2903807E180A214F3010390C7FC14FBEB
-01FEA26D5AA31478A21430A25CA214E05CA2495A1278D8FC03C8FCA21306130EEA701CEA
-7838EA1FF0EA0FC025307F9F29>I<003FB512F0A2EB000F003C14E00038EB1FC00030EB
-3F800070137F1500006013FE495A13035CC6485A495AA2495A495A49C7FC153013FE485A
-12035B48481370485A001F14604913E0485A387F000348130F90B5FCA21C207E9F22>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmti9 9 1
-/Fc 1 47 df<121C127F12FFA412FE12380808778718>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmsltt10 9 18
-/Fd 18 122 df<007FB512F0B612F815FCA215F86C14F01E06789927>45
-D<147E903803FF804913C0011F13E04913F0EB7F879038FE01F8EBF800484813FC000314
-7C49137E4848133EA2485AA248C7FCA2123EA45AA500FC147C5AA215FC15F8A26CEB01F0
-A2007C130315E01407007EEB0FC015806C131FEC3F00381F807EEBC1FC6CB45A6C5B6C5B
-6C1380D8007EC7FC1F3079AE27>48 D<1438147C14FC14F8130113031307130F133F3803
-FFF05A13FD13F913E3EA000314E0A41307A214C0A4130FA21480A4131FA21400A45BA213
-3EA3387FFFFEB6FCA36C13FE182F77AE27>I<D9FF80EB3FC0486DEB7FE016FFA26C4A13
-C0D91EE0EBDE00013EEB03FE16BE013C14BCED073CA2150F90397CF00E7C151E0178EB1C
-78153C15381578D9F87013F8EC78F001F05CEC79E0A215C00001EB7BC1EC3B81D9E03F5B
-1501A2143E0003EB1C031400495CA400071407A2495CA3D87FF0EB7FF0A200FF14FFA26C
-486D5A2B2E7FAD27>77 D<EB7FF83801FFFE00076D7E8148809038F01FF0EBE0036C486C
-7EEA0180C8FC140114FF011F5B90B5FC1203120F481383387FF00301805BEAFE005A5A14
-07A24A5A6C133F38FF01FF90B6FC6C15807E000F01E313003803FE0021207A9F27>97
-D<EB03FE90380FFF80013F13E090B512F04814F83903FE03FC3807F800EA0FE04848137E
-5B48C7123EA2127E007FB512FEA4B612FC00FCC8FCA2127C127E1578007F14F8383F8001
-EBC003391FF80FF06CB512E06C14C0000114806CEBFE00EB1FF01F207A9F27>101
-D<EBFFC05AA37E1307130FA25CA4131FA2EC07F8EC1FFEEC7FFF91B512804914C0ECFC1F
-ECE00FECC0071480140049130F137E1680137CA301FC131FA2491400A400015CA249133E
-A33A7FFF87FFF0B500CF13F8A36C018713F0252E7FAD27>104 D<143814FE1301A46D5A
-147891C7FCA73803FFF0487FA37EEA00015CA41303A25CA41307A25CA4130FA25CA3007F
-B512C0B612E0A315C01B2F79AE27>I<90B5FC5AA37EEB001F5CA2143EA4147EA2147CA4
-14FCA25CA41301A25CA41303A25CA41307A25CA3007FB512F8B612FCA36C14F81E2E7BAD
-27>108 D<3A03F0FC07E03A07FBFE1FF090B5EA3FF8EDFFFCA2C690388FFC7C9039FE07
-F03C01FC13E001F813C0A23A01F00F807CA2167801E01300A300034913F8A2D9C01E13F0
-A40007EB3E01A2D9803C13E0A33A7FF0FF87FCD8FFF9EBCFFEA3D87FF1EB8FFC2720809F
-27>I<3903FE07F83907FF1FFEEC7FFF91B5128016C039003FFC1FECE00FECC007148014
-0049130F137E1680137CA301FC131FA2491400A400015CA249133EA33A7FFF87FFF0B500
-CF13F8A36C018713F025207F9F27>I<EB01FCEB0FFF013F13C090B512E04814F03903FC
-0FF83807F003390FE000FC1380001F147C48C7127E003E143EA25AA400FC147CA215FC00
-7C14F81401007EEB03F0A26CEB0FE09038801FC0391FE07F8090B512006C5B6C13F80001
-5B38007F801F207A9F27>I<3A07FF803FC0489038C1FFF002C713F802CF13FC6C90B5FC
-D8000F13E3ED03F89138FC01F09138F800604A1300495A5CA25CA291C8FC5BA2133EA413
-7EA2137CA3B6FCA526207D9F27>114 D<903807FF1C013F13FE90B5FC5A1207EBFC0139
-0FE000FC49137C5BA2153801E01300EA07FEEBFFF8000113FF6C6C13C0010F13E0903800
-7FF0EC03F8001C1301003EEB00FC157C007E14FC127FEC01F8EB80039038E01FF090B5FC
-B612C0158000F8EBFE0038703FF01F207B9F27>I<131E133FA2133EA4137EA2007FB512
-F0B612F8A36C14F0D800FCC7FC5BA41201A25BA41203A25BA2EC01E015F01403A2EC07E0
-140F9038F83FC090B5128015006C5B38007FF8EB1FC01D2979A827>I<397FC00FF839FF
-E01FFCA4000713004913F8A4000F1301A2018013F0A4001F1303A2010013E0A314075A14
-0F003EEB1FC0003F133FEB80FF90B512FE6C14FFA2000713EF0001EB07FE20207A9F27>
-I<3A03FFE07FF848ECFFFCA36C15F83A001F003E006D6C5A01075BECC1F0903803E3E05D
-903801F7806DB4C7FC5C147C143C147C14FE1301EB03CF9038078F80EB0F07011E7FEB3E
-03496C7E01F87F3801F0003A7FFC07FFC0486C4813E0A201FC14C0007F7F26207E9F27>
-120 D<3A01FFE01FFF486D5AA39138E01FFE3A001E0003C0A2011FEB0780A26DEB0F00A2
-151E148001075BA25DA26E5A1303ECC1E0A2ECC3C0EB01E3ECE780A202EFC7FC130014FE
-A25CA2147814F85C13015C13035C130700085BEA7E0F49C8FCEAFE3EEAF8FEB45A5B6C5A
-EA3FC06CC9FC28317F9F27>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmtt9 9 81
-/Fe 81 127 df<123C127E12FFAF127EAE123C1200A7123C127E12FFA4127E123C082F71
-AE27>33 D<90383C03C090387E07E0A7EBFE0F01FC13C0A2007FB512FEB7FCA4003F14FE
-3901F81F80AC003FB512FEB7FCA46C14FE3903F03F00A200075BEBE07EA73803C03C202E
-7DAD27>35 D<EB0380497EA5EB1FF0EBFFFE0003EBFF804814C0001F14E09038E7DFF039
-3F87C7F8387E07C3007C13C100FCEBC0FC12F814C1A300FCEBC0F800FE1470007F140013
-87EA3FFF7E6C13F86C13FE6CEBFF80C614C0010F13E06D13F014CFECC3F814C10038EBC0
-FC127C00FE147CA412FC00FE14F8007E13C1007FEBC3F0383F87C79038F7FFE06CB512C0
-6C1480000314006C13FC38003FE0EB07C0A56D5A1E3A7CB327>I<131FEB7FC0497E5A80
-EA03F1EBE1F8EA07E013C0A513C15C9039C3F1FF80D9E3E113C03803E7E3EBEFC101FF14
-80913881F800EC01F0EA01FEEBFC0301F85B00031307D807FC5B120F381FFE0FD83FBE5B
-EB3F1FD87E1F90C7FC149F38FC0FBF14FE1307ECFC020103EB0F80EB01F8A238FE03FC38
-7E07FE397F1FFF9F6CB61200149F6CEB0FFE390FFC03FC3903F000F822307EAE27>38
-D<120FEA1FC0123F13E0A213F0121F120F1201A4120313E01207EA0FC0A2EA3F80EA7F00
-5A5A12F812700C1773AD27>I<EB01C0EB03E0130F131FEB3FC0EB7F80EBFE00485A5B12
-03485A5B485AA2485AA248C7FCA3127EA45AAC127EA47EA36C7EA26C7EA26C7E7F6C7E12
-017F6C7EEB7F80EB3FC0EB1FE0130F1303EB01C0133A73B327>I<127012F812FE7E6C7E
-6C7EEA0FE06C7E12037F6C7E1200137EA27FA2EB1F80A3EB0FC0A4EB07E0ACEB0FC0A4EB
-1F80A3EB3F00A2137EA25B1201485A5B1207485AEA3FC0485A48C7FC5A12F81270133A7A
-B327>I<130F497EA60078EB81E000FEEB87F000FF138FEBDFBF6CB512E06C14C0000F14
-00000313FCC613F0A2000313FC000F13FF003F14C04814E039FFDFBFF0EB1F8F00FE1387
-0078EB81E00000EB8000A66DC7FC1C207BA627>I<120FEA3FC013E0EA7FF0A213F8A212
-3FA2120F120113F01203EA07E0121FEA7FC0EAFF8013005A12700D14738927>44
-D<007FB512F8B612FCA46C14F81E067C9927>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E
-000A0A728927>I<1538157C15FCA2140115F8140315F0140715E0140F15C0141F158014
-3F1500A25C147E14FE5C13015C13035C13075C130F5CA2131F5C133F91C7FC5B137E13FE
-5B12015B12035BA212075B120F5B121F5B123F90C8FC5A127E12FE5AA25A12781E3A7CB3
-27>I<EB07E0EB3FFC497E90B5FC4814803903FC3FC03907F00FE0390FE007F0EBC00339
-1F8001F8A248C712FCA2003E147C007E147EA3007C143E00FC143FAC007E147EA46C14FC
-A2EB8001001F14F8EBC003000F14F0EBE0073907F00FE03903FC3FC06CB512806C14006D
-5A6D5AEB07E020307DAE27>I<130E131FA25B5BA25B5A5A127FB5FCA213BFEA7E3F1200
-B3AA003FB512805A15C01580A21A2F79AE27>I<EB3FE03801FFF84813FE000FEBFF8048
-14C0393FE07FE0EB800F397F0007F0007EEB03F800FE13015A6C14FC1400A3127CC8FCA2
-140115F8A2140315F01407EC0FE0EC1FC0143FEC7F80ECFF00495A495A495A495A495A49
-5A495A01FEC7FC485AD807F81378484813FC485A485A48B5FCB6FCA36C14F81E2F7CAE27
->I<EB1FF8EBFFFE0003EBFF80000F14C015E0391FF01FF0393FC007F8EB800115FC1400
-A26CC7FC1204C8FC140115F81403EC07F0140FEC3FE090381FFFC0491380A215E06D13F0
-9038001FF8EC03FC1401EC00FE157E157F153FA21238127C12FEA2157F48147E6C14FE00
-7FEB01FCEB8003393FF01FF86CB512F06C14E000031480C6EBFE00EB1FF820307DAE27>
-I<EC3F804A7EA214FF5BA2EB03F7EB07E7A2EB0FC71487131FEB3F07A2137E13FCA2EA01
-F813F01203EA07E0A2EA0FC0EA1F80A2EA3F00123E127E5AB7128016C0A36C1580C73807
-C000A849B5FC491480A36D1400222F7EAE27>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E
-00C7FCAC121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A20729F27>58
-D<120FEA3FC0A2EA7FE0A4EA3FC0A2EA0F00C7FCAC120FEA3F8013C0127F13E0A3123FA2
-120F120713C0120FA2EA3F80EA7F005A5A12F812700B2A739F27>I<153815FC14011407
-140FEC3FF8EC7FE0ECFFC001031300495AEB1FF8495A495A3801FF804890C7FCEA0FFC48
-5AEA7FF0EAFFC05BA27FEA7FF0EA1FF86C7EEA03FF6C7F38007FE06D7E6D7EEB07FE6D7E
-010013C0EC7FE0EC3FF8EC0FFC14071401140015381E287CAA27>I<127012FC7E6C7E7F
-EA7FF0EA1FF86C7EEA03FF6C7F38007FE06D7E6D7EEB07FE6D7E010013C0EC7FE0EC3FF8
-EC0FFC1407A2140FEC3FF8EC7FE0ECFFC001031300495AEB1FF8495A495A3801FF804890
-C7FCEA0FFC485AEA7FF0EAFFC05B48C8FC5A12701E287CAA27>62
-D<EBFFF8000313FF000F14C0003F14E04814F09038C01FF839FF0003FC4813011400A214
-01007C1303C7EA0FF8EC1FF0EC7FE0ECFFC0491300EB03FC495A5C495A5C131F5CA76DC7
-FC90C8FCA7130F497E497EA46D5A6DC7FC1E2E7CAD27>I<EB01FE903807FF80011F13C0
-017F13E090B512F048EB03F83803FC013907F000FC390FE01F7C9038C07FFE381F80FF13
-01485A393E07F1FF007E13E0397C0FC07FEC803FA2EAFC1F00F8EB001FA800FCEB803FD8
-7C0F133EA2ECC07E397E07E0FC003E13F1393F03FFF86C6C13F0018013E0390FC07FC090
-38E01F1E3907F0003FD803FC137F3901FF03FF6CEBFFFE6D13FC011F13F0010713C00101
-1300202E7DAD27>I<EB03F0497EA2497EA4143CEB1F3EA5EB3F3FA3EB3E1FA2017E7FA4
-496C7EA548486C7EA390B5FCA24880A3EBF003A248486C7EA4000F803A7FFC0FFF8000FF
-15C06D5A497E007F1580222F7EAE27>I<007FB5FCB612C08115F87E3907E003FCEC00FE
-157E157F81A6157EA25D1403EC0FF890B55A15C015F081819038E000FE157FED3F80151F
-A2ED0FC0A6151F1680153FED7F004A5A007FB55AB65A5D15E06C1480222E7FAD27>I<90
-3803F80E90381FFE1F90383FFFBF90B6FC5A3803FE0F3807F803497E48487E485A49137F
-A248C7123FA25A127E151E150012FE5AAA7E127EA2151E007F143F7EA26C7E157F6D137E
-6C6C13FE3907F001FCEBF8033903FE0FF86CB512F06C14E0013F13C06D1300EB03F82030
-7DAE27>I<387FFFFC14FFB612C06C80813907E00FF81407EC01FC6E7EA2157E157F8116
-80151FA316C0150FABED1F80A3153F1600A25D15FEA24A5A4A5A140F007FB55A5DB65A6C
-91C7FC14FC222E7FAD27>I<007FB61280B712C0A37E3907E0000FA6ED078092C7FCA4EC
-07804A7EA390B5FCA5EBE00FA36E5A91C8FCA4ED03C0ED07E0A7007FB6FCB7FCA36C15C0
-232E7FAD27>I<007FB61280B712C0A37E3907E0000FA6ED078092C7FCA4EC07804A7EA3
-90B5FCA5EBE00FA36E5A91C8FCAC387FFF80B57EA36C5B222E7EAD27>I<903807F03890
-381FFC7C90387FFFFC90B5FC5A3803FC1F3807F00F380FE007EBC003001F13011380123F
-90C7FCA2127EA2157892C7FC5AA8EC1FFF4A1380A3007E6D1300EC00FCA36C1301A21380
-121FEBC003120FEBE0073807F00F3803FC1F6CB5FC7EEB7FFE90381FFC78D907F0C7FC21
-307DAE27>I<3A7FFE07FFE0B54813F0A36C486C13E03A07E0007E00AF90B512FEA59038
-E0007EB03A7FFE07FFE0B54813F0A36C486C13E0242E7FAD27>I<007FB512E0B612F0A3
-6C14E039001F8000B3B2007FB512E0B612F0A36C14E01C2E7BAD27>I<3A7FFC07FF8016
-C0486C5A6C487E16803A07C001F80014035D4A5A4A5A141F5D4AC7FC147E14FE5CEBC1F8
-EBC3F013C75CEBCFF0EBDFF813FF8013FEEBFC7E143EEBF83F497E01E07F140F01C07F14
-07811403816E7EA26E7E157C157E3A7FFC01FFC016E0486C5A6C487E16C0232E7FAD27>
-75 D<387FFFC080B5FC7E5CD803F0C8FCB3AAED0780ED0FC0A7007FB6FCA2B7FC7E1680
-222E7FAD27>I<D87FE0EB7FE0486CEBFFF0A26D5A007F15E0000F150001B813DFEBBC03
-A3EBBE07019E139FA3EB9F0FA2018F131FA2149FA2EB879EA4EB839C14FCA3EB81F8A2EB
-80F01400AAD87FF0EBFFE0486C4813F0A36C486C13E0242E7FAD27>I<3A7FF003FFE048
-6C4813F0A213FC007F6D13E000079038003E0013DEA313CFA3148013C714C0A213C314E0
-A213C114F0A3EBC0F8A31478147CA2143C143EA2141E141F140FA3EC07BEA3EC03FEEA7F
-FCEAFFFE1401A26C486C5A242E7FAD27>I<EBFFFC0007EBFF80001F14E0A24814F0EBC0
-0F397F8007F8EB0003007E1301A348EB00FCB3A76C1301007E14F8A3007F1303EB800739
-3FE01FF090B5FC6C14E0A200071480C6EBFC001E307CAE27>I<007FB5FCB612E081816C
-803907E003FEEC00FF81ED3F80151F16C0150FA6151F1680153FED7F005DEC03FE90B55A
-5D5D5D92C7FC01E0C8FCADEA7FFEB5FCA36C5A222E7FAD27>I<387FFFF0B512FE6E7E81
-6C803907E01FF014076E7E1401811400A514015D14034A5A141F90B55A5D5DA281EBE01F
-6E7E14076E7EA816F0EDF1F8A4397FFE01FBB5EBFFF08016E06C48EB7FC0C8EA1F00252F
-7FAD27>82 D<90387FC0E03901FFF1F0000713FF5A5AEA3FE0EB801F387F000F007E1307
-12FE5A1403A3EC01E06C90C7FC127E127FEA3FC013F86CB47E6C13F86C13FE6CEBFF80C6
-14C0010F13E0010013F0140FEC07F81403140115FC1400127812FCA46CEB01F8A26C1303
-90388007F09038F01FE090B5FC15C0150000F85B38701FF81E307CAE27>I<007FB61280
-B712C0A439FC03F00FA60078EC0780000091C7FCB3AB90B512C04880A36C5C222E7EAD27
->I<3A7FFE01FFF8B54813FCA36C486C13F83A07E0001F80B3AB6D133F00031500A26D5B
-0001147E6D13FE6C6C485A90387F87F814FF6D5B010F13C06D5BD901FEC7FC262F80AD27
->I<3A7FFC03FFE06D5A00FF15F0007F15E0497E3A07E0007E00A46C6C5BA4EBF8010001
-5CA46C6C485AA490387E07E0A56D485AA4011F5B149FA3010F90C7FCA5EB07FEA46D5AA2
-6D5A242F7FAD27>I<D87FE0EB7FE0486CEBFFF0A36C48EB7FE0001FC7EA0F80A76C6CEB
-1F00A614F0EB81F83907C3FC3EA4149CEBC79EA30003143CA301E7137CEBEF9FA2140FA2
-00011478A49038FE07F8A300005CA2EBFC0390387801E0242F7FAD27>I<393FFC1FFE38
-7FFE3F815D383FFC1F3903F00FE001F85B1201EBFC1F00005CEBFE3F017E90C7FCEB7F7F
-EB3F7E14FE6D5AA26D5AA26D5AA21303130780130F80131F80EB3F7E147F497E017E7F14
-1F01FC7F140FD801F87F14071203496C7E120701E07F3A7FFC0FFF8000FF15C06D5A497E
-007F1580222E7EAD27>I<3A7FFC03FFE06D5A00FF15F0007F15E0497E3A07F000FE0000
-035CEBF80100015CA2EBFC0300005CEBFE07017E5BA26D485AA290381F9F80A3010F90C7
-FCA2EB07FEA26D5AA26D5AAF90381FFF80497FA36D5B242E7FAD27>I<003FB512FE4814
-FFA4007EC712FEEC01FCA2EC03F8EC07F0A2003CEB0FE0C7EA1FC0A2EC3F80EC7F00A214
-FE5C1301495A5C1307495A5C131F495A91C7FC5B13FEA2485A4848131E153F485A485AA2
-485A485AA248C7FCB7FCA46C14FE202E7DAD27>I<387FFFF0B512F8A314F000FCC7FCB3
-B3ACB512F014F8A36C13F0153A71B327>I<387FFFF0B512F8A37EEA0001B3B3ACEA7FFF
-B5FCA36C13F0153A7EB327>93 D<131C137E3801FF80000713E0001F13F84813FC38FFE7
-FF13C3130000FC133F0078131E180B79AD27>I<007FB512F8B612FCA46C14F81E067C7E
-27>I<13E0EA01F01207120F13E0EA1FC0EA3F00A2127E127C12FC5AA4B4FC138013C012
-7FA2123F1380EA0F000C1773B227>I<3803FFC0000F13F04813FC4813FF811380EC1FC0
-381F000F000480C71207A2EB0FFF137F0003B5FC120F5A383FFC07EA7FC0130012FE5AA4
-6C130F007F131FEBC0FF6CB612806C15C07E000313F1C69038807F8022207C9F27>I<EA
-7FE0487EA3127F1203A914FF01F313C090B512F08181EC81FE49C67E49EB3F8049131F16
-C049130FA216E01507A6150F16C07F151F6DEB3F80157F6DEBFF009038FF83FEECFFFC5D
-5D01F313C02601E0FEC7FC232E7FAD27>I<EB0FFF017F13C048B512E04814F05A380FF8
-07EA1FE0393FC003E0903880008048C8FC127EA212FE5AA67E127EA2007F14F0393F8001
-F813C0381FE003390FF80FF06CB5FC6C14E06C14C06C6C1300EB0FF81D207B9F27>I<EC
-3FF04A7EA3143F1401A9EB0FE1EB7FFD48B5FC5A5A380FF83F381FE00F383FC007EB8003
-EA7F00007E1301A212FE5AA67E007E1303A2127F6C1307EB800F381FE01F380FF03F6CB6
-12C06C15E06C13FD38007FF9D91FE013C0232E7EAD27>I<EB0FF8EB3FFE90B512800003
-14C04814E0390FFC0FF0391FE003F8EBC001D83F8013FC48C7FC127E157E12FEB612FEA4
-15FC00FCC8FC7E127E127F6C143C6D137E6C7E01F013FE390FFC07FC6CB5FC000114F86C
-14F0013F13C0903807FE001F207D9F27>I<EC1FF0ECFFF84913FC4913FE5BEB0FF014C0
-011F137CEC8000A6007FB512F0B612F8A36C14F039001F8000B3A4003FB512C04814E0A3
-6C14C01F2E7EAD27>I<153F90391FC0FF80D97FF313C048B612E05A4814EF390FF07F87
-3A1FC01FC3C0EDC000EB800F48486C7EA66C6C485AEBC01FA2390FF07F8090B5C7FC5C48
-5BEB7FF0EB1FC090C9FCA27F6CB5FC15E015F84814FE4880EB8001007EC7EA3F80007C14
-0F00FC15C0481407A46C140F007C1580007F143F6C6CEB7F009038F807FF6CB55A000714
-F86C5CC614C0D90FFCC7FC23337EA027>I<EA7FE0487EA3127F1203A9147F9038F1FFC0
-01F713F090B5FC8114C1EC01FCEBFE005B5BA25BB03A7FFF83FFE0B500C713F0A36C0183
-13E0242E7FAD27>I<130F497E497EA46D5A6DC7FC90C8FCA7383FFF80487FA37EEA000F
-B3A4007FB512F0B6FC15F815F07E1D2F7BAE27>I<143C147E14FFA4147E143C1400A738
-01FFFE4813FFA37EC7123FB3B0147E1238007C13FE38FE01FC1303B512F814F06C13E06C
-13803807FE0018407CAE27>I<EA7FE07F12FF127FA21201A991383FFFC04A13E0A36E13
-C0913803F8004A5A4A5A4A5A4A5A02FFC7FCEBF1FEEBF3FCEBF7F8EBFFFC8080143F496C
-7E496C7E01F87FEBF0076E7E6E7E816E7E157E3A7FFFC1FFF002C313F8B512E36C13C316
-F0252E80AD27>I<387FFF80B57EA37EEA000FB3B2007FB512F8B612FCA36C14F81E2E7C
-AD27>I<397F07C01F3AFF9FF07FC09039FFF9FFE091B57E7E3A0FFC7FF1F89038F03FC0
-01E0138001C01300A3EB803EB03A7FF0FFC3FF486C01E3138001F913E701F813E36C4801
-C313002920819F27>I<387FE07F39FFF1FFC001F713F090B5FC6C80000313C1EC01FCEB
-FE005B5BA25BB03A7FFF83FFE0B500C713F0A36C018313E024207F9F27>I<EB1FE0EB7F
-F83801FFFE487F481480390FF03FC0391FC00FE0393F8007F0EB00034814F8007E1301A2
-48EB00FCA76C1301007E14F8A2007F1303393F8007F0A2391FE01FE0390FF03FC06CB512
-806C14006C5B38007FF8EB1FE01E207C9F27>I<387FE0FFD8FFF313C090B512F0816C80
-0003EB81FE49C67E49EB3F8049131F16C049130FA216E01507A6150F16C07F151F6DEB3F
-80157F6DEBFF009038FF83FEECFFFC5D5D01F313C0D9F0FEC7FC91C8FCAC387FFF80B57E
-A36C5B23317F9F27>I<90380FF03C90383FFE7E90B5FC000314FE5A380FFC1F381FE007
-EBC003383F800148C7FC127EA200FE147E5AA67E007E14FEA2007F1301EA3F80EBC00338
-1FE007380FF81F6CB5FC7E6C147E38007FFCEB0FF090C7FCAC91381FFFF8A24A13FC6E13
-F8A226317E9F27>I<397FFC03FC39FFFE0FFF023F13804A13C0007F90B5FC39007FFE1F
-14F89138F00F809138E002004AC7FC5CA291C8FCA2137EAD007FB57EB67EA36C5C22207E
-9F27>I<9038FFF3800007EBFFC0121F5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F
-8013FC383FFFF06C13FC000713FF00011480D8000F13C09038003FE014070078EB03F000
-FC1301A27E14036CEB07E0EBE01F90B512C01580150000FB13FC38707FF01C207B9F27>
-I<133C137EA8007FB512F0B612F8A36C14F0D8007EC7FCAE1518157EA415FE6D13FC1483
-ECFFF86D13F06D13E0010313C0010013001F297EA827>I<397FE01FF8486C487EA3007F
-131F00031300B21401A21403EBFC0F6CB612E016F07EEB3FFE90390FF87FE024207F9F27
->I<3A7FFC0FFF80486C4813C0A36C486C13803A07C000F800EBE00100035CA2EBF00300
-015CA2EBF80700005CA390387C0F80A36D48C7FCA3EB3F3FEB1F3EA214FE6D5AA36D5AA2
-6D5A22207E9F27>I<3A7FFE07FFE000FF15F06D5A497E007F15E03A0F80001F00A36D5B
-0007143EA414F0EBC1F83903E3FC7CA4EBE79EA200011478A301F713F8A2EBFF0F6C5CA3
-EBFE0790387C03E024207F9F27>I<393FFC1FFF486C5A168016006C487E3901F807E06C
-6C485A4A5A017E90C7FC6D5AEB1F7E5C6D5A13076D5A5C80497E130F497E143EEB3E3FEB
-7E1F90387C0F8001F87F00016D7E3803F0033A7FFE1FFF80A2B54813C06C486C1380A222
-207E9F27>I<3A7FFC0FFF80486C4813C0A36C486C13803A07E000F800000313015D13F0
-0001130301F85B1200A26D485A137CA290387E0F80133EA2011F90C7FC5CA2130F149E14
-BE130714FC1303A25C1301A25CA213035CA213075C1208EA3E0F007F5B131FD87E7FC8FC
-EA7FFE6C5A5B6C5AEA07C022317E9F27>I<001FB512FE4814FFA490380001FEEC03FCEC
-07F8EC0FF0001EEB1FE0C7EA3FC0EC7F80ECFF00495A495A495AEB1FE0495A495A49C7FC
-485A4848131E4848133F485A485A485A485AB7FCA46C14FE20207E9F27>I<EC07F8EC3F
-FC14FF130315F8903807FE00EB0FF05C5CB0131FEB7F80EA3FFFB5C7FC5BA27F003F7FEA
-007FEB1FC0130FB08080EB07FE903803FFF815FC1300143FEC07F81E3A7CB327>I<EA7F
-80EAFFF013FC13FF7E00017F38003FC0131F130FB080EB07F8ECFFF06D13FC7FA25B4913
-F0ECF800EB0FE05CB0131F133F48B45A007F90C7FCB5FC13FC13F0EA7F801E3A7CB327>
-125 D<3901F003803903FC07C0000F130F381FFE1F393FFF7F80397FBFFF0038FE1FFE48
-6C5A00F813F0387003E01A0A7AAD27>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmr8 8 26
-/Ff 26 118 df<123C127EB4FCA21380A2127F123D1201A312031300A25A1206120E5A5A
-5A126009157AAD14>39 D<B512C0A412047F9018>45 D<130C133C137CEA03FC12FFEAFC
-7C1200B3B113FE387FFFFEA2172C7AAB23>49 D<4A7E4A7EA34A7EA24A7EA3EC1BF81419
-A2EC30FCA2EC70FEEC607EA24A7EA349486C7EA2010380EC000FA201066D7EA3496D7EA2
-011FB57EA29038180001496D7EA349147EA201E0147F4980A20001ED1F801203000716C0
-D80FF0EC3FE0D8FFFC0103B5FCA2302F7EAE35>65 D<B612FCEDFF803A03F8000FC00001
-EC03F06F7E6F7E82167E167FA6167E16FE5E4B5A4B5AED0FE0ED7F8090B6C7FC16E09039
-F80003F0ED01FC6F7E167F821780161F17C0A61780163F17005E16FEED03FC0003EC0FF0
-B712C04BC7FC2A2D7DAC32>I<DA1FF013C09138FFFE01903903F00F8390390F8001E301
-3FC71277017C143F4848141F4848140F48481407A248481403121F491401123F90C8FC48
-1500A300FE1600AB127F17C0A27E7F001F15016D1580120F6C6C1403EE07006C6C14066C
-6C140ED8007C5C013F147890390F8001E0903903F00FC0902600FFFEC7FCEC1FF02A2F7C
-AD33>I<B612F815FF3A03F8001FE00001EC03F0ED00F8167E82EE1F80160F17C0EE07E0
-A2EE03F0A217F81601A317FCAA17F8A3EE03F0A217E0160717C0160FEE1F80EE3F00167E
-5EED03F00003EC1FE0B7128003F8C7FC2E2D7DAC36>I<B712FEA23903F800010001EC00
-3E828282A282A3178016011518A293C7FCA31538157815F890B5FCA2EBF8001578153815
-18A21760A392C712C0A4160117801603A21607160F163F0003913801FF00B8FCA22B2D7E
-AC30>I<B712FCA23903F800030001EC007C163E161E160EA21606A3160716031518A216
-00A31538157815F890B5FCA2EBF800157815381518A592C7FCAB487EB512F8A2282D7EAC
-2E>I<B512F8A2D803FCC8FC6C5AB3A7160CA41618A41638A2167816F81501ED07F00003
-141FB7FCA2262D7EAC2C>76 D<B612FCEDFF803A03F8000FE00001EC03F0ED00F882167E
-167F821780A617005E167E5E5EED03F0ED0FE090B6128003FCC7FC01F8C9FCB2487EB512
-F0A2292D7EAC30>80 D<B612C015FC3903F8007F0001EC0FC06F7E6F7E6F7E82150082A5
-5E15015E4B5A4B5A4B5A037FC7FC90B512FC15F09038F800FC153E6F7E150F826F7EA582
-A5170316F815031707486C903801FC0EB539F000FE1CEE3FF8C9EA07E0302E7DAC34>82
-D<90383F80303901FFF0703807C07C390F000EF0001E13074813034813011400127000F0
-1470A315307EA26C1400127E127FEA3FE013FE381FFFE06C13FC6C13FF00011480D8003F
-13E013039038003FF0EC07F81401140015FC157C12C0153CA37EA215787E6C14706C14F0
-6CEB01E039F78003C039E3F00F0038E07FFE38C00FF01E2F7CAD27>I<007FB712F8A290
-39000FC003007C150000701638A200601618A200E0161CA248160CA5C71500B3A94A7E01
-1FB512E0A22E2D7EAC33>I<EAFFE0A3EAE000B3B3B3A7EAFFE0A30B4379B114>91
-D<13FF000713C0380F01F0381C00F8003F137C80A2143F001E7FC7FCA4EB07FF137F3801
-FE1FEA07F0EA1FC0EA3F80EA7F00127E00FE14065AA3143F7E007E137F007FEBEF8C391F
-83C7FC390FFF03F83901FC01E01F207D9E23>97 D<EB1FE0EB7FFC3801F01E3803E00739
-07C01F80EA0F80EA1F005A003EEB0F00007E90C7FCA2127C12FCA9127EA215C07E6C1301
-01801380380FC0033907E007003801F03E38007FF8EB1FC01A207E9E1F>99
-D<EB1F80EBFFF03803E0783807C03E380F801E381F001FEC0F80123E007E130715C0127C
-12FCA3B6FCA200FCC8FCA5127EA2003E14C0123F6C1301390F80038001C013003803E00F
-3801F03C38007FF8EB1FC01A207E9E1F>101 D<130FEB1F80EB3FC0A4EB1F80EB0F0090
-C7FCA8EB07C013FFA2130F1307B3AD1230127838FC0F80A21400485AEA783EEA3FF8EA07
-E0123C83AD16>106 D<EA07C012FFA2120F1207ADEC1FFEA2EC0FF0EC07C05D020EC7FC
-5C5C5C5CEBC3C013C7EBCFE0EBDFF013F9EBF0F8497EEBC07E143E80816E7E14076E7E81
-6E7E486C487E3AFFFE07FF80A2212E7EAD25>I<3807C0FE39FFC3FF809038C703E0390F
-DE01F0EA07F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2221E7E9D27>110
-D<3807C0FE39FFC7FF809038CF03E0390FDC01F03907F800FC49137E49133E49133FED1F
-80A3ED0FC0A8151F1680A2ED3F00A26D137E6D137C5D9038FC01F09038CE07E09038C7FF
-80D9C1FCC7FC01C0C8FCA9487EEAFFFEA2222B7E9D27>112 D<380781F838FF87FEEB8E
-3FEA0F9CEA07B813B0EBF01EEBE000A45BB0487EB5FCA2181E7E9D1C>114
-D<3801FE183807FFB8381E01F8EA3C00481378481338A21418A27E7EB41300EA7FF06CB4
-FC6C13C06C13F0000113F838001FFC130138C0007E143EA26C131EA27EA26C133CA26C13
-7838FF01F038E3FFC000C0130017207E9E1C>I<1360A413E0A312011203A21207121FB5
-12F0A23803E000AF1418A714383801F03014703800F860EB3FE0EB0F80152A7FA81B>I<
-D807C013F800FF131FA2000F130100071300B21401A314033803E007EC0EFC3A01F81CFF
-C038007FF890391FE0F800221F7E9D27>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmsy9 9 2
-/Fg 2 106 df<EB0180EB03C01307A21480130FA2EB1F00A2131E133EA25BA2137813F8
-A2485AA25B1203A2485AA25B120FA248C7FCA2121E123EA25AA2127812F8A41278127CA2
-7EA2121E121FA26C7EA212077FA26C7EA212017FA26C7EA21378137CA27FA2131E131FA2
-EB0F80A2130714C0A21303EB0180124A79B71E>104 D<126012F07EA21278127CA27EA2
-121E121FA26C7EA212077FA26C7EA212017FA26C7EA21378137CA27FA2131E131FA2EB0F
-80A2130714C0A41480130FA2EB1F00A2131E133EA25BA2137813F8A2485AA25B1203A248
-5AA25B120FA248C7FCA2121E123EA25AA2127812F8A25A1260124A7CB71E>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmcsc10 12 9
-/Fh 9 121 df<160C161E163EA2163C167CA2167816F8A216F01501A2ED03E0A216C015
-07A21680150FA216005DA2153EA2153C157CA2157815F8A25D1401A24A5AA25D1407A25D
-140FA292C7FC5CA2143EA2143C147CA2147814F8A2495AA25C1303A25C1307A25C130FA2
-49C8FCA2131E133EA2133C137CA2137813F8A2485AA25B1203A25B1207A25B120FA248C9
-FCA2121E123EA2123C127CA2127812F8A25A1260276479CA37>47
-D<B7FC16F016FC3A03FE0003FF6C489038007F80EE1FE0707E707E707E1601707E177FA2
-1880173F18C0A2EF1FE0A418F0AA18E0A4EF3FC0A21880177F180017FE16015F4C5AEE0F
-F04C5AEE7FC0486CD903FFC7FCB712FC16F093C8FC34337BB23E>100
-D<DA03FF1303021FEBE00791B5EAF80F0103903800FE1FD90FF8EB1F3FD91FE0EB07BFD9
-7F806DB4FC49C77E484880484881484881A2484881121F4981123F5BA2007F82A25B00FF
-93C7FCAA4BB512F86C7EA2DB00011380003F6F1300837F121F7F120F6C7E7F12036C7E6C
-6C5DEB7FC0D91FE05BD90FF8EB07DF903A03FF803F8F01009038FFFE07021FEBF8030203
-0180C7FC35357BB340>103 D<B512F8A33803FE006C5AB3B3A7487EB512F8A315337BB2
-1E>105 D<EC07FF023F13E0903901FE03FC903907F0007FD90FC0EB1F80D93F80EB0FE0
-49C76C7E01FE6E7E48486E7E48486E7E4848157FA24848ED3F80001F17C0A24848ED1FE0
-A3007F17F049150FA300FF17F8AA007F17F06D151FA2003F17E0A26D153F001F17C0A26C
-6CED7F80000717006D5D00035E6C6C4A5A6C6C4A5A017F4A5A6D6C495AD90FC0EB1F80D9
-07F0017FC7FC903901FE03FC9039003FFFE0020790C8FC35357BB33F>111
-D<B7FC16F016FC3A03FE0003FF6C489038007F80EE3FC0EE1FE0EE0FF0A2EE07F8A217FC
-A617F8A2EE0FF0A2EE1FE0EE3FC0EEFF00ED03FE90B612F816C001FCC9FCB3A2487EB512
-F8A32E337BB238>I<90390FF0018090387FFE0348B512873907F00FEF390FC001FF48C7
-FC003E143F151F5A150F5A1507A36C1403A27E6C91C7FC6C7E7FEA3FF8EBFF806C13FC6C
-EBFFC06C14F06C80C614FE011F7F01031480D9001F13C014019138003FE0151F150FED07
-F0150312E01501A37EA216E06C1403A26CEC07C06CEC0F806C6CEB1F0001E0133ED8FBFE
-13FC00F0B55AD8E01F13E0D8C00390C7FC24357BB32E>115 D<B500F890383FFFE0A3D8
-03FEC7000713006C48EC01FC705A1770B3AE000016F06D5DA2017E1401017F4A5A7F6D6C
-495A6E49C7FC6D6C131ED903F0137C903901FE03F89039007FFFE0021F1380DA03FCC8FC
-33347BB23D>117 D<267FFFF890383FFFF0A3000101E0010F13006C49EB07F8017F5D01
-3F15C06D6C5C6D6C49C7FC160E6D6C131E6D6C5B6D6C133816786D6C5B91387F81E0023F
-5B15C391381FE7806EB4C8FC5D14076E5A6E7EA26E7E4A7FA24A7F9138079FE091380F0F
-F0140E91381E07F84A6C7E4A6C7E14709138F000FF49486D7E4948133F4A8001076E7E49
-C76C7E131E013E6E7E017E6E7E01FE81000182D80FFF4A1380B500C0011F13FEA337337D
-B23D>120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmtt12 13.14 8
-/Fi 8 116 df<003FB712804816C0B812E0A46C16C06C16802B087AA438>45
-D<91397FC003FC903A01FFF01FFF0107D9FC7F1380011F90B612C05B5B90B8FC48903AC0
-7FFE1F80913A001FF00F0048486D6CC7FC49130748486D7E491301000F81491300A76D13
-0100075D6D13036C6C495A6D130F6C6C495AECC07F91B55A5E485D93C8FCD807F713FC01
-E113F09038E07FC091CAFCA27F12037F6D7E6CB612C06C15FC4815FF4816C048824882D8
-1FF8C76C7ED83FE0EC07FC0180EC01FE48C9FC177F007E8200FE178048161FA66C163F00
-7FEE7F006D5D6C6C4A5A01F01407D81FFEEC3FFC3B0FFFE003FFF86C90B65A6C5EC61680
-013F4AC7FC010F14F8010314E09026003FFEC8FC324A7DAF38>103
-D<EA3FFE487EB5FCA37E7EC67EACED7FC0913801FFF8020713FE021F7F4A805C91B67EED
-C07F9139FE001FE002F8130F4A805C16075C5CA391C7FCB3A6273FFFFE03B512E0486D48
-14F0B6008F14F8A36C020714F06C496C14E035437FC238>I<14F0497E497E497EA46D5A
-6D5A6D5A91C8FCAB383FFFFC487FB5FCA37E7EC7FCB3AF007FB612F0B712F816FCA316F8
-6C15F0264476C338>I<387FFFFEB6FCA57EC77EB3B3B1007FB7FCB81280A56C16002943
-79C238>108 D<ED7FC03A3FFE01FFF8267FFF0713FEB5001F7F4A805C6C90B67E6CECC0
-7F3B007FFE001FE002F8130F4A805C16075C5CA391C7FCB3A6273FFFFE03B512E0486D48
-14F0B6008F14F8A36C020714F06C496C14E035307FAF38>110 D<EC7FC0903803FFF801
-0F13FE497F017F14C090B67E4881489038C07FF8489038001FFC01FC130748486D7E4913
-0148486D7E4980003F168049143F007F16C090C8121FA300FEED0FE0A96C151FA26C16C0
-A26D143FA26C6CEC7F80A26C6CECFF006D5B6C6C495A6D13076CB4EB1FFC6C9038C07FF8
-6C90B55A6C5D6D5C6D5C010F49C7FC010313F89038007FC02B327AB038>I<903907FF80
-F0017FEBF1F848B512FD000714FF5A5A5AEBFC00D87FE0131F0180130F48C71207481403
-A5007FEC01F001C090C7FCEA3FF013FE381FFFF86CEBFFC0000314F8C614FF013F148001
-0714E0D9003F13F0020013F8ED0FFC1503003CEC01FE007E140000FE15FF167F7EA37F6D
-14FF16FE01F013036DEB07FC01FF137F91B512F816F016E04815C0D8FC3F1400010F13FC
-D8780113E0283278B038>115 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmsltt10 10.95 50
-/Fj 50 122 df<137C13FE487E1480A214C0A3EA007F130F131F1480A3133F14005B137E
-13FE485A1203485AEA1FF0485AB45A5B90C7FC127C1238121D6BB730>39
-D<140F4A7EA2143FA492C7FCD8078014783A0FC07F01FCD81FF0130701F8130F9038FE7E
-3F01FFEBFFF86C90B512F0000315C0C615006D13FC011F13E001071380011F13E0017F13
-F848B512FE000780001F15C0267FFDFB13E0EBF1F8D8FFC1137F0183133FD87E03EB0FC0
-0078EC0780000049C7FCA21307A45C6D5A262777AE30>42 D<007FB612E0B712F016F8A3
-16F06C15E02507769E30>45 D<EC07F8EC1FFEEC7FFF49B512C04914E04914F090380FF8
-1F90391FE00FF890383FC00790397F8003FC9038FF00014914FE48481300485A16FF4848
-147FA2485AA2485AA25B123FA348C8FCA500FE15FEA4ED01FCA3ED03F8A215076C15F015
-0F6C15E0151F6D14C0ED3F80003F147F6DEBFF004A5A381FE0036D485A390FFC1FF86CB5
-5A6C5C6C14806C91C7FCEB7FFCEB0FE0283A78B830>48 D<EC03C0EC07E0A2140F141FA2
-143FEC7FC014FF1303130F90B5FC5A48148014BFEBFE3FEA01F8C7FC147F1500A55C5CA5
-13015CA513035CA513075CA5130F5CA2007FB512F8B612FCA46C14F81E3976B830>I<EC
-07FC91383FFF8091B512E0010314F84980011F8090393FF80FFF90267FE0011380EC8000
-49C7EA3FC05B0001151F4915E01203160FA349141F1201D800E015C090C8FC163F178016
-7F17005E4B5A15034B5A5EED1FF04B5A4B5A4B5A4A90C7FC4A5AEC0FFC4A5AEC3FE0ECFF
-C0495B4990C8FCEB07FCEB1FF8495AEB7FC0495A000390C712F0D807FC497E48481303EA
-3FF048B6FCB7FCA35E6C5D2B397AB830>I<EC07FE91387FFFC049B512F0010780498049
-8090393FFC03FFECE000D97F80EB7F80163FA391C7FCA2131C90C8FC167F17005E4B5A4B
-5A1507ED1FF8EDFFF091B55A495C93C7FC82826D809138003FF0ED07F86F7E15016F7EA2
-8282A3121C007E5D007F5D5A15015E4814034B5A6C140F6C6CEB3FF001E0495A3A3FFC03
-FFC06CB65A6C92C7FC6C14FC000114F06C6C13C0D90FFEC8FC293A7AB830>I<1378EA01
-FE487E5A1480A25A14007E5B6C5AEA00F090C7FCAFEA0F80EA3FC0487E7F12FFA45B127F
-6C5A6CC7FC11276DA630>58 D<ED1F80ED7FC08215FFA25CA3EC03F7A2140715E7A2140F
-15C7A2141F1587143FA2ED07F0147FA214FEA3EB01FCA3EB03F8A2EB07F0A3EB0FE0A249
-B5FCA2825BA25BEC0003A213FEA3485AA212035BD83FFFEB3FFF486D481380B56CB512C0
-A26C496C13806C496C13002A397DB830>65 D<913903FC01E091391FFF81F0027F13E391
-B512F7010314FF5B49130790261FF80113E049487ED97FC0137F495A91C7123F485A4848
-15C0A2485A5B120F5B001FED1F80491500003F92C7FC5BA3127F90CAFCA45A5AA716F86C
-4A7EA26C14035EA26D1307003F5D6D130F001F4A5A6D133F6C6C495A6D495A2607FF0790
-C7FC6CEBFFFE6C5C6C5C6D13E0011F1380D907FCC8FC2C3A78B830>67
-D<013FB512E04914FC90B67EEEFF806D15C07F902607F00013E0EE3FF0161FEE0FF81607
-010F15FC4A1303A2160117FEA2011F14005CA5133F5CA5017FEC01FC91C7FCA3EE03F8A2
-5B49EC07F0A2160F17E0161F000116C049143FEE7F80EEFF005D4B5A00034A5A49EB1FF8
-ED7FF0007FB65AB75A5E4BC7FC15F86C14C02F387EB730>I<013FB7FC49168090B812C0
-A27F7FD903F8C7EA3F80A4177F13074A150083171E94C7FCA2130F5CED01E04B7E821507
-131F91B55AA55B9138800FE0A46F5A017F90C9FC91CAFCA417F0494A7E491403A4160712
-01495DA2003FB7FC5AB8FCA26C5E6C5E32387EB730>I<013FB7FC49168090B812C0A27F
-7FD903F8C7EA3F80A4177F13074A150083171E94C7FCA2130F5CA2ED01E04B7E4B7E131F
-02C05B91B5FCA45B5EEC800FA35E017F6D5A91CAFCA55B5BA512015BA2387FFFF0B57E80
-A25C6C5B32387DB730>I<903B7FFF801FFFE090B56C4813F003E014F8A203C014F06D49
-6C13E0903B07F00001FC00A41603130F4A5CA41607131F4A5CA4160F133F91B65AA55B91
-C7EA1FC0A4163F5B495DA4167F12014992C7FCA45E1203495CA23B7FFF801FFFE0B56C48
-7FA46C496C5B35387EB730>72 D<013FB612804915C0A46D158090260007F0C7FCA5140F
-5DA5141F5DA5143F5DA5147F92C8FCA55C5CA513015CA513035CA2003FB6FC4881B77EA2
-6C5D6C92C7FC2A3879B730>I<0203B512F04A14F8A46E14F091390001FC00A41503A25E
-A41507A25EA4150FA25EA4151FA25EA4153FA25EA4157FA293C7FC123E127F5D6D5B38FF
-00014A5A6C13079038E03FF86CB55A5D6C5C000791C8FC6C13FC38007FE02D3979B730>
-I<90387FFFF890B57EA46D5BD903F8C8FCA513075CA5130F5CA5131F5CA5133F5CA5137F
-91C9FCA4EE03C049EC07E049140FA4161F12014915C0A2007FB7FCB8FCA317806C16002B
-387DB730>76 D<D93FF8ECFFE0496C4913F0496C4913F8A2017F4A13F0013F16E0010F91
-380FFE0002DE147E02DF131FA2EE3EFE131F029FEB7EFC167C16FC16F8ED80F9013F1381
-021FEBF1F8158316E1EC0F8716C3137F017E018F5B1683159F160316079038FE07BE01FC
-01FE5B15FCA215F8160F0001EB03F09026F801E05B91C7FCA3161F1203495DA4163F1207
-4992C7FCA2D87FFC903803FFE0486C497FA46C486D5B35387EB730>I<D97FFC90383FFF
-80496C4913C06E15E0A218C06D6E13800107913803F000ECEF80A31607130F02CF5C15C0
-14C7A2160F131F02875C15E0A30283131F133F02035C15F0A3163FEB7F01017E92C7FC15
-F8A35EEBFE0049147EA315FC16FE0001147C495CA4157D0003143D495C153FEA7FFFB512
-80A2151F5E6C496C5A33387DB730>I<013FB512FC4914FF90B712C017E06D15F06D15F8
-903A03F8003FFC160FEE03FE1601A20107EC00FF5CA2177FA3010F15FE5CA2160117FC16
-03011FEC07F84A130FEE1FF0EE7FE0923801FFC091B612804915005E16F816E093C7FC02
-80C8FC137F91C9FCA55B5BA512015BA2383FFFC0487FB57EA26C5B6C5B30387EB730>80
-D<017FB57E90B612F016FC82826D1580902607F00113C09238007FE0163F161FEE0FF013
-0F4A1307A5011FEC0FE05CEE1FC0163FEE7F8016FF013F010313009138800FFE91B55A5E
-16E05E4980829138001FF815076F7E15015B5BA500011403495CA2177817FCEEF9FE0003
-16FC4914F1A2267FFF8013FBB500C0EBFFF817F0816F13E06C49EB7FC0C9EA3F002F397E
-B730>82 D<001FB712E04816F017F8A35A903A001FC007F0A4160F48133F48028013E000
-7E1507003CED03C0C791C7FCA2147F92C8FCA55C5CA513015CA513035CA513075CA5130F
-5CA20007B57E48804880A26C5C6C5C2D3877B730>84 D<903A1FFF80FFFC4901C113FE49
-01E313FFA26D01C113FE6D018013FC903A01FE003F80EE7F005E6D6C5B15014B5A91387F
-83F8158791383F8FF0EDCFE015DF021F5BEDFF80A26E90C7FC5DA26E5AA25DA3140F4A7E
-A2143F4A7EA214FE01017F4A7EEB03F882903807F03F130F02E07F90381FC01F133F0280
-7F90387F000F5B498000011407485AD83FFFEB3FFF486D481380B590B512C0A26C6E1380
-6C496C130030387DB730>88 D<1278127C12FEA27EA27EA27FA2123F7FA2121F7FA2120F
-A27FA212077FA212037FA21201A27FA212007FA27F80A2133FA280A2131F80A2130F80A2
-130780A21303A280A2130180A2130080A280A21580A2143F15C0A2141FA3140FEC07801A
-4771BE30>92 D<003FB612F05AB712F8A36C15F07E25077C7D30>95
-D<903803FF80011F13F0017F13FC90B57E4880488149C67F49133F48486D7E0003140F5B
-C65A90C77FA25EA2EC3FFF0107B5FC133F90B6FC1203485D48EBE01F381FFE00EA3FF0D8
-7FC0133F5B48C75B5AA2157FA215FF6C4990C7FCEB8007267FE07F13FE90B7FC6C16806C
-14BF6C020F130000039038F803FEC601C0C8FC292A79A830>97 D<EA3FF8487E487EA212
-7F123FEA01FCA512035BA4EC1FF00007EBFFFC01F313FF01F7148090B612C016E09138F0
-3FF048EB800F9039FE0007F85B49EB03FC4913015B121F5B16FE1500A21501003F15FC5B
-A3150316F8127F1507ED0FF0A2ED1FE06DEB3FC000FF147F6DEBFF80D9F00313009038FC
-1FFE90B55A5D485C486C13C0D8781F90C7FC380007F8273977B730>I<EC1FFC91B51280
-010314C0010F14E04914F0137F9039FFF00FF848EB8007489038000FF0D807FC13074914
-E04848EB01C0484890C7FCA2485A5B127F90C9FCA35A5AA77E6CEC0F806D131FED3FC06C
-6C14806D137FD81FF8EBFF00380FFE0390B55A6C5C00015C6C14E0013F1380D907FCC7FC
-252A77A830>I<ED07FF4B13804B13C0A281819238003F80A4167FA21700A491387FC0FF
-903803FFF0010FEBFCFE4913FE017F13FF90B6FC48EBE07F48EB001F48486D5A49130748
-481303485A5B485A495C127FA290C7FC15075A485DA4150FA25E151F6C143F7E157F6D13
-FF6C6C485BEBE007261FF81F13FF6CB71280A26C14BF0001141F6CD9FC0F1300D91FE0C8
-FC2A397AB730>I<EC1FE0ECFFFC010313FF010F1480013F14C04914E09039FFF03FF048
-EB800F3A03FE0007F8484813035B485A4848EB01FC5B123F5B127F90C7FC90B6FCA2B712
-F8A316F048C9FCA37E7EED03C06DEB07E0003FEC0FF07F6C6CEB1FE06DEB7FC0390FFE03
-FF6CB612806C15006C14FC6C6C5B011F13E0010390C7FC262A79A830>I<EEFF80030713
-E0031F13F0157F92B512F85C4AEB07F0EC07FC03F813E091390FF001C04BC7FCA2141F5D
-A548B612FE48815AA36C5DC7D87F80C7FC92C8FCA55C5CA513015CA513035CA513075CA2
-007FB512FEB7FCA46C5C2D397CB830>I<913907F801FE913A3FFF0FFF804A13BF49B712
-C05B5B90260FFC0FEB1F8090271FF007F8130049486C6CC7FCECC001EB7F801400A25B5B
-A315034B5A7F6D495A9138803FE090383FE0FF49B55A90B65A93C8FC4814FC01F913F090
-38F87F80000390CAFC5BA27F120190B512FCEDFF8016E04815F8488148813A1FF00007FF
-D83FC01300498048C86C7E007E151F12FE5AA2163F94C7FC5E5E6C4A5AD87F80EB07FC6D
-131F3A3FFC01FFF86CB612E06C5D6C92C8FC000114FC6C6C13F0010F90C9FC323E7EA730
->I<EB3FF8497E497EA2137F133FEB01FCA513035CA4ED0FF00107EB7FFE02F1B5FC02F7
-148091B6FC17C0EDF03F499038801FE015004A130F14F8A24A131F494814C0A25CA3163F
-133F4A1480A4167F137F91C71300A45E5B495CA23B7FFFF81FFFF8B56C4813FC5DA2816C
-496C13F82E387FB730>I<15E0EC03F8140781A35D6E5A6E5A91C8FCA990B512C048805A
-A27E7EEB001F5DA5143F5DA5147F92C7FCA55C5CA513015CA2007FB61280B712C016E0A2
-16C06C1580233979B830>I<163816FE150116FFA316FEED00FC16781600A991B512F049
-14F8A47FEC000716F0A4150FA216E0A4151FA216C0A4153FA21680A4157FA21600A45DA2
-5DA414015DA414035D1407003C5C007E130FB4495A4A5A14FF90B55A92C7FC6C5B6C13F8
-6C13E000071380284E7EB830>I<EB3FF8497E80A3133FEB00FCA513015CA5010390380F
-FFFE4A487F1880A218006F5B0107010013804A4890C7FCED03FC4B5AED1FF04B5A010FEB
-7F804A48C8FCECC3FEECC7FCECCFF8ECDFFCEB1FFF814A7E4A7E02F87FECE03F49486C7E
-02807FEC000F6F7E8215034980017E13016F7E3B3FFFF80FFFF0486D487FB56C5AA26C49
-7E6C496C5B31387FB730>I<90383FFFF8497F81A37F90380001FCA514035DA514075DA5
-140F5DA5141F5DA5143F5DA5147F92C7FCA55C5CA2003FB612F04815F8B712FCA26C15F8
-6C15F026387BB730>I<913903F001F83B01FF0FFC07FE489039BFFE1FFF91B5007F1380
-93B5FC18C06C9039FC3FFE1F3B003FF81FFC0F02E013F002C013E0A2028013C09139003F
-801F491680A2017E1400A401FE49133F49017E1400A5000102FE5B4949137EA500030101
-14FE01F0495BA23C3FFE07FF03FF80486C48018713C0B5009F01CF13E0A26C010F018713
-C06C486C01031380332881A730>I<ED0FF03A01FFE07FFE4801F1B5FC4801F7148091B6
-FC6C16C06CECF03FD8000F9038801FE015004A130F14F8A24A131F494814C0A25CA3163F
-133F4A1480A4167F137F91C71300A45E5B495CA23B7FFFF81FFFF8B56C4813FC5DA2816C
-496C13F82E287FA730>I<EC1FE0ECFFFC010313FF010F14804914E0137F9039FFE07FF0
-489038800FF83903FE000749EB03FC48481301484814FE491300485A123F5B167F48C8FC
-A300FE15FEA4150116FCA26CEC03F8150716F06C6C130FED1FE06DEB3FC06C6C137F3A1F
-F001FF80D9FC0713006CB55A6C14F86C5C6C14C06C6C90C7FCEB0FF8282A79A830>I<ED
-03FE903A3FFC1FFF8090267FFE7F13E001FF90B57E91B67E6D816D9038FE07FE0101EBF0
-019238C000FF5D92C7EA7F804A143F5C13035C18C0171FA2173F010716805CA3177F1800
-130F5F4C5AA24C5A6E495A011F140F6E495A6EEB7FE09139FF83FFC092B55A94C7FCD93F
-DF5B028F13F8028313E0028090C8FC92C9FC137FA291CAFCA45BA25BA4387FFFF0B57E80
-A25C6C5B323C82A730>I<91383FE00F903A01FFF81F800107EBFE3F011F13FF4914FF5B
-9038FFF03F48EB800F48496C1300D807FC7F48487F5B485A48487F5E5B127F90C8FC1501
-5A485DA41503A25E6C1407150F6C141F7F6C6C133FEDFFF0381FF001EBFC0F6CB6FC7E6C
-14EF6CEC8FE039007FFE0FEB0FF090C7FC151F5EA5153F5EA591381FFFFE4A7F5CA2806E
-5B293C7AA730>I<EE3FE03B01FFFC01FFF848D9FE0F13FC485C037F13FE6C91B5FC6C90
-B512E1D80001EC01FC15FC9238F000704B13005D5D4990C8FC5CA25CA25C13075CA5130F
-5CA5131F5CA2007FB512FCB67EA46C5C2F287DA730>I<91387FF838903903FFFE7C011F
-EBFFFC5B5B90B6FC48EBC01F3903FC0007491303484814F85BA3ED01F06D90C7FCEA03FE
-EBFFF06CEBFF806C14F06D13FC011F13FF01071480D9007F13C0020113E0EC001F001FEC
-0FF06D1307003F1403A27FA21507486CEB0FE0151F6DEB3FC09039FC03FF8090B6FC1600
-B612FC00FC5C013F13E0267807FEC7FC262A79A830>I<EB03C0497E80A3130F5CA5003F
-B612E04815F0B7FCA36C15E026003FC0C7FC5CA5137F91C8FCA55B5BA50001EC0F8049EB
-1FC0A3153F1680157F15FF6D4813009038FF07FE6CEBFFFC5D6D5B6D5B010F1380D903FC
-C7FC243378B130>I<D83FFCEB3FFC486C497E00FF14FFA2007F147F003F143F00011401
-495CA415031203495CA415071207495CA4150F120F495CA3151F153F001F147F4B5A000F
-5BD9F80F13FF90B712807EA26C149FC6D9FE0F1300D93FF0C8FC29287AA630>I<3B3FFF
-C07FFF80486DB512C0B515E0A26C16C06C496C13803B03F00007F0006D5C150F00015D15
-1F5E153F6D91C7FC5D0000147E15FE5D140101FE5BA290387E03F0A24A5AA24A5A137F4A
-5A133F4AC8FCA2147E14FE5C131F5CA25C6D5A2B2778A630>I<3B3FFFC01FFFE0486D48
-13F0B515F8A26C16F06C496C13E0D807E0C7EA7E00A35EA34B5AA34B5A143E147F4A485A
-13E1A249495A158FEBC7EF9138CF9F8014DF13CF029F90C7FC15BFEBDF8FEC0FBEA201FE
-13FE5D13FCA25D496C5A3903E003E02D2779A630>I<903AFFFE07FFF0486D4813F84816
-FCA26C16F86C496C13F0903A07F001FC006D6C485A6D6C485A4B5A6D6C485A4B5ADA7F7F
-C7FC157EEC3FFE6E5A5D6E5A5DA24A7E143F4A7EA2ECFCFCEB01F8903803F07E903807E0
-7F49487E011F8090383F801FD97F007F01FE6D7E263FFFC0B5FC4801E11480B515C0A26C
-16806C01C014002E277DA630>I<90B53801FFFE4802837F481780A26C17006C02015B90
-3A07E0001FC05F163F6E91C7FCA20103147EA25E804B5A13014B5AA26E485AA20100495A
-A24B5AA2027E90C8FC5D153E157E157C143E5D143F5DA26E5AA25DA25DA2143F92C9FC5C
-147E14FE5C1301003C5B387E03F0EAFF07495A48485AEB7F80B5FC91CAFC13FC6C5AEA3F
-E0EA1F80313C7EA630>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmbx12 13.14 64
-/Fk 64 122 df<922607FFE0EB1FF892B5D8FC01B5FC0207DAFF071480021F039F14C091
-3D7FFE007FFFF83FE0DAFFF0011F9038E07FF00103018049018013F84990C748EB00FF49
-484A5A495A4A5D495AF27FF0017F5E4A027FEC3FE0053FEC0F80051F91C7FCADBB12E0A5
-26007FF0C7D81FFCC8FCB3B3A2007FB5D8F01FB512FEA54D4D7ECC48>11
-D<923803FFE092B512FC020714FF021F81027F9038007FC0DAFFF0EB0FE0010301C08049
-90C7EA3FF84948147F4A81494814FF495AA2137F5CA2715A715A715AEF078094C8FCA8EF
-07FCB9FCA526007FF0C7123F171FB3B3003FB5D8E00FB512F8A53D4D7ECC44>I<EA07E0
-EA1FF8487E487E7FB5FC1480A314C0A27EA27EEA1FFBEA07E3EA0003A213071480A2130F
-A214005B131E133E5BA25B485A485A1207485A485A001EC7FC120C122577CB22>39
-D<EA07E0EA1FF0487E487E7FB5FCA31480A37EA27E7EEA07E7EA0007A2130F1400A35B13
-1E133E133C137C137813F8485AA2485A485A485A48C7FC121E120C1125778F22>44
-D<B7FCAA200A7F9C29>I<EA07E0EA1FF8EA3FFCEA7FFEA2B5FCA6EA7FFEA2EA3FFCEA1F
-F8EA07E01010778F22>I<15F014011407141F147FEB03FF137FB6FCA313FC1380C7FCB3
-B3B2007FB712E0A52B4777C63D>49 D<ECFFF80107EBFF80013F14F090B612FC48814801
-01EBFF802707F8003F13C0D80FE0010F13E0D81F806D13F0003F80D87FF06D13F86D15FC
-6D7F00FF16FE6D147FA217FF82A36C5A6C5A6C5A6C5AC95A17FEA3EEFFFCA24B13F817F0
-5D17E04B13C017804B13004B5A4B5A5EED7FE04B5A4A5B4A90C7FCEC07FC4A5A4A5A4B13
-1FEC3F804AC7FC14FE4948143E495AEB07E0495A4948147E49C8FC017E15FE90B7FC4816
-FC5A5A5A5A5A5AB8FC17F8A430477AC63D>I<EC3FFE0103B512E0010F14FC013F14FF90
-267FE01F7F9026FF000713E0D801FC6D7FD803F07F486C6D7FD80FFE817F486D80167FA3
-805C16FF7E91C75B6C5A6C5AD80020495B90C75C5D5F4B5B5F031F90C7FCED3FFC4AB45A
-49B512E0168016E016FC90C7EA3FFF030713C06F7F6F7F6F7F83707E83A2701380A318C0
-EA07E0EA1FF8487E487EA2B5FCA31880A25E491600127F494A5A6C485D01E05B001F4A5B
-D80FFC495B2707FFC03F13C06C90B65AC64BC7FC013F14F8010714E09026007FFEC8FC32
-487BC63D>I<EE07E0160FA2161F163F167F16FFA25D5D5DA25D5D5DA2157D15FDEC01F9
-15F1EC03E11407EC0FC1EC1F811501143F147E14FC14F8EB01F01303EB07E014C0EB0F80
-131FEB3F00133E5B13FC485A485A5B1207485A485A90C7FC123E127E5AB912FCA5C80003
-EBE000AD023FB612FCA536487DC73D>I<D8038015E001E0140301FC143F9039FFE003FF
-91B612C017801700A25E5E16F05E5E93C7FC15FC15F001E790C8FC01E0C9FCAAEC1FFC01
-E1B512C001E714F001EF14FC9039FFE01FFFDA0007138001FC6D13C001F06D13E04915F0
-497F17F8C913FC167F17FEA417FFA3EA0FC0EA3FF0487EA2487EA317FEA34914FF6C4815
-FC5B018015F86CC74813F07F6C6C4913E0D80FF04913C0D807FC011F13806CB46CB51200
-6C90B512FC6C5D013F14C0010F91C7FC010113F030487AC63D>I<ED7FF8913807FFFE02
-1F6D7E027F80903A01FFF01FE0010790388003F04948486C7E49486D7ED93FF013074948
-130F01FF4A7E4849133F5C5A4890C7FCA25A705A48486E5A705A003F92C8FCA3485AA215
-20913807FFE0021F13FC00FF497F4A6D7EDAFC017F9026FDF0007F4A6D7ED9FFC06D7E4A
-6D7E8391C7FC8382491680A318C05BA3127FA6123FA27F001F1780A3000F4B1300A26C6C
-5DA26C6D495A6C6D5C6C6D495A6D6C48485A90263FFC075B6DB65A6D4AC7FC01035C0100
-14F0020F90C8FC32487BC63D>I<121F7F7F13FE90B812E0A45A18C0188018005F5FA25F
-485E90C8EA07E0007E4B5A5F007C151F4CC7FC167E5E485D15014B5A4B5AC8485A4B5AA2
-4BC8FC157EA25D1401A24A5A1407A24A5AA2141FA24A5AA2147FA314FFA3495BA45BA55B
-AA6D5BA26D90C9FCEB007C334B79C93D>I<EC1FFF49B512F0010714FC011F14FF90263F
-F00713C049C77F01FCEC3FF04848EC0FF848481407000782491403000F821601A2121F7F
-A27F13FE6D140302C05C14F002FC495A6C6D130FDAFF805B9238E01FE06C6E485A9238FC
-FF806C91B5C7FC6C15FC6C5D7F6D14FE6D806D15C06D81011F81017F81D9FFDF80481307
-2603FE018048486C804848133F4848010F1480003F8049130148486D6C13C0161F824848
-140382A282A2177FA218807F127FEFFF007F6C6C4A5AA2D81FFC4A5A6C6CEC0FF86C6C6C
-EB3FF06C9039F003FFE06C90B612806C6C92C7FC011F14FC010714E09026003FFEC8FC32
-487BC63D>I<EC1FFE49B512C0010F14F04914FC90397FFC0FFE903AFFE003FF804849C6
-7F48496D7E4890C7FC486F7E484881161F003F825B007F82A28300FF81A31880A518C0A4
-5E127FA3003F5D7F121F5E120F6C6C91B5FC6C90388001EF6CEBC0036C9038E00FCF6DB5
-128F011F140F010701FE1480010113F8903800010091C7FCA24C1300A3D803F85D487E48
-7E486C4A5AA25F4C5AA24C5A49495B6C485D49010790C7FC01E0495AD807F8EB3FFC6CB4
-48B45A6C90B55A6C15C06D91C8FC011F13FC010313C032487BC63D>I<EA07E0EA1FF8EA
-3FFCEA7FFEA2B5FCA6EA7FFEA2EA3FFCEA1FF8EA07E0C7FCB0EA07E0EA1FF8EA3FFCEA7F
-FEA2B5FCA6EA7FFEA2EA3FFCEA1FF8EA07E0103077AF22>I<903803FFF8013FEBFF8090
-B612E0000315F8489038007FFCD80FF0EB1FFED81FC0EB07FF48C71480D87FC015C06D7F
-486C15E07FA66C5A6C484913C06C5A0007C7481380C8FC4B13004B5AED7FF84B5A16C04A
-5B4A90C7FC15FC4A5A5D140F5D4A5AA25D4AC8FCA3143EAB143C91C9FCA9147E49B47E49
-7F497FA2497FA66D5BA26D5B6D5BD9007EC8FC2B4D79CC3A>63 D<EE01F8A24C7EA34C7E
-A24C7EA34C7FA24C7FA34C7FA293B57EA34B8016F303038016E316E103078016C0030F80
-5E83031F814C7E4B81153E83037E81037C7F03FC815D830201824B7F0203825D83020782
-4B7F020F825D84021F8392B8FC4A83A34A83027CC8120F02FC835C840101844A81010384
-5C840107844A81010F845C85011F85496C82B600C091B712F0A5544D7CCC5D>65
-D<B912F0F0FF8019F019FC19FFD8001F0180C780061F7F727F727F727F727FA2727FA219
-7F86A84F5AA2626062604E5B4E5B4E1380067F90C7FC943803FFFC92B712F0198019F019
-FC0380C7383FFF80060F7F060313F0727F727F737E86851B80851BC0A21BE0A48561A41B
-C0A2611B80611B0096B5FC4E5B4E5B060F5B067F5BBB12C097C7FC19FC19F04EC8FC4B4B
-7CCA57>I<93261FFF80EB01C00307B500F81303033F02FE13074AB7EA800F0207EEE01F
-021F903AFE007FF83F027F01E0903807FC7F91B5C73801FEFF010301FCEC007F4901F081
-4901C0150F4949814990C97E494882495A48498248197F5C48193F5C48191F5C48190FA2
-485BA21A075AA391CDFCA2B5FCAD7EA280F207C0A27EA36C7F1A0F6C1A80806C191F6E18
-006C61806C197E6C6D177C6D6C17FC6D6C4C5A6D6D4B5A6D6D4B5A6D01F0ED1FC06D01FC
-4B5A010001FF03FFC7FC6E01E0EB07FE021F01FEEB3FFC020790B612F0020116C0DA003F
-92C8FC030714F8DB001F13804A4D79CB59>I<B912F0F0FF8019F019FC19FFD8001F9026
-80000114C0DD001F7F060713F806017F726C7E737E737F737F737F8587737F8587A2747E
-A38786A21C80A51CC0A586A462A51C80A51C00A26263A2631AFF636163614F5B634F5B07
-3F90C7FC4F5A4F5A06035B061F5B4DB512C0BBC8FC19FC19F0198006F0C9FC524B7CCA5E
->I<BB12C0A486D8000F01E0C77E18071801F0007F193F191F190F1907861903A31901A3
-EF0F80A2737EA497C7FC171FA2173F177F17FF160392B6FCA5EDE0031600177F173F171F
-A2050FEC0F80A3F21F00A494C8FC621A3EA21A7EA31AFE6219011903A21907190FF13FF8
-19FF1803183FBBFCA262A3494A7CC951>I<BBFCA41A80D8001F01C0C7FC181F18038484
-197F193F191F1AC0190FA31907A4171FF103E0A496C7FCA25FA25F5F5E160792B6FCA5ED
-C0071601828383A283A794C9FCB1B8FCA5434A7CC94D>I<93261FFF80EB01C00307B500
-F81303033F02FE13074AB7EA800F0207EEE01F021F903AFE007FF83F027F01E0903807FC
-7F91B5C73801FEFF010301FCEC007F4901F0814901C0150F4949814990C97E494882495A
-48498248197F5C48193F5C48191F5C48190FA2485BA21A075AA391CEFCA2B5FCAD7E050F
-B712C080A37E94C7001FEBC000807EA27E807E807E806C7F7E6D7E6D7E6D7F6D01E05D6D
-6D5D6D13FC010001FF4AB5FC6E01E0EB07F9021F01FFEB3FF0020791B5EAE07F0201EEC0
-1FDA003FED0007030702F81301DB001F018090C8FC524D79CB60>I<B7D8FC01B712FCA5
-D8001F01C0C8001FEBC000B3AA92B9FCA503C0C8121FB3AEB7D8FC01B712FCA5564B7BCA
-60>I<B712FEA5D8000FEBE000B3B3B3ABB712FEA5274B7DCA2E>I<B700F8027FB512F0A5
-D8001F01C0C9EBC00074C7FCF101FE4F5A4F5AF10FE04F5A4F5A4FC8FCF001FE4E5A4E5A
-F00FE04E5A4E5A4EC9FCEF01FE4D5A4D5AEF0FE04D5A4D5A4DCAFCEE01FE16034C7E4C7F
-5E4C7F93B57E03C18015C303C780DBCFE77FDBDFC37FEDFF8104017F4B6C804B7F4B6D7F
-03E0814B6D7F8385717F717F83857180727F8486727F8486727F727F84867280737F8587
-737F87B700F8010FB612FCA5564B7CCA60>75 D<B8FCA5D8001F01C0C9FCB3B3A4193EA4
-197E197CA519FCA31801A2F003F8A21807180F181F183F187FEF01FF1707173FBA12F0A5
-3F4B7BCA4A>I<B600E04DB612806F5FA26F5FA2D8001F09FCC7FC6FEF0F7FA2DABFFE17
-1EA2DA9FFF173CA3028F6D1678A202876D16F0A202836DED01E0A302816DED03C0A20280
-6DED0780A26F6CED0F00A36F6C151EA26F6C5DA26F6D5CA26F6D5CA36F6D495AA26F6D49
-5AA26F6D495AA3706C49C7FCA2706C131EA2706C5BA3706D5AA2706D5AA270EBE1E0A370
-EBF3C0A270EBFF80A27190C8FCA2715AA3715AA2715A497EB600F06D480103B71280A371
-5A715A694B7BCA74>I<B600E092B612FC8181A281D8001F6D9239001FE0006F705A82A2
-8202BF7F029F7FA2028F7F02877F02837F8214810280806F7F6F7F83816F7F6F7F6F7F83
-816F80707F707F8482707F707F707FA2707F7014807113C019E0837113F07113F87113FC
-19FE837113FF71148F7213CF1AEF847213FF8484A284848485A2858585A285858585497E
-B600F8167F1A3F1A1F1A0FA2564B7BCA60>I<EEFFF8031FEBFFC04AB612FC020715FF02
-1FD9C01F13C091277FFE000313F0902601FFF09038007FFC49496E7E490180EC0FFF4990
-C86C7F49486F7F49486F7F017F8449486F7F4849707EA24849707E4885A24849701380A2
-481AC04A82A2481AE0A34890CA6C13F0A5B519F8AE6C1AF0A26E5EA36C1AE0A26E5E6C1A
-C0A26C1A806E5E6C1A006E5E6C616E16FF6C616C6D4B5B6D6C4B5B6E5D6D6D4A5B6D6D4A
-5B01076D4A90C7FC6D01F8ECFFFE6D01FE01035B9028007FFFC01F13F0021F90B612C002
-0793C8FC020115FCDA001F14C0030101FCC9FC4D4D79CB5C>I<B912C018FCF0FF8019F0
-85D8001F902680000713FE05007F063F1380060F13C07213E01AF0841AF8A27213FCA31A
-FEA81AFCA34E13F8A21AF0601AE04E13C0063F138095B51200050713FC92B75A19E096C7
-FC18F803C0CAFCB3ABB712FCA5474B7BCA54>I<EEFFF8031FEBFFC04AB612FC020715FF
-021FD9C01F13C091277FFE000313F0902601FFF09038007FFC49496E7E490180EC0FFF49
-90C86C7F49486F7F49486F7F49486F7F01FF844849707E4A163F48854849707EA2481A80
-4A82481AC0A291CA7E481AE0A3481AF0A24983A300FF1AF8AE007F1AF0A36D5FA26C1AE0
-A36C6D4C13C0A26C1A80A26C6D4C1300EE1FC06C6DD97FF0495A923801FFFC6C6D486D49
-5A6C912607F07F5CD97FF8903AC00F80FFF0913AFC0F8007C1D93FFE010001C35BD91FFF
-DA03E75B0107018F6DB5C7FC6D01EF5D6DD9FF805C6D6C01C014F0021FD9F01F13C00207
-90B6C8FC02014B1408DA001F6E141C03019038FC7F8092C87F726C133C73137C9638FC03
-FC96B5FC1BF884A37214F0A37214E0A27214C0721480721400735A735AF10FF04E6179CB
-5C>I<B9FC18F8F0FF8019E019F8D8000F9026C0000713FE9439007FFF80061F7F727F72
-7F727F84868684A286A862A24E5BA2624E5B4E5B4E5B4E5B95B5C8FC050713FC92B712F0
-198006FCC9FC18FF9226C0003F13C0050713F0717F717F717F187F85727FA28486A786A7
-1C3E86A28474137E72157C726D13FCB700FC6D9038FE01F872EBFF8373EBFFF0071F14E0
-07031480CD383FFE00574C7CCA5C>I<DA7FFCEB01C00103B5EAC003011FECF00749ECFC
-0F90B7121F48D9E00F13BF4890C713FFD807FC141F4848804848140382484880177F485A
-173F171F12FFA2170F7FA217077F7F7F6D92C7FC6D7E6C13F014FF15F86CECFF8016F86C
-15FF6C16C0836C826C826C826C82013F816D1680010716C01300020F15E01400030714F0
-ED007F160F16037013F882177F127800F8163FA3171FA27E18F0A27EA26CEE3FE07F18C0
-01E0157F6DEDFF8001FC160001FF140302E0EB0FFED97FFEEB3FFC486CB612F0D8FC0F5D
-D8F803158048C66C49C7FC48010313F0354D79CB44>I<003FBB12C0A5DA80019038FC00
-1FD9FC001601D87FF09438007FE001C0183F49181F90C7170FA2007E1907A3007C1903A5
-00FC1AF0481901A5C894C7FCB3B3A749B812FCA54C4A7CC955>I<B700F8023FB512F8A5
-D8001F01C0C9380FE000745AB3B3AD6D180F63811A1F6D96C7FC626D7F1A7E6D7F6D606E
-6C4B5A6E6CED07F06E6C4B5A6E01C0EC3FC06E01F049B45A020101FF011F90C8FC6E91B5
-5A033F15F8030715E0030092C9FC040713F0554C7CCA5E>I<B7D8E007B791B612C0A5D8
-003F0180C7000101FCC9387F80006F7070C7FC6D70183EA26F70167E6D71177C876F1BFC
-6D715F6F831E016D656F4B6D14036D65876F92B515076D656F4A8007F3160F6E64700103
-6E141F6E04E194C8FCA27001076E5C6E04C0163E8770010F177E6E4C6C157C70011F814F
-6C15FC6E637049EDC0016E033E6D5D1CE070017E16036E037C6D5D7001FC15F04E6D1407
-6E63DCFF01EEF80F6F4A6D5DA20583EEFC1F6F4A6D92C9FC1CFE05C75F6F4A6D143E05EF
-16FF4E6E137E6F197C05FF17FC6F91C86C5BA36F496F5BA24D816F61A26F496F5BA37048
-6F5BA370486F90CAFCA24D81041F5FA27048167C7A4C7ECA7F>87
-D<B700F84AB6FCA5D8001F01F0C93803FC006F705A6D4E5A6D6D4C5A816D4E5A6D6D4C5A
-826D4EC7FC6E6D5D70157E6E5F6E7F704A5A6E4C5A6E7F704A5A6E4C5A6E7F71495A6E4C
-C8FC6F7F71137E6F5D6F7F71485A6F4A5A6F13FC71485A6F4A5A6F13FFF09F806F02BFC9
-FC7013FF60705B8260705B8260B3A7037FB612FEA5584B7ECA5D>89
-D<130C131E137E5B485A5B485A485A485AA248C7FC121E123E123C127CA21278A212F85A
-A2EAF1F8EAF7FEB5FC1480A214C0A27EA37E14807E6C13006C5AEA01F8122579CB22>96
-D<ECFFFC010FEBFFC0017F14F090B612FC489038803FFF2703FC00077F486C6D7F486C6D
-7F6E7E83707EA3707E6C90C7FC6C5A6C5AC9FCA4ED1FFF021FB5FC49B6FC130F013FEBC0
-3F9038FFFE00000313F04813C04890C7FC485A485AA2485AA2485AA4167FA26D14FF007F
-15EF6D01017F6C6C903907CFFF806C6CD90F8F13FE6C9038E07F076C9038FFFE0300014A
-7ED8003F9038F0007F0103018090C7FC37337CB13C>I<EB7FC0B5FCA512037EB3A2ED0F
-FF037F13F002C1B512FC02C714FF9126CFF80F7F9126FFC00113E092C76C7E02FC6E7E4A
-6E7E5C4A6E7E84831980A219C083A319E0AC19C0A25F1980A34D1300606E141F606E4A5A
-6E4A5A02BF4A5A91261F80035B9027FE0FF01F5B496CB548C7FC496C14F849C614E0C8D8
-0FFEC8FC3B4D7CCB44>I<91380FFF8091B512F8010314FF010F158090263FFE0013C0D9
-7FF8EB1FE0D9FFE0EB3FF04849EB7FF8484913FF4890C7FC5A5B121F5B003FED7FF0EE3F
-E0007FED1FC093C7FC5BA212FFAC127F7FA2123FA26D153E121F6D157E6C167C6C6D14FC
-6C16F86C6D13036C01F0EB07F0D97FFCEB1FE06DB4EBFFC0010F90B5120001035C010014
-F0020F13802F337CB137>I<EF1FF0EE3FFFA51600177FB3A2EC0FFF91B512E0010314F8
-010F14FE013FEB01FF903A7FF8003FFFD9FFE0130F48497F48497F4890C77E4881485AA2
-485AA3127F5BA212FFAC127FA37F123FA2121F7F000F5D6C6C5C5E6C6D5B6C01E0497F6C
-6D017FEBFFE090393FFE03FE6DB512F801075C010114C09027001FFC00EBC0003B4D7CCB
-44>I<EC0FFF91B512F0010314FC010F14FF90263FFE077F90267FF0007F4948EB3FE048
-01806D7E48824890C76C7E4848140783485A003F6F7EA3485A701380A312FFA290B8FCA4
-01F8CAFCA5127FA27FA2123FA26C6CED0F80A2000F161F6C6C16006E5C6C6D147E6C6D5C
-6C6D495AD97FFCEB07F0903A1FFF803FE06D90B55A010392C7FCD9007F13FC020713C031
-337DB138>I<ED7FE0913807FFFC021F7F027F7F902601FFE0138049018113C0902607FE
-0113E049485A14F8131FEB3FF0A26F13C0EB7FE06F1380EE3E0093C7FCADB77EA526007F
-F0C8FCB3B3A2003FB512F8A52B4D7DCC26>I<DA7FFCEB0FF00103B538807FF8011F9138
-F1FFFC4991B512FE90267FF01F13F32701FFC007138348EB0001A248486DEBC1FC000FEE
-E0F849027F1300A2001F82A8000F5EA26D14FF00075E6C6C495BA26CD9C00790C7FC6C90
-38F01FFC4890B55A5ED803C314809026C07FFCC8FC000790CAFCA47FA27F13FC90B612FC
-EEFFC06C16F817FE6C8218806C17C06D16E00003B812F0120FD81FFCC7000F13F8D83FF0
-140049153F4848ED1FFC00FF160F491507A56D150F007F17F86D151F6C6CED3FF06C6CED
-7FE0D80FFE913801FFC06C6C6C010713806C01F8017F1300C690B612FC013F15F0010715
-80D9003F01F0C7FC37487DB03D>I<EB7FC0B5FCA512037EB3A2923801FFC0030F13F803
-3F13FE4B7F9126C1FE077F9126C3F0037F9138C7C001DACF8080150002DE7F02FC81A25C
-A25CA35CB3A9B6D8C07FEBFFE0A53B4C7BCB44>I<13FCEA03FF487F487FA2487FA66C5B
-A26C5B6C90C7FCEA00FC90C8FCACEB7FC0B5FCA512037EB3B3B61280A5194D7BCC22>I<
-EB7FC0B5FCA512037EB3A393383FFFFEA5040390C7FC17FCEE0FF04C5A4C5A4C5A04FEC8
-FCED03FC4B5A4B5AED1FC0ED7F804BC9FC14C102C37F14CF02DF7F91B57E825C4A6C7E02
-F87F4A6C7E9138C01FFF81836F7F6F7F816F7F83707E163F707E83707F707F84B6D8803F
-EBFF80A5394C7CCB41>107 D<EB7FC0B5FCA512037EB3B3B3AAB61280A5194C7BCB22>I<
-90287FC001FFE0EC7FF8B5010F01FC0103B5FC033F6D010F804B6D6C4814E0DBFE079026
-C03F817F9126C3F0019138FC007F0003D9C7E0DAE1F8806CDA8000D9F1E06D7E02CFC7EB
-F3C002DE91267FF780131F02FC03FFC77FA24A5DA24A5DA34A5DB3A9B6D8C03FB5D8F00F
-B512FCA55E317BB067>I<903A7FC001FFC0B5010F13F8033F13FE4B7F9126C1FE077F91
-26C3F0037F00039038C7C0016CD9CF8080150002DE7F02FC81A25CA25CA35CB3A9B6D8C0
-7FEBFFE0A53B317BB044>I<913807FF80027F13F80103B6FC010F15C090261FFE017F90
-3A7FF0003FF8D9FFC0EB0FFC48496D7E4890C76C7E4817804980000F17C048486E13E0A2
-003F17F049157FA2007F17F8A400FF17FCAB007F17F8A36C6CEDFFF0A3001F17E06D5C00
-0F17C06C6C4A13806C17006C6D495A6C01E0EB1FFC6D6C495A903A3FFE01FFF0010FB612
-C0010392C7FCD9007F13F80207138036337DB13D>I<90397FC00FFFB5017F13F002C1B5
-12FC02C714FF9126CFF80F7F9126FFC00313E0000391C77F6C01FC6E7E4A6E7E5C4A6E7E
-848319808319C0A47113E0AC4D13C0A319805FA219004D5A804D5A6E4A5A6E4A5A02FF49
-5BDB80075B9126EFF01F5B02E7B548C7FC02E314F802E014E0DB0FFEC8FC92CAFCAFB612
-C0A53B467CB044>I<DA0FFE14F091B5EAC0010103ECF003010F14F8013F903801FC0790
-3A7FFC007E0FD9FFF0131F4849EB0F9F4849EB07FF485B4890C77E82485A003F81A25B00
-7F167FA3485AAC6C7EA4123F6D15FF121F6D5C6C5D6C7F5E6C6D5B6C6D133F6C01F813FE
-90393FFE03FC6DB55A010714E00100148091381FFC0091C8FCAF047FEBFFE0A53B467CB0
-41>I<9039FF803FE0B5EBFFF8028113FE02837FDA87E11380EC8F830003D99F0713C06C
-139E14BCA214F8A24A6C13806F13004A6C5A93C7FCA45CB3A7B612E0A52A317CB032>I<
-90390FFF8070017FEBF1F048B6FC1207380FFC01391FE0003F4848130F491307127F90C7
-12035A1501A27FA213E06D90C7FC13FE387FFFF0ECFFC015F06C14FC6C14FF6C15806C15
-C06C15E0C615F0013F14F8010714FCEB007F14019138003FFE150F0078140700F81403A2
-6C1401A37E16FC6C14036D14F87F6DEB07F001F8EB1FE001FFEBFFC091B51280D8FC7F14
-00D8F81F13FCD8E00313C027337CB130>I<14F8A61301A41303A21307A2130FA2131F13
-3F137F13FF1203000F90B512F0B7FCA426007FF8C7FCB3A6167CAA013F14F880A290391F
-FE01F0010F1303903907FF87E06DEBFFC06D14806D6C1300EC0FFC26467EC430>I<D97F
-E0EC3FF0B5EC7FFFA5000315016C81B3AB5EA25EA25E7E6EEB0F7F017F021E7F6E017CEB
-FFE090393FFE01F86DB512F0010714E0010114C09027003FFE00EBC0003B327BB044>I<
-B66C90B512C0A5000101E0C73807F0006E5D6C5F6E140F017F5E80171F013F93C7FC6E5C
-011F153E6E147E6D157C6F13FC6D5DEDC001A26D01E05B16036D5DEDF0076D5DEDF80F02
-7F5CEDFC1F023F91C8FC15FE5E021F133EEDFF7E6E137C16FC6E5BA26E5BA36E5BA26E5B
-A26F5AA26FC9FCA23A317DAF41>I<B60081B500FC90387FFFF0A500019026E000030180
-903803FC006E715A6C6F5E6E6F1303017F61A26E496D1307013F616E6F130F011F4A5EA2
-6E6F131F6D4A93C7FCDD9FFC5B6DD9801F153E170F03C06E137E6D023F157C93383E07FF
-DBE07E15FC6DDA7C035C03F015816D02FC5D4C7E03F815C3DA7FF95E9226FDF00013E7DA
-3FFF5E4C137F19FF6E5F4C7FA26E496D90C8FCA26E5E93C7120FA26E486E5AA202015E4B
-1403A26E486E5A54317EAF59>I<B6D88007B512C0A526007FFCC7387F8000013F037EC7
-FC6E14FE6D6C495A6D6D485A6D6D485A6D01E05B4C5A6D6D485A6DEBF83F6E6C48C8FC91
-383FFEFE6E6C5A5E6E5B6E5B806E7FA26E7F82824A7F5C4A80DA0FE77FDA1FC37FDA3F81
-7F4AC67F147E4A6D7E49486D7E01036E7E49486D7F49487F49488149486D7F017F6E7FB5
-00F8011FEBFFF0A53C307EAF41>I<007FB500C090387FFFE0A5C601F0C73803F8006E5D
-017F5E6E1407013F5E6E140F011F5E6E141FA26D6D91C7FC5F6D153E6F137E6D157C6F13
-FC6D5DEDF0016D5DEDF803027F5C15FC1607DA3FFE5B160F021F5CEDFF1F6E91C8FC16BF
-6E13BE16FE6E5BA36E5BA26E5BA26F5AA26F5AA26F5AA393C9FC5D153E157E157CD81F80
-13FC486C5B387FE001D8FFF05B14035D14074A5A49485A007F49CAFCEBC07E383F81FC6C
-B45A6C5B6C13C0C648CBFC3B467EAF41>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmcsc10 10.95 23
-/Fl 23 121 df<B6FCA618067E9622>45 D<166016F01501A216E01503A216C01507A216
-80150FA2ED1F00A2151E153EA2153C157CA25DA25D1401A25D1403A25D1407A24A5AA292
-C7FC5CA2141E143EA25CA2147814F8A25C1301A25C1303A2495AA25C130FA291C8FC5BA2
-133EA2133C137CA2137813F8A25B1201A2485AA25B1207A25B120FA248C9FCA2121E123E
-A2123C127CA2127812F8A25A1260245B7AC332>47 D<EB07FC90383FFF8090B512E03903
-F01FF83907C007FC390F0001FE001E6D7E001C1580003CEC7FC05AED3FE01270B4FC6DEB
-1FF07FA56C5A6CC7FC120CC813E0153FA216C0157F168015FF16004A5A5D4A5A4A5A5D4A
-5A4A5A4AC7FC147E147C5C495A495A495A495A49C71270133E133C5B4914E0485A485A48
-5A48C7120148B6FCA25A4815C0B7FCA3243D7ABC32>50 D<EC01E0A24A7EA34A7EA34A7E
-A24A7E141CA2EC3CFFEC387FA24A6C7EA34A6C7EA2010180ECC00FA249486C7EA349486C
-7EA24980010E1301010FB5FC4980A2011CC7FC49147FA20178810170143FA201F0814914
-1F1201486C811207486CEC3FF8D8FFFE49B512C0A332317DB038>97
-D<B612FEEDFFC016F03A03FC0007F86C48EB01FE1500167F1780163F17C0A61780167F17
-0016FE4B5AED07F0ED7FE090B6128016F09039F80001FC6F7EEE7F80163FEE1FC017E016
-0F17F0A617E0161FA2EE3FC0EE7F80923801FF00486CEB07FEB712F85E93C7FC2C2F7CAE
-35>I<DA0FF81330DA7FFF13700103B5EAC0F090390FFC03F190391FE000F9D97F80133F
-01FEC7121F4848140F48481407485A000F1503491401121F491400123F5B127F1770A248
-C9FC1700AA6C6C1570A3123F6D15F0121F6D15E0000F15016D15C0000715036C6C15806C
-6C14076C6CEC0F00D97F80133ED91FE05B90390FFC03F00103B55AD9007F1380DA0FF8C7
-FC2C317BAF36>I<B612FCEDFFC016F03A03FE000FF86C48EB01FEED007FEE3F80EE1FC0
-EE0FE0EE07F0160317F8160117FCA2EE00FEA417FFAA17FEA3EE01FCA3EE03F817F01607
-EE0FE017C0EE3F80EE7F00ED01FE486CEB0FFCB712F016C04BC7FC302F7CAE39>I<B8FC
-A33903FE00016C489038003F80161F160F1607A21603A317C0ED1C01A393C7FCA2153CA2
-15FC90B5FCA3EBFC00153CA2151CA21770A392C712E0A41601A2EE03C0A21607160F161F
-486C14FFB81280A32C2F7CAE33>I<B712FEA33903FE00036C48EB007F828282A282A3EE
-0380A21538A293C7FCA31578A2EC01F890B5FCA3EBFC01EC0078A21538A592C8FCAA487E
-B512FCA3292F7CAE31>I<DA0FF81360DAFFFE13E00103EBFF8190390FF807E390393FC0
-00F34948137F01FEC7123F4848141F4848140F48481407120F491403485A003F1501A25B
-007F1500A348C9FC1700A8031FB5FCA26C7E9238001FF0EE0FE0123F7FA26C7E120F7F12
-076C7E6C7E6C6C141FD97F80133FD93FE0137B90390FFC03F10103B512E00100EC8060DA
-0FFCC7FC30317BAF3A>I<B5D8F81FB5FCA3D803FEC7EA7FC06C48EC3F80B190B7FCA301
-FCC7123FB3486CEC7FC0B5D8F81FB5FCA3302F7CAE38>I<B512F8A33803FE006C5AB3B3
-A3487EB512F8A3152F7DAE1B>I<90383FFFFCA39038007FC0EC3F80B3AD1218127EB4FC
-A3EC7F005A007C137E007813FE383C01F8381F03F03807FFC0C648C7FC1E307CAE27>I<
-B512FCA3D803FEC8FC6C5AB3A7160EA4161CA4163CA2167C16FC1501ED03F8486C131FB7
-FCA3272F7CAE2F>108 D<D8FFFE923807FFF0A3D803FF92380FFC006C5FD9DF80141DA3
-D9CFC01439A2D9C7E01471A3D9C3F014E1A2D9C1F8EB01C1A3D9C0FCEB0381A2027EEB07
-01A36E130EA291381F801CA391380FC038A2913807E070A3913803F0E0A3913801F9C0A2
-913800FF80A3486CEB7F00487E486C013E497EB5008091B512F0A2151C3C2F7CAE44>I<
-D8FFFC49B5FC7F7F00019138001FF06EEB0FE06EEB07C0EE0380EBDFE0EBCFF013C780EB
-C3FC13C180EBC0FF801580EC3FC0EC1FE0A2EC0FF0EC07F8A2EC03FCEC01FE140015FFED
-7F83153F16C3ED1FE3ED0FF3A2ED07FBED03FFA28181A2167F163F486C141F487E486C14
-0FB56C1307A21603302F7CAE38>I<EC1FF891B5FC903907F00FE090390FC003F0013FC7
-12FC017E147E49804848EC1F804848EC0FC04848EC07E0000F16F0491403001F16F84914
-01003F16FCA2007F16FE90C9FCA34816FFAA6C6CEC01FEA3003F16FCA26D1403001F16F8
-6C6CEC07F0A26C6CEC0FE0000316C06C6CEC1F806C6CEC3F00017E147E6D5C90390FC003
-F0903907F00FE00100B5C7FCEC1FF830317BAF3A>I<B612FCEDFF8016E03A03FE000FF8
-6C48EB03FCED00FE167FA2EE3F80A217C0A61780A2EE7F00A216FEED03F8ED0FF090B612
-C093C7FC01FCC9FCB2487EB512F8A32A2F7CAE33>I<B612E015FE6F7E3A03FE003FE06C
-48EB07F8ED01FC6F7EA2828283A594C7FC5E5E4B5A4B5A4B5AED3FC090B500FEC8FC5D90
-38FC007FED1F806F7E826F7EA26F7EA582A4EF01C016FEA21501486CED0380B538F800FF
-93383F8700EE1FFEC9EA03F832307CAE37>114 D<90383FC00C9038FFF81C0003EBFE3C
-390FE03FFC381F8007EB0003003E1301481300157C5A153CA36C141CA27E6C14006C7E13
-E013FE383FFFE06C13FE6CEBFF806C14E0000114F06C6C13F8010F13FC1300EC07FE1401
-1400157F153F12E0151FA37EA2151E6C143E6C143C6C147C6C14F89038C001F039FBF807
-E000F1B512C0D8E07F130038C007FC20317BAF2A>I<007FB712F8A39039801FF0073A7E
-000FE00000781678A20070163800F0163CA348161CA5C71500B3A8EC3FF8011FB512F0A3
-2E2E7CAD36>I<B5D8F801B5FCA3D803FEC7EA1FF06C48EC0FE0EE07C0EE0380B3AB1607
-6C6C1500A2017E5C017F141E6D141C6D6C133C6D6C5B6D6C485A903903FC07E00100B512
-80DA3FFEC7FCEC07F830307CAE38>I<3B7FFFF001FFFEA30003D9C00013E0C649EB7F80
-017F027EC7FC167C6D6C13786D6C5B6D6C5B15016D6C485AD903FC5B15076D6C48C8FC90
-3800FF1EEC7F9C15BCEC3FF86E5AA2140F6E7E14034A7E4A7EEC1EFF141C91383C7F804A
-6C7E14709138F01FE049486C7E49486C7E148001076D7E49486C7E130E011E6D7E496E7E
-017C6E7E13FC000382D80FFEEC7FF8B549B512C0A3322F7DAE38>120
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm cmti10 10.95 18
-/Fm 18 121 df<933807FF80043F13E09338FE00F8DB01F0133EDB07E0130E4B48131F4C
-137F031F14FF4BC7FCA218FE157E1878180015FE5DA31401A25DA414030103B712F0A218
-E0903A0003F000070207140F4B14C0A3171F020F15805DA2173F1800141F5D5F177EA214
-3F92C712FE5FA34A1301027EECF81CA3160302FEECF03C4A1538A21878187013014A0101
-13F018E0933800F1C0EF7F804948EC1F0094C7FCA35C1307A2001E5B127F130F00FF5BA2
-49CAFC12FEEAF81EEA703CEA7878EA1FF0EA07C0385383BF33>12
-D<120FEA3FC0127FA212FFA31380EA7F00123C0A0A77891C>46 D<147E49B47E903907C1
-C38090391F80EFC090383F00FF017E137F4914804848133F485AA248481400120F5B001F
-5C157E485AA215FE007F5C90C7FCA21401485C5AA21403EDF0385AA21407EDE078020F13
-70127C021F13F0007E013F13E0003E137FECF3E1261F01E313C03A0F8781E3803A03FF00
-FF00D800FC133E252977A72E>97 D<EC1FC0ECFFF0903803F03C903807C01E90381F800E
-90383F000F017E133F4913FF485A485A000714FE5B000F14FC48481300A2485AA3127F90
-C8FCA35A5AA6481403007E1407150F151E003E143C15786C14F0EC03E0390F800F803903
-E07E003801FFF838003FC0202977A72A>99 D<EE3F80ED1FFF1700A2ED007FA2167EA216
-FEA25EA21501A25EA21503A25EA21507A25E147E903801FF8F903807C1CF90391F80EFC0
-90383F00FF017E137F5B48486D5A485AA2485A000F92C7FC5B001F5CA24848137EA215FE
-127F90C75AA214015A485CA2140316384814F0A21407167891380FE070127C021F13F000
-7E013F5B003E137FECF3E1261F01E35B3A0F8781E3802703FF00FFC7FCD800FC133E2940
-77BE2E>I<EC3F80903801FFE0903807E0F890381F803CEB3E0001FC131E485A485A1207
-4848133E49133C121F4848137C15F8EC03F0397F000FE0ECFF809038FFFC00B512C048C8
-FCA45AA61506150E151E007C143C15786C14F0EC01E06CEB07C0390F801F003807C0FC38
-01FFF038007F801F2976A72A>I<EC03F0EC0FFC91383E0E1C9138FC077E903901F003FE
-1303903807E001D90FC013FCEB1F80A2EB3F004914F8137E01FE1303A2484814F0A21507
-12034914E0A2150F12074914C0A2151FA216805B153F1203ED7F006D5BA200015B000049
-5A9038F80F7E90387C1EFEEB1FF8903807E0FC90C7FC1401A25DA21403A25D001C130700
-7F5C48130F5D4A5A4AC7FC48137E00F85B387C03F0381FFFC0D803FEC8FC273B7CA72A>
-103 D<1478EB01FCA21303A314F8EB00E01400AD137C48B4FC38038F80EA0707000E13C0
-121E121CEA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE5BA212015BA2
-12035B1438120713E0000F1378EBC070A214F0EB80E0A2EB81C01383148038078700EA03
-FEEA00F8163E79BC1C>105 D<EB07F0EA03FF14E0A2EA000FA214C0A2131FA21480A213
-3FA21400A25BA2137EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA25BA212
-1FA25BA2123FA290C7FCA25A1307127EA2EAFE0F130E12FCA2131E131CA2EA7C381378EA
-3C70EA1FE0EA0780144079BE17>108 D<D801F0D93F80137F3D07FC01FFE003FFC03D0F
-3E07C1F80F83F03D0E1F0F00FC1E01F8001E011C90387C3800001C49D97E707F003C01F0
-5C0038157F4A5C26783FC05C12704A91C7FC91C7127E00F003FE1301494A5CEA007EA203
-01140301FE5F495CA203031407000160495C180F03075D0003051F13E0494A1480A2030F
-EC3F810007F001C0495CA2031F91383E0380120F494AEC0700A2033F150E001FEF1E1C49
-91C7EA0FF80007C7000EEC03E0432979A74A>I<D801F0EB3F803A07FC01FFE03A0F3E07
-C1F83A0E1F0F00FC001E011C137C001C49137E003C13F012385C38783FC012705C91C7FC
-00F015FE495CEA007EA2150101FE5C5BA2150300015D5B15075E0003020F13704914C0A2
-031F13F00007ED80E05B1681EE01C0120F49EC0380A2EE0700001FEC0F0E49EB07FC0007
-C7EA01F02C2979A733>I<EC1FC0ECFFF8903803F07C90380FC01FEB1F8090393F000F80
-017E14C0491307484814E0485A12075B000F15F0485AA2485AA2ED0FE0127F90C7FCA215
-1F4815C05AA2ED3F80A2ED7F00A248147E007C5C007E13015D4A5A003E495A6C495A4A5A
-260F803EC7FC3807C0FC3801FFF038003F80242977A72E>I<903903E001F890390FF807
-FE903A1E7C1E0F80903A1C3E3C07C0013C137801389038E003E0EB783F017001C013F0ED
-80019038F07F0001E015F8147E1603000113FEA2C75AA20101140717F05CA20103140F17
-E05CA20107EC1FC0A24A1480163F010F15005E167E5E131F4B5A6E485A4B5A90393FB80F
-80DA9C1FC7FCEC0FFCEC03E049C9FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0
-B5FCA22D3A80A72E>I<D801F013FC3A07FC07FF803A0F3E0F03C0260E1F1C13E0001EEB
-380F001C1370003CEBE01F123814C0D8783F14C00070903880070092C7FC91C8FC12F05B
-EA007EA313FE5BA312015BA312035BA312075BA3120F5BA3121F5B0007C9FC232979A726
->114 D<EC7F80903801FFE0903807C0F890381F003C013E131C013C131E017C133E4913
-7E15FEA2000114FCA215706D13007FEBFFC014FC6C13FF15806D13C06D13E0010F13F013
-00140F14071403120C123F387F80011403D8FF0013E0A300FCEB07C000F0EB0F80127000
-78EB1F006C133C381F01F83807FFE0C690C7FC1F297AA725>I<EB01C0EB03F01307A25C
-A2130FA25CA2131FA25CA2133FA291C7FCA2007FB51280B6FC1500D8007EC7FC13FEA25B
-A21201A25BA21203A25BA21207A25BA2120FA25BA2121F141C1380A2003F133C1438EB00
-78147014F05C495AEA1F03495A6C48C7FCEA07FCEA01F0193A78B81E>I<017CEB01C048
-B4EB07F038038F80EA0707000E01C013F8121E001C1403EA3C0F0038EC01F0A2D8781F13
-0000705BA2EAF03F91C712E012005B017E130116C013FE5B1503000115805BA2ED070012
-03495B150EA25DA25D1578000114706D5B0000495A6D485AD97E0FC7FCEB1FFEEB03F025
-2979A72A>118 D<903903F001F890390FFC07FE90393C1E0E0F9026780F1C138001F0EB
-B83FD801E013F89039C007F07FEA0380000714E0D9000F140048151C000E4AC7FCA2001E
-131FA2C75BA2143F92C8FCA35C147EA314FE4A131CA30101143C001E1538003F491378D8
-7F811470018314F000FF5D9039077801C039FE0F7C033A7C0E3C078027783C1E1EC7FC39
-1FF80FFC3907E003F029297CA72A>120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmbxti10 14.4 1
-/Fn 1 47 df<13FCEA03FF000F13804813C05AA25AA2B5FCA31480A214006C5A6C5A6C5A
-EA0FE0121271912B>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fo cmbx12 17.28 52
-/Fo 52 122 df<94267FFF80903801FFE0043FB500F0013F13FC4BB6D8FC01B57E030FDB
-FF0FECFF80037F04BF15C04AB5D8E00390B5008113E04A01FCC76CEBFC03020F01F091B5
-D8F00713F04A01C04914E04A90C7484A4813F84A4817804A485C49491700495B62495B76
-13F04970496D13E04B7213C0726F138072EE3E009AC7FCB0BD12FEA6D8000F01E0C849C9
-FCB3B3B0003FB6D8F803B712E0A665657DE45E>11 D<94387FFF80041FB512F04BB612FC
-030F81037F6F7E4AB5D8E0077F4A49C76C7E020F01F0EC1FF04A01C0147F4A90C8487E4A
-485C4A484A7F49495C495BA2495B4E7F49705B5DA3725B725B725B735A96C9FCAB0503B5
-12FEBBFCA6D8000F01E0C7120184B3B3AF003FB6D8F803B71280A651657DE45A>I<ED0F
-FF4AB512F8020F14FF023F15C091B712F049D9FC037F0107D9F00013FE4901C0EB3FFF49
-90C7000F7F49486E7F017F8349486E7F4A80488448496E7FA248844A157F4884A3481980
-A34819C04A81A34819E0A7B518F0B3A86C19E0A76C19C0A26E5DA26C1980A36C1900A36C
-6D4B5AA26C60A26C6D4A5B6C606E5C6D6C4A5B6D6C4A5B6D6D495B6D6D4990C7FC6D01F0
-EBFFFE6DD9FC035B010090B612F0023F15C0020F92C8FC020114F8DA001F138044607ADD
-51>48 D<16F04B7E1507151F153FEC01FF1407147F010FB5FCB7FCA41487EBF007C7FCB3
-B3B3B3007FB91280A6395E74DD51>I<913801FFF8021FEBFFC091B612F8010315FF010F
-16C0013F8290267FFC0114F89027FFE0003F7F4890C7000F7F48486E7FD807F86E148048
-486E14C048486E14E048486F13F001FC17F8486C816D17FC6E80B56C16FE8380A219FFA2
-83A36C5BA26C5B6C90C8FCD807FC5DEA01F0CA14FEA34D13FCA219F85F19F04D13E0A294
-B512C019804C14004C5B604C5B4C5B604C13804C90C7FC4C5A4C5A4B13F05F4B13804B90
-C8FC4B5AED1FF84B5A4B5A4B48143F4A5B4A48C8FC4A5A4A48157E4A5A4A5AEC7F8092C9
-FC02FE16FE495A495A4948ED01FCD90FC0150749B8FC5B5B90B9FC5A4818F85A5A5A5A5A
-BAFCA219F0A4405E78DD51>I<92B5FC020F14F8023F14FF49B712C04916F0010FD9C01F
-13FC90271FFC00077FD93FE001017F49486D8049C86C7F484883486C6F7F14C0486D826E
-806E82487FA4805CA36C5E4A5E6C5B6C5B6C495E011FC85A90C95CA294B55A614C91C7FC
-604C5B4C5B4C5B4C5B047F138092260FFFFEC8FC020FB512F817E094C9FC17F817FF91C7
-003F13E0040713F8040113FE707F717F7113E085717FA2717F85A285831A80A31AC0EA03
-FCEA0FFF487F487F487FA2B57EA31A80A34D14005C7E4A5E5F6C495E49C8485BD81FF85F
-000F5ED807FE92B55A6C6C6C4914806C01F0010791C7FC6C9026FF803F5B6D90B65A011F
-16F0010716C001014BC8FCD9001F14F0020149C9FC426079DD51>I<F01F804E7E187F18
-FFA25F5F5F5FA25F5F5FA294B5FC5E5E5EA25E5EEE3FBFEE7F3FA216FEED01FCED03F8ED
-07F0A2ED0FE0ED1FC0ED3F8016005D15FE4A5A4A5AA24A5A4A5A4A5A4A5AA24AC7FC14FE
-495A5C1303495A495A495A5C133F49C8FC13FE485AA2485A485A485A5B121F485A48C9FC
-12FEBCFCA6CA6CEBC000B1037FB8FCA6485E7CDD51>I<01C0EE01C0D801F8160F01FF16
-7F02F0EC07FFDAFF8090B5FC92B7128019006060606060606095C7FC17FC5F17E0178004
-FCC8FC16E09026FC3FFCC9FC91CBFCADED3FFE0203B512F0020F14FE023F6E7E91B712E0
-01FDD9E00F7F9027FFFE00037F02F801007F02E06EB4FC02806E138091C8FC496F13C049
-17E07113F0EA00F090C914F8A219FC83A219FEA419FFA3EA03F0EA0FFC487E487E487FA2
-B57EA319FEA35C4D13FC6C90C8FC5B4917F8EA3FF001804B13F06D17E0001F5E6C6C17C0
-6D4B1380D807FC92B512006C6C4A5B6C6C6C01075B6C01E0011F5BD97FFE90B55A6DB712
-C0010F93C7FC6D15FC010115F0D9003F1480020301F0C8FC406078DD51>I<EE1FFF0303
-B512E0031F14F892B612FE0203814AD9FC037F021F9039C0007FC04A90C7EA1FE0DAFFFC
-6E7E494914074949EC7FF8494914FF49495B4949497F4990C7FC495D5C13FF485BA25A4A
-6E5B5A715B48496E5B725A4894C8FCA35AA35C48913801FFE0030F13FE033F6D7E4B14E0
-92B612F89126E1FE037FB53AE3F0007FFEDAE7E06D7EDAEFC06D7F4B6D7F02FFC76C7F4A
-82717F4A82A2854A8085A24A1780A54A17C0A37EA77EA47E6E1780A27EA21A007E4D5B7E
-6E5E7E6E5E6C4C5B6D7E013F4B5B6D6C4A5B6D01C0495B6D6D90B5C7FC6DD9FC0713FC6D
-90B65A6D5E023F15C0020F92C8FC020114F8DA001F1380426079DD51>I<EA07E0120F7F
-13FCEBFFFC91B912F8A45AA21AF01AE01AC01A801A00A248606161616101E0C9123F0180
-4C5A48CA485A4D90C7FC60007E4C5A17074D5A4D5A4D5A485F4D5A17FF4C90C8FCC9485A
-5F4C5A160F4C5A5F163F4C5A16FF5F5D94C9FC5D5D5E150FA24B5AA2153FA24B5AA215FF
-A34A5BA25CA35CA44A5BA45CA65CAD6E5BA26E5BDA03FECAFC6E5A456377E051>I<9238
-3FFF800203B512FC021FECFF80027F15E049B712F849D9F0077F010F90C76C7ED91FFCEC
-1FFFD93FF06E7F494802037F494882717F484980854890C9127FA24884183FA25A80A380
-806E157F6E5E14FE6E7E6F4A5A6C14F003FC495B03FF495B6C1580DCE0075B6CDBF80F90
-C7FC9338FE1FFE6C9238FF7FF84D5A6D16C06D5E6D4BC8FC6D6F7E6D16E00101826D16FC
-023F814A8149B87E010783498390263FFE3F8190267FFC0F819026FFF003814849C6FC48
-496D804849131F4890C7000780160148486E1580003F163F49150F007F7014C049150171
-7E8400FF835B8484A384A21A80A27F007F1900607F003F606D160F001F606D4C5A6C6D15
-3F6C6D4B5A6C01F04B5A6C01FC02035B6C01FF021F5B6D9027F001FFFEC7FC6D90B65A01
-0F16F001035E010093C8FC020F14F8DA007F90C9FC426079DD51>I<ED3FFF0207B512F0
-023F14FC91B7FC010316C049D9F8077F49D9C00113F8013F496C6C7E4948C76C7E49486E
-7E4884484980717F4849825A48707F855A5C855A8583A2B583A41A80A71AC0A35F7EA46C
-5EA27E6E5C7EA26C5E6C7F6C5E6C6D147D6D6C14FD6D6CEB01F96D90388003F16D9038F0
-1FE16D90B500C11480010115816D6C1401021F13FC020113E091C8FC1A00A25FA261A3D9
-FF805E487F486D4A5B487FA2486D5E5F61615F614A4A90C7FC4D5A6C5B4A4A5A4A01035B
-D803FCC7485B6C6C021F13C0D9FFC0017F5B6CD9F803B5C8FC6DB612FC6D5D010F15E001
-0392C9FC010014F8020F1380426079DD51>I<F00FE04E7EA24E7EA34E7EA24E7EA34D7F
-A24D80A24D80A34D80A24D80A34D80A2DD7FBF7FA2181F05FF8017FE04016D7FA24D7E04
-038217F804076D80A24D7E040F8217E0041F6D80A24D7F043F825F047F6E7FA294C77E4C
-825E03016F7FA24C800303845E03076F80A24C80030F845E031F6F80A24C81033F845E03
-7F707F93B9FCA292BA7EA24A85A203FCC912070203865D020771805D86020F864B82021F
-865D87023F864B83027F8692CBFC874A864A840101875C496C728090381FFFC0B700E092
-B812FEA66F647BE37A>65 D<BB12F0F2FF801BF81BFEF3FFC088D800010280C7000114F8
-DF003F7F080F13FF74807480867480757FA2757FA28987A289A965A26365A2515BA298B5
-5A505C505C5091C7FC505B505B087F13F00703B512C096B6C8FC93B812F81BC01BF8F3FF
-801CE00480C8001F13F8080713FE08016D7E7480757F757F757F89757F89871E80871EC0
-A41EE087A663A21EC0A3631E80A2511400A2515B515B6398B55A505C08075C081F5C97B6
-C7FCBD5A1CF81CE099C8FC1BF898C9FC63627AE173>I<4DB5ED03C0057F02F014070407
-B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F033F9127F8007FFE13FF92B6
-C73807FF814A02F0020113C3020702C09138007FE74A91C9001FB5FC023F01FC16074A01
-F08291B54882490280824991CB7E49498449498449498449865D49498490B5FC484A84A2
-484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C7FCA25CA3B5FCB07EA380A27E
-A2F50FC0A26C7FA37E6E1A1F6C1D80A26C801D3F6C6E1A00A26C6E616D1BFE6D7F6F4E5A
-7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F6D02E04D5A6E6DEFFF806E01FC4C90C7FC020F
-01FFEE07FE6E02C0ED1FF8020102F8ED7FF06E02FF913803FFE0033F02F8013F1380030F
-91B648C8FC030117F86F6C16E004071680DC007F02F8C9FC050191CAFC626677E375>I<
-BB12E0F2FF801BF01BFE757E1CF0D800010280C7000780DF007F13FE080F6D7E08018074
-80093F7F090F13FC757F757F877580767F8A88767F8A888AA2767FA28A881F80A37614C0
-A41FE0A5881FF0B05214E0A51FC0A4521480A31F006466A2525BA2525BA2525B666499B5
-5A515C5191C7FC515B515B515B097F5B50B512C008075C083F91C8FC0707B512FCBD12F0
-1CC051C9FC1BF81B8008E0CAFC6C627AE17C>I<BD12FCA488A2D8000102C0C71201F100
-0F1A01F2007F1B3F1B0F1B07757EA28787A288A3F43F80A31C1FA3197EA3F40FC0A499C7
-FC19FEA31801A218031807181F18FF93B6FCA6EEC000181F180718031801A21800A21D7E
-197EA21DFCA696C812011DF8A31C03A3F407F0A31C0FA21C1F1C3F1DE01C7F1CFF63631B
-0F093F13C098B5FC1A0797B6FCBEFCA31D80A35F617AE06A>I<BD12E0A41CF0A2D80001
-02C0C71207F1003F1A0F1A031A001B7F1B3FF31FF81B0FA21B07A21B03A21B011CFCA31B
-00A419FCA21C7EA41C00A21801A31803A21807180F183FEF01FF93B6FCA6EEC001EF003F
-180F18071803A21801A31800A896C9FCB3A5B912F8A657617AE065>I<B96C90B91280A6
-D8000102C0C9000102C0C7FCB3B3A293BBFCA604C0C91201B3B3A6B96C90B91280A67162
-7AE17E>72 D<B912E0A6C702E0C7FCB3B3B3B3AEB912E0A633627CE13C>I<020FB812F0
-A691C70001EC8000B3B3B3ACEA03FCEA0FFF487F487F487FA2B57EA45E96C7FCA36C4949
-5B604A5B6C90C75C6C484A5B01F84A5BD80FFE4A5B6C6C6C90B55A0001D9F80749C8FC6C
-90B65A013F15F0010F15C001014AC9FCD9001F13C044647CE153>I<B912F8A6D8000102
-C0CBFCB3B3B1F307E0A5F30FC0A61B1FA31B3F1C80A21B7FA21BFFA262A2626250130062
-62624FB5FC1907191F4EB6FCBDFC63A553627AE161>76 D<B700C0083FB612F070627097
-B7FCA37061D800010DF8C7FC70F103EFA202FD6DF107CFA202FC6DF10F8FA36F6DF01F0F
-A26F6D183EA26F6D187CA26F6D18F8A36F6DEF01F0A26F6DEF03E0A26F6DEF07C0A26F6D
-EF0F80A3706DEE1F00A2706D163EA2706D5EA2706D5EA3706D4B5AA2706D4B5AA2706D4B
-5AA2706D4B5AA3716D4AC7FCA2716D143EA2716D5CA2716D5CA3716D495AA2716D495AA2
-716D495AA2716D495AA3726D48C8FCA272EBC03EA2726D5AA2726D5AA372EBF9F0A272EB
-FFE0A2725CA2725CA37390C9FCA2735AA2735A90381FFFC0B700F86E480207B812F0A373
-5AA2735A8C627AE199>I<BB7E1AFCF2FFC01BF81BFE757ED800010280C7001F80070114
-F0736C7F081F7F747F747F7414807414C0A27414E0A21DF0A27513F8A41DFCA91DF8A498
-B512F0A21DE0A25014C01D8062501400505B505B087F5B4FB512E0071F5C93B9C7FC1BFC
-1BF01B8008F0C8FC04C0CCFCB3B3A2B97EA65E627AE16E>80 D<BA12F8F1FFE01AFEF2FF
-C01BF01BFED800010280C76C7F070714C0070014F0747F081F7F747F747F7480A2748089
-A37480A389A865A3505CA265A2505C9AC9FC505B505B505B087F5B4FB55A0707148096B5
-48CAFC93B812F81BC050CBFC621AFF932680000314C0DE007F7F071F13F8737F737F737F
-73808885888688A2747FA688A688A676140FF71F80A374801F3F86771400745E746E5BB9
-6E6E5B746E485A75EBFE07091F90B55A090715E009015DCF003F91C7FC0A0013FC71647A
-E178>82 D<DBFFFCEC01E0020FD9FFE01303027F02FC130749B7130F0107EEC01F011F16
-F049D9C007EBF83F4948C7383FFE7FD9FFF8020FB5FC4801E014014849804849153F91C9
-7E484882001F834982003F83845B007F187FA2193FA200FF181FA27F190FA27FA26D1707
-8080806C01F893C7FC80ECFF8015F86CECFFC016FC6CEDFFE017FE6CEEFFE018F86C17FE
-6C717E6C846C846D17F86D836D836D8313036D18806D6C17C0020F17E01401DA000F16F0
-1500040715F8EE007F1703050014FC183F84060713FE84A2007C8300FC83A2197FA3193F
-7EA31AFC7EA27F1AF86D177F7F1AF06D17FF6D18E06D5E01FF18C06E4B138002E04B1300
-02F84B5A02FFED3FFC01CF01E0ECFFF8018301FF010F5B010191B65A6D6C5E48011F93C7
-FC48010315FC48D9003F14E048020149C8FC476677E35A>I<001FBEFCA64849C79126E0
-000F148002E0180091C8171F498601F81A0349864986A2491B7FA2491B3F007F1DC090C9
-181FA4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3021FBAFCA663617AE070>I<
-B96C023FB612FEA6D8000102C0CA0007EBF000E2007FC7FCB3B3B3AA656D63A2821C0180
-6570170380525A6E7F6E4F5A70171F6E626E6D4D5A6E6D177F525A6E6E030390C8FC033F
-01E04B5A6F6DED1FFC6F01FCED7FF80303D9FF80903803FFE06F02F8017F5B6F6C90B7C9
-FC041F5E040716F8040016C0050F4ACAFCDD003F13C06F647AE17C>I<B800FC047FB612
-E0A6D800070280CB6CEB80006D6EDE07FCC7FC666D6E611D0F6D6E611D1FA26E6D611D3F
-6E6D611D7F6E6D96C8FC65A26E6D4D5AA26E6E5F1C036E6E5F1C076E6E5F1C0FA26E6E5F
-1C1F6F6D5F1C3F6F6D5F1C7FA26F6D4CC9FCA26F6D5E1B016F6E5D1B03A26F6E4A5AA26F
-6E5D1B0F6F6E5D1B1F706D5D1B3FA2706D5D1B7F706D92CAFC63706D5C1A01A2706E485A
-A27002C05B1A077002E05B1A0F7002F05B1A1FA27101F85B1A3F7101FC5B1A7F7101FE90
-CBFC62A2716D5AA2715CA2715CA3715CA2715CA2725BA2725BA37290CCFCA2725AA2725A
-A2725A73637DE17A>I<B800F8011FB80203B7FCA6D8000F91C9000102E0CAEBFE006D72
-F20FF07072715A230F6D73627072171F6D6A708277173F6D7397C7FC70846B6E72197E70
-7217FE6E726170855118016E6870731503636E68704C6E15076E68718451180F6EDE7E7F
-607172151F6E06FE61714B7E08016F153F6E4E6C95C8FC71840803616F4D6C177E710207
-6F15FE6F66714B7E080F7013016F4D6C5F7185081F18036F4D6C5F71023F7013076F94C7
-5F728450180F6F047E6E5E7272131F1AFE6F4C6E5EDEE00171133F6F4C6E93C9FC06F084
-070361704B6E157E06F87213FE1907704B6E5DDEFC0F1881704B6E5D06FE19C1071F18C3
-704B6E5DDEFF3F18E7706407BFC9FC07FF18FF704A705CA3704A705CA27099CAFC4F82A2
-7149705BA37149705BA27149705BA37149705BA37190CB5BA27148725AA37148725A7148
-72CBFCA0637DE1A7>I<913803FFFE027FEBFFF00103B612FE010F6F7E4916E090273FFE
-001F7FD97FE001077FD9FFF801017F486D6D7F717E486D6E7F85717FA2717FA36C496E7F
-A26C5B6D5AEB1FC090C9FCA74BB6FC157F0207B7FC147F49B61207010F14C0013FEBFE00
-4913F048B512C04891C7FC485B4813F85A5C485B5A5CA2B55AA45FA25F806C5E806C047D
-7F6EEB01F96C6DD903F1EBFF806C01FED90FE114FF6C9027FFC07FC01580000191B5487E
-6C6C4B7E011F02FC130F010302F001011400D9001F90CBFC49437CC14E>97
-D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF80047F14F00381B612FC038715FF
-038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02007F03F8824B6F7E4B6F1380
-4B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA44F13F8A31BF0A24F13E0A24F
-13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C495B9126F83FE0013F13C09127
-F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C7001F91C8FC90C8000313E04F65
-7BE35A>I<92380FFFF04AB67E020F15F0023F15FC91B77E01039039FE001FFF4901F801
-0113804901E0010713C04901804913E0017F90C7FC49484A13F0A2485B485B5A5C5A7113
-E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE7EA280A27EA2806C18FCA26C
-6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC1FC06D01E0EC7F806D6DECFF
-00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D020F1580020102FCC7FCDA00
-0F13C03E437BC148>I<F17FF8050FB5FCA6EF000F8484B3A892380FFF804AB512F8020F
-14FE023FECFF8391B712E301039138807FF3499039F8000FFB011F01E00103B5FC494913
-004990C87E49488148498148834A815A485BA2485BA25AA3485BA4B5FCAE7EA46C7FA37E
-A26C7FA26C5F806C5F6C6D5D6C6D5D017F93B5FC6D6C6C0103806D6D49806D01F0D91FF7
-EBFFFE6D9039FE01FFE7010190B612876D6CECFE07021F14F8020314E09127003FFE00EC
-C0004F657BE35A>I<92380FFFC04AB512FC020FECFF80023F15E091B712F80103D9FE03
-7F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F49486E7F48498048844A8048
-84485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA380A27E
-A27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01E0
-4A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715E0
-020092C8FC030713F041437CC14A>I<EE3FFC0307B51280033F14C04AB612F0020715F8
-4A9038F03FFC4AEB807F913A7FFE00FFFE4A5A4B4813FF4913F05B4913E0A24913C0A270
-13FE4949EB7FFCEF3FF8EF1FF0EF07C094C7FCB0B812C0A6D8001F01C0C8FCB3B3B0007F
-B612FCA638657CE431>I<F107F8DB7FFEEC3FFE020FB5D8F001B5FC027FDAFE03148049
-B7128F49DCDFFD13C0010FD9F00FEBFFC149D9800114014990C7EBFC0349486E6C7E4948
-EC3FFF48496E018113800780130048F0C03E97C7FC48496E7FA34884A96C60A36C6D4A5B
-A26C60A26C6D4A90C8FC6D6C4A5A6D6C4A5A6D6D485BDBF00F5B4990B612C060D97C7F4A
-C9FCD9FC0F14F09126007FFECAFC92CCFC1201A47FA27F8014F091B77E18FE6CEFFFC019
-F06D17FC19FF6D846D846D846D84013F8490BAFC0003854801E0C712014890C9000F7F48
-4816014848EE007F4848717E8512FF5B85A56D5F007F616D173F003F616D177F6C6C4D5A
-6C01C003035B6C6D4B5B6C01F8031F5BC601FF92B5C7FC6D01F8011F5B011F90B712F801
-0717E0010094C8FC020F15F0DA003F01FCC9FC4A607CC151>I<903807FF80B6FCA6C6FC
-7F7FB3A8EF1FFF94B512F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FDB83
-F86D7FDB87F07FDB8FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8
-F007B71280A651647BE35A>I<EB0FE0EB3FF8497E48B5FCA24880A24880A76C5CA26C91
-C7FCA238007FFC6D5AEB0FE090C9FCAF903807FF80007FB5FCA6C6FC7F7FB3B3AEB712C0
-A622657BE42C>I<ED01FCED07FF4B1380033F13E0A24B13F0A292B512F8A76F13F0A26F
-13E0A2030F13806F1300ED01FC92C8FCAFEEFFF8021FB5FCA6EC000F8181B3B3B3AAEA07
-F0EA1FFC487E487EB56C4813F0A317E05D17C05D17806C4948130049495A6C48495A261F
-FE0313F06CB65A6C158000014AC7FC6C6C13F8010713802D8288E431>I<903807FF80B6
-FCA6C6FC7F7FB3B3B3B3ADB712E0A623647BE32C>108 D<902607FF80D91FFFEEFFF8B6
-91B500F00207EBFF80040702FC023F14E0041F02FF91B612F84C6F488193267FE07F6D48
-01037F922781FE001F9027E00FF0007FC6DA83F86D9026F01FC06D7F6DD987F06D4A487F
-6DD98FC0DBF87EC7804C6D027C80039FC76E488203BEEEFDF003BC6E4A8003FC04FF834B
-5FA24B5FA24B94C8FCA44B5EB3B2B7D8F007B7D8803FB612FCA67E417BC087>I<902607
-FF80EB1FFFB691B512F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FC6DA83
-F86D7F6DD987F07F6DD98FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2
-B7D8F007B71280A651417BC05A>I<923807FFE092B6FC020715E0021F15F8027F15FE49
-4848C66C6C7E010701F0010F13E04901C001037F49496D7F4990C87F49486F7E49486F7E
-48496F13804819C04A814819E048496F13F0A24819F8A348496F13FCA34819FEA4B518FF
-AD6C19FEA46C6D4B13FCA36C19F8A26C6D4B13F0A26C19E06C6D4B13C0A26C6D4B13806C
-6D4B13006D6C4B5A6D6D495B6D6D495B010701F0010F13E06D01FE017F5B010090B7C7FC
-023F15FC020715E0020092C8FC030713E048437CC151>I<902607FF80EBFFF8B6010FEB
-FF80047F14F00381B612FC038715FF038F010114C09227BFF0003F7FC6DAFFC0010F7F6D
-91C76C7F6D496E7F03F86E7F4B6E7F4B17804B6F13C0A27313E0A27313F0A21BF885A21B
-FCA3851BFEAE4F13FCA41BF861A21BF0611BE0611BC06F92B512801B006F5C6F4A5B6F4A
-5B03FF4A5B70495B04E0017F13C09226CFFC03B55A03C7B648C7FC03C115F803C015E004
-1F91C8FC040313E093CBFCB3A3B712F0A64F5D7BC05A>I<D90FFFEB0FFCB690383FFF80
-93B512E04B14F04B14F8923907FC7FFC92390FE0FFFEC6EC1F806DD93F0113FF6D133E15
-7E157C15F8A215F07013FEA24BEB7FFCEF3FF8EF0FE04B90C7FCA55DB3B0B712F8A63841
-7BC042>114 D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48B8FC48EBE0
-014890C7121FD80FFC1407D81FF0801600485A007F167F49153FA212FF171FA27F7F7F6D
-92C7FC13FF14E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C826C82013F
-1680010F16C01303D9007F15E0020315F0EC001F1500041F13F81607007C150100FC8117
-7F6C163FA2171F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D0203130002
-C0EB0FFE02FCEB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F13E035437B
-C140>I<EC07E0A6140FA5141FA3143FA2147FA214FF5BA25B5B5B5B137F48B5FC000F91
-B512FEB8FCA5D8001F01E0C8FCB3AFEF0FC0AC171F6D6D1480A2173F6D16006F5B6D6D13
-7E6D6D5B6DEBFF836EEBFFF86E5C020F14C002035C9126003FFCC7FC325C7DDA3F>I<90
-2607FFC0ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60183E6D6D14
-7E4E7F6D6D4948806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F5C020314F8
-DA003F018002F0C7FC51427BC05A>I<B700C00103B512FCA6C66C01C0C8381FFE006D6D
-ED07F0A26D6D5E190F6D6D5E191F6D606F153F6D95C7FC6F5DA26D6D157E19FE6D6E5C18
-016E5E7013036E5E701307A26E6D5C180F6E6D5C181F6E6D5C183F6E93C8FC705BA26E6D
-13FEA26E6E5A17816FEBC1F817C36F5C17E76F5C17FFA26F5CA26F5CA26F91C9FCA26F5B
-A36F5BA2705AA2705AA2705AA2705A4E417DBF55>I<007FB600C0017FB512F8A6D8001F
-01F8C70007EBF0006D040190C7FC6D6D5D6D6D4A5A6D6D4A5A70495A6D4C5A6E7F6E6D49
-5A6E6D495A7049C8FC6E4A5A6E6D485A6E6D485A6E13FFEF8FF06EEC9FE06FEBFFC06F5C
-6F91C9FC5F6F5B816F7F6F7F8481707F8493B57E4B805D4B80DB0FF37FDB1FE17F04C080
-153F4B486C7F4B486C7F4A486D7F4A486D7F4A5A4B6D7F020F6E7F4A486D7F4A486D804A
-5A4AC86C7F49486F7F4A6F7F0107707FEB3FFFB600F049B7FCA650407EBF55>120
-D<B700C00103B512FCA6D8003F01C0C8381FFE006FED07F0A26D6D5E190F6D6D5E191F6D
-6D5E193F6D95C7FC6F5D6D177E6F15FEA26D6E495AA26E6D5C18036E6D5C18076E5E7013
-0F6E5E70131FA26E6D495AA26E6D91C8FC606E6D137E18FE6E5D17816F5C17C3A26FEBE7
-F0A26FEBF7E017FF6F5CA26F5CA26F91C9FCA36F5BA26F5BA2705AA2705AA2705AA35FA2
-5F163F94CAFC5E167E16FED807E05CD81FF81301487E486C495AA2B5495AA24B5A5E151F
-4B5A6C4849CBFC15FEEBFC01393FF807FC391FF03FF06CB55A6C5C6C91CCFCC613FCEB1F
-E04E5D7DBF55>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fp cmsy10 10.95 5
-/Fp 5 56 df<007FB812F8B912FCA26C17F83604789847>0 D<EE7FFE0307B512E0033F
-14FC92B7FC0203D9C00313C0DA0FFCC7EA3FF0DA3FE0EC07FCDA7F80EC01FED901FEC9EA
-7F80D903F8EE1FC0D907E0EE07E04948707E4948707E49CB7E017E187E498449844848F0
-0F8000031AC04918074848F003E0A24848F001F0A248CD12F8A2001E1A78003E1A7CA200
-3C1A3C007C1A3EA200781A1EA300F81A1FA2481A0FAB6C1A1FA200781A1EA3007C1A3EA2
-003C1A3C003E1A7CA2001E1A78001F1AF8A26C6CF001F0A26C6CF003E0A26C6CF007C06D
-180F00011A806C6CF01F006D60017E187E6D606D6C4C5A6D6C4C5A6D6C4C5AD903F8EE1F
-C0D901FEEE7F809026007F80DA01FEC7FCDA3FE0EC07FCDA0FFCEC3FF0913B03FFC003FF
-C0020090B6C8FC033F14FC030714E09226007FFEC9FC50557BC05B>13
-D<EB0FFCEB3FFF90B512C0000314F04880488048804880A2481580A3B712C0AA6C1580A3
-6C1500A26C5C6C5C6C5C6C5CC614C0013F90C7FCEB0FFC22227BA72D>15
-D<19301978A2197C193CA2193E191EA2191F737EA2737E737EA2737E737E1A7C1A7EF21F
-80F20FC0F207F0007FBB12FCBDFCA26C1AFCCDEA07F0F20FC0F21F80F27E001A7C624F5A
-4F5AA24F5A4F5AA24FC7FC191EA2193E193CA2197C1978A2193050307BAE5B>33
-D<126012F0AE12FC12FEA212FC12F0AE126007227BA700>55 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fq cmsl10 10.95 54
-/Fq 54 122 df<9339FFC003F8030F9038F01FFE923A3FC07C7E0F923BFE001FF81F80DA
-03F890383FF07F4A48D9FFE013C0EC1FE04A4848EBC0FF03804A1380DA7F00157F4A9238
-003E004A6D91C7FC8301015D4A5CA4160113034A5CA416030007B812FCA3290007F00003
-F8C8FCA21607130F4A5CA4160F131F4A5CA4161F133F4A5CA4163F137F91C75BA4167F5B
-4992C9FCA31201486C49487EB5D8F83F13FF5DA242407EBF35>11
-D<EEFF80030F13F092383FC0789238FE001CDA03F8130E4A48133FDA1FE013FF4A5A4B5A
-EC7F005C5CEE00FE010115784A1400A513035CA4EE01FC0003B7FC17F8A23A0007F0000F
-1607A2130F4A14F0A4160F131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F
-5B491500A31201486C903801FF80B5D8F83F13FCA25D30407EBF33>I<DCFF80EB7FC003
-0F9039E007FFF8923B3F80781FE03C923BFE003C7F000EDA03F8D91FFC7F4A484948EB1F
-80DA1FE0D9FFF0137F4A48485B03804A13FFDA7F005C5C4A92C7FCF27F0001016E153C4A
-4A91C7FCA5010314014A5CA41AFE0003BAFC62A23D0007F00003F800071903A2010F1407
-4A4A5CA41907011F140F4A4A5CA4190F013F141F4A4A5CA4191F017F143F91C7495CA419
-3F49147F4992C75BA31201486C49486CEBFFC0B5D8F83FD9FC1F13FE605D49407EBF4C>
-14 D<140E141E143EA4143CA3000FEC01E03A1F803803F001C0130F01F0EB1FE0D807F8
-EB7FC03A01FC70FE003900FE73F890383F77E090380FFF80D903FEC7FCEB00F0EB03FCEB
-1FFF90387EEFC03901FCE7F03907F0E3FC391FE0E1FF3A7F81E07F80903801C03F00FC14
-1F0078EC0F00D8200390C7FC1200A31307A35C91C8FC242774C32D>42
-D<007FB5FCA2B512FEA418067C961E>45 D<157015F014011407143F903803FFE0137FEB
-FFCFEBF80F1300141F15C0A5143F1580A5147F1500A55C5CA513015CA513035CA513075C
-A5130F5CA3131F497EB612F8A31D3D78BC2D>49 D<EC01FE91380FFFE0023F13F89138FC
-07FC903901E001FE903907C000FF49C7EA7F80011E15C0163F4915E05B0170141F13FF80
-A35A163FA26C90C7FC137E0118EC7FC090C8FCEEFF80A24B1300A24B5A5E4B5A4B5A4B5A
-5E4B5A4BC7FC15FEEC01F84A5A4A5A4A5A4AC8FC143E5C5CEB01E04948130E49485B49C7
-FC131E495C13705B48485C484814F0000FB6FC5A485D5AB7FC5EA22B3D7CBC2D>I<EC07
-FC91383FFF809138F80FE0903903C007F09039078003FC90380F0001011C14FE013C14FF
-137F1480EBFFC0A31480A291380003FE137E90C7FCED07FC16F8150F16F0ED1FE016C0ED
-3F80ED7E005DEC07F0903803FF8015F090380001FC6E7EED7F80ED3FC0A2ED1FE016F0A3
-16F8A4120EEA3F80486C133F16F012FFA216E0157F5B48C7EAFFC000F015800070491300
-12786C495A003EEB07F86C495A390FE03FE00003B51280C649C7FCEB1FE0283F7ABC2D>
-I<17E016011603831607A2160FA2161F83163FA2167F167716F7EEE7FCED01E316C31503
-16831507EE03FEED0F01150E151E151C153C03387FED7800157015F05D4A4880177F4A5A
-A24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA3FE0171F5CA2495AA2494881170F49
-C8FCA2130EA24982013C1507A2137CD801FE4B7E2607FF80EC3FFEB500F00107B512FC19
-F85E3E417DC044>65 D<013FB7FC18E018FC903B007FE00007FE6E48903801FF80943800
-7FC05DF03FE0F01FF0A3027F16F892C8FCA54A16F04A153F19E0187F19C0F0FF8001014B
-13004A4A5A4D5AEF1FF04D5ADC03FFC7FC49B612F8EFFF8002F8C7EA3FE0EF0FF0EF07FC
-717E010715014A81711380A319C0130F5CA5011F4B13805C19005F601707013F4B5A4A4A
-5A4D5A4D5A017F913801FF8001FF020F90C7FCB812FC17F094C8FC3D3E7DBD40>I<DCFF
-C01338030F01F01378037F01FC13F0913A01FF803F01913A07FC000781DA1FE0EB03C3DA
-7FC0EB01E74AC812FF4948ED7FE0D907FC153F495A4948151F495A4948150F494816C018
-074890C9FC485AA2485A000F1880491603121FA248481607A295C7FC485AA412FF5BA75B
-A2181C183C1838A27F007F1778187018F0003F5F6D150160001F16036C6C4B5A95C7FC6C
-6C5D6C6C151E6C6C5D6C6C15F86D6C495A6D6CEB07C0D91FF0EB1F80D907FE01FEC8FC01
-01B512F86D6C13E0DA07FEC9FC3D4276BF42>I<013FB7FC18E018F8903B007FF0000FFE
-6E48EB01FF9438007FC04B6E7E180F85727E727E147F4B6E7EA2727EA302FF178092C9FC
-A54918C05CA41A8013034A5DA41A0013074A5DA261A24E5A130F4A5E180F61181F61011F
-4C5A5C4E5A4EC7FC4D5A4D5A013F4B5A4A4A5AEF3FE0EF7F80017F4A48C8FC01FFEC1FFC
-B812F0178004FCC9FC423E7DBD45>I<013FB812F8A39026007FF0C7127F6E48140F1803
-4B14011800A31978147F4B1570A502FF147092C7FCA3190017F0495D4A1301A21607161F
-91B6FC495DA29138FC003F160F1607160301075D5CA219E0180119C0010FEC07004A90C7
-12031980A218071900011F5E5C181EA2183E183C013F167C4A15FC4D5A1707017F151F01
-FF4AB45AB9FCA2603D3E7DBD3E>I<013FB812E0A3903A007FF000016E48EB003F180F4B
-14071803A31801147F4B15C0A514FF92C71270A395C7FC17F0495D5C160116031607161F
-49B65AA39138FC003F160F160701075D4A1303A5010F4AC8FC5C93C9FCA4131F5CA5133F
-5CA3137FEBFFF0B612F8A33B3E7DBD3B>I<4BB46C1370031F01F013F0037F9038FC01E0
-913A03FF807E03913A0FF8000F83DA1FE0EB07C7DA7F80EB01EF4AC812FFD903FE16C049
-48157F4948153F495A4948151F495A4948168091C9120F5A485AA2485A000F1800498212
-1FA248485EA295C7FC485AA412FF5BA6043FB512E05BA29339001FFC00715AA2607F127F
-A2171F123F6D5EA2121F7F000F163F6C7E6C6C4B5A7F6C6C15FF6C6DEB01EFD93FC0EB07
-C7D91FF0EB1F87D907FE9038FE03800101B5EAF8016D6C01E0C8FCDA07FEC9FC3C4276BF
-47>I<013FB5D8F807B6FC04F015FEA29026007FF0C7380FFE006E486E5AA24B5DA4180F
-147F4B5DA4181F14FF92C85BA4183F5B4A5EA491B8FC5B6102FCC8127FA318FF13074A93
-C7FCA45F130F4A5DA41703131F4A5DA41707133F4A5DA3017F150F496C4A7EB6D8E01FB5
-12FC6115C0483E7DBD44>I<011FB512FC5BA29039003FF8006E5AA25DA5143F5DA5147F
-5DA514FF92C7FCA55B5CA513035CA513075CA5130F5CA5131F5CA3133F497E007FB512F0
-A2B6FC263E7EBD21>I<013FB500F8010FB5FC4C5BA29026007FF0C7000313E06E486E13
-0019FC4B15F04E5A4E5A4E5A061EC7FC027F5D4B5C4D5A4D5AEF07804DC8FC02FF141E92
-C7127C5FEE01E04C5A4C5A49021FC9FC4A5B5E4C7E5D03077F01035B9139FC1F3FE0153C
-4B6C7E15F09139FFE00FF84913C092380007FC5C4A6D7E5C707E130F4A6D7F84177F717E
-A2011F6F7E5C717EA2717EA2013F6F7E5C84A2017F83496C4A13E0B600E0017F13FFA24B
-90B6FC483E7DBD47>75 D<013FB512FEA25E9026007FF8C8FCEC3FE0A25DA5147F5DA514
-FF92C9FCA55B5CA513035CA513075CA21838A21870130F5CA218E0A3011F15014A15C017
-03A21707EF0F80013F151F4A143F177FEFFF00017F140301FF143FB9FC5FA2353E7DBD39
->I<90263FFFF093381FFFF85013F0629026007FF8EFF000023F4D5AA2023B933801DFC0
-A2DA39FCED039FA2F1073F14790271040E5BEC70FE191C19381A7F02F01670DAE07F94C7
-FC19E0A2F001C06201016D6C495A02C05FF00700A2180E6F6C14010103161C028003385B
-A218706F7EF0E00313070200DA01C05BA2923907F00380A294380700075B010E902603F8
-0E5C5FA25F190F011E6D6C5A011C605FA2EEFDC0DB00FF141F013C5D013860013C92C7FC
-017C5C01FE027E143F2607FF80017C4A7EB500FC037FB512E004785E4A1338553E7CBD53
->I<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A6C157C023B
-163C6F15381439810238167802787FDA707F157082153F82031F15F002F07FDAE00F5D82
-15078203031401010180DAC0015D82811780047F1303010315C04A013F5C17E0161F17F0
-040F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E130E188E177F
-18CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE2607FF
-801400B512FC18705C483E7DBD44>I<923803FF80031F13F09238FE01FE913903F0003F
-DA0FC0EB1FC0DA3F80EB07E0027EC76C7E49486E7E49488149486E7E4948157F495A013F
-17804948ED3FC049C9FCA24848EE1FE012035B000718F05B120FA2485A19F8123F5BA212
-7FA219F04848163FA5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60003F160F6D
-5E001F4C5A4D5A6C6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A017FEC1FC06D
-6C495AD90FE001FEC8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47>I<013FB6
-12FEEFFFE018F8903B007FF0000FFC6E48EB01FF7113804BEC7FC0183F19E0F01FF0A214
-7F5D19F8A402FFED3FF092C8FCA219E0A2F07FC05B4AEDFF8019004D5A4D5AEF0FF80103
-ED3FE04A903801FF8091B648C7FC17F002FCCAFCA213075CA5130F5CA5131F5CA5133F5C
-A3137F497EB612E0A25D3D3E7DBD3E>I<013FB612F017FF18E0903B007FF0003FF86E48
-EB07FCEF01FE4B6D7EF07F8019C0183F19E0147F4B15F0A502FFED7FE092C8FCA219C0F0
-FF80A2494B13004A5D4D5AEF0FF04D5AEF7F800103DA07FEC7FC91B612F017809139FC00
-07E0EE03F8EE00FC0107814A147F717EA284A2130F5CA484011F157F5CA41902013F1707
-5CA2F0F00F017F170E496C143FB600E0011F131C94380FF83C4B01071378CA3801FFE094
-38003F8040407DBD43>82 D<9238FF80070207EBE00F021FEBF81E91387F00FE02FCEB1F
-3ED903F0EB0FFE49481307494813034AEB01FC49C7FC491400133E137E177C491578A57F
-1770A26D1500808080EB7FFEECFFE06D13FEEDFFC06D14F06D14FC010380010080143F02
-031480DA003F13C015031500EE7FE0163F161FA2160F121CA31607160F003C16C0A31780
-003E151F1700007E5D007F153E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF87F80
-3F8027F01FFFFEC7FCD8E00713F839C0007FC030427BBF33>I<0007B912F0A33C0FFE00
-0FF8003F01F0160F01C04A13034848160190C7FC121EF000E048141F5E1238A212781270
-153F5E5AA3C81600157F5EA515FF93C9FCA55C5DA514035DA514075DA5140F5DA3141FEC
-7FFC0003B7FCA33C3D76BC42>I<B600E090B512FC4B15F8A2000101C0C7000F13006C49
-EC03FCEF01F091C9FC60A317015A495EA417031203495EA4170712074993C7FCA45F120F
-49150EA4171E121F49151CA4173C123F491538A31778177017F05F001F15015F16036D4A
-5A000F93C8FC5E6C6C141E6C6C5C000115F86C6C495A017FEB07C090393FC03F8090260F
-FFFEC9FC010313F89038007FC03E4073BD44>I<B6017FB5D88007B512804A1A00A20007
-01C0010101E0C713F06C90C80180EC3FC06C48735A99C7FC057F150E1B1E6D191C6C1A3C
-1B3805FF15787214705E636EEB03BF017F4E5AEE073F505A040E7F051F4AC8FC161C6E17
-0E013F143862167804706D5BEEF00F04E05D90381FE00104C015F003035E0480140106F8
-5B9226070007130302F05F010F010E150797C9FC5D190E4BEB03FC616E5A01075F5D61DA
-F9C014FE05015BECFB8002FF6F5A7F92C75CA24A93CAFC835C606D5A605C604A15781870
-594074BD5D>87 D<010FB500F090B512F85B5FD9003F902680003F1300DA0FFEC7EA1FF8
-4BEC0FE00207168096C7FC6E6C141E181C6E6C143C606E6D5B4D5ADB7FC05B4D5A92383F
-E0074DC8FC92381FF01E171C6F6C5A5F923807FCF0EEFDE06FB45A5F6F90C9FCA26F7FA2
-707EA216FF4B7FED03DF9238079FF0ED0F1F92380E0FF8151C92383C07FC15784B6C7EEC
-01E04B6C7EEC038002076D7F4AC7FC021E6E7E5C02386E7E5C02F06E7E495A49486E7E13
-0749486E7E497E017F4B7E2603FFF091383FFF80007F01FC49B512FEB55CA2453E7EBD44
->I<EC7FC0903803FFF890380FC07E90383E003F496D7E01FF6D7E82A248140782A26C5A
-137890C7120FA25EA2EC03FF147F903807FF1FEB1FE0D97F805B3801FE00EA03F8485A48
-48133F485A003F5D49EC81C048C7FCA2157F48ED03804814FFA2007F5B913903BF070090
-3880073F3A3FC00E1F8E260FE03C13FC3A03FFF00FF83A007FC003E02A2A7CA82D>97
-D<EB3F80EA1FFFA3C6FC137FA291C9FCA55B5BA512015BA4EC07F80003EB3FFF9039F8F8
-0FC09039FBE003E09039FF8001F891C77E5B4848147E49147F5B821780A2120F5B17C0A3
-167F001F16805BA4EEFF00123F5B4B5AA24B5A5E007F4A5AA24B5A6D495A4BC7FCD87CE0
-137E39F87001F839F03C07E039E00FFF80260003FCC8FC2A4077BE33>I<EC1FF0ECFFFE
-903903F01F8090390FC003C0D93F0013E0017E130F49131F000115F04848EB3FE0485AA2
-4848EB1FC0001FEC0F004990C7FC123FA2485AA412FF90C9FCA96CEC0380150716006C6C
-5B151E001F5C6C6C5B6C6C5B6C6C485A3901F80F8026007FFEC7FCEB0FF0242A7AA828>
-I<EE03F8ED01FFA3ED000F1607A217F0A4160FA217E0A4161FA217C0A491380FF03FECFF
-FC902603F81F138090390FC007BF90391F8003FF90387E0001497F0001157F4848150048
-5A120F5B001F5D485A5E5B127FA2150112FF90C75BA41503A25EA37E1507A26C4A5A7F00
-1F141F6C6C133F6C6CEBFFF83B03F001EFFFC03900F80F8F90383FFE0FD90FF0EBE0002D
-407ABE33>I<EC3FE0903801FFF8903807E07E90380F801F90393F000F80017E14C049EB
-07E0485A12034848EB03F0485AA2121F5B123FA248481307A290B6FCA2D8FF80C8FC90C9
-FCA87EED01C015036C15806D1307001FEC0F006D131E000F5C6C6C5B6C6C485A3900FC07
-C0D93FFFC7FCEB07F8242A7BA828>I<ED07F0ED3FFCEDFC1E913803F03F4A48B4FC4A48
-1380141FEC3F81DA7F0113008102FE137C93C7FCA213015CA513035CA50007B512F8A326
-0007F0C8FCA3130F5CA5131F5CA5133F5CA5137F91C9FCA55B5BA4EA03FF007F13FEB5FC
-A229407DBF1C>I<177C913907F803FE91393FFE0F8F9139FC0F9C3F903901F007F89039
-07E003E0D90FC013F0011F903801F80C02801400133FD97F007FA315035B495CA3017E49
-5A5E150F6D5C6D495A90263F803EC7FCECC0FC903871FFF09038E07F8091C9FC485AA47F
-A27F90B512F8EDFF806C15E016F86D8048B6FC3A07E0000FFED80F801300003FC8127F00
-3E815A00FC815AA25E163EA25E6C15FC007C4A5A6C4A5A6CEC0FC0D80FC0013FC7FC3903
-F801FCC6B512F0010F90C8FC303D7FA82D>I<147FEB3FFFA313017FA25CA513015CA513
-035CA4ED07F80107EB1FFF9139F0781FC09138F1E00F9139F38007E0ECF70002FE14F049
-5A5CA25CA24A130F131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B4915
-00A300015D486C491380B5D8F87F13FCA32E3F7DBE33>I<1478EB01FE130314FFA25B14
-FE130314FCEB00F01400ACEB03F8EA01FF14F0A2EA001F130FA314E0A5131F14C0A5133F
-1480A5137F1400A55B5BA4EA03FF007F13F0A2B5FC183E7DBD1A>I<ED0780ED1FE0153F
-16F0157FA216E0153F16C0ED0F0092C7FCACED7F80EC3FFF1600A2140180A35DA41401A2
-5DA41403A25DA41407A25DA4140FA25DA4141FA25DA4143F5DA4121E267F807FC7FCA200
-FF137E14FE5CEB01F8495A387C07E0383C0FC0D80FFFC8FCEA03F8245187BD1C>I<147F
-EB3FFFA313017FA25CA513015CA513035CA501070103B5FC02F014FEA26F13F06F1380EE
-FE00010F14F84A485AED03C04B5A031FC7FC153E011F13784A5AECC3E0ECC7F0ECCFF814
-FF497F14F9ECE1FE14C04A7E4A7E4980017E133F82151F82150F01FE8049130782A20001
-81486C49B4FCB5D8F03F13F04B13E0A2303F7EBE30>I<143FEB1FFF5BA213017FA214FE
-A5130114FCA5130314F8A5130714F0A5130F14E0A5131F14C0A5133F1480A5137F1400A5
-5B5BA4EA03FF007F13F8A2B5FC183F7DBE1A>I<902707F007F8EB03FCD803FFD91FFF90
-380FFF80913CE0781FC03C0FE09126E1E00FEBF0073E001FE38007E1C003F090260FE700
-EBE38002EEDAF70013F802FC14FE02D85C14F84A5CA24A5C011F020F14074A4A14F0A501
-3F021F140F4A4A14E0A5017F023F141F91C74914C0A549027F143F4992C71380A300014B
-147F486C496DEBFFC0B5D8F87FD9FC3F13FEA347287DA74C>I<903907F007F8D803FFEB
-1FFF9139E0781FC09138E1E00F3B001FE38007E090380FE70002EE14F014FC14D814F85C
-A24A130F131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B491500A30001
-5D486C491380B5D8F87F13FCA32E287DA733>I<EC0FF0ECFFFE903903F01F8090390FC0
-07C049C66C7E013E6D7E01FC6D7E48488049147C0003157E485A000F157F5B121FA2485A
-A2007F1680A2170048C85AA54B5AA25E5A6C4A5A7E4B5A5E6C140F6C6C5C4B5A6C6C013E
-C7FC6C6C5B6C6C485A3900FC0FE090383FFF80D90FF8C8FC292A7BA82D>I<91387F01FE
-903A7FFF0FFFC09139FE3E03F09238F801F8903A03FFE000FE6D49137F4B7F92C713804A
-15C04A141FA218E0A20103150F5C18F0A3171F010716E05CA3173F18C0130F4A147F1880
-A2EFFF004C5A011F5D16034C5A6E495AEE1FC06E495AD93FDC017EC7FC91388F01F89138
-83FFE0028090C8FC92C9FC137FA291CAFCA45BA25BA31201487EB512F8A3343A81A733>
-I<91390FE003C0DAFFFC1380903903F81E0790390FE0070F90391F80038FD97F0013DF01
-FE13014848903800FF00485A1207485A8248485C123F495CA2485AA2150112FF90C75BA4
-1503A25EA37E15077F003F4A5A151F6C6C133F6C6C137F000714FF3903F003CF3A00FC0F
-8FE090383FFE0FEB0FF090C7FC151F5EA5153F5EA4157F4B7E023F13FEA32A3A7AA730>
-I<903907F01F80D803FFEB7FE09138E1E1F09138E387F839001FE707EB0FE614EE02FC13
-F002D813E09138F801804AC7FCA25C131FA25CA4133F5CA5137F91C8FCA55B5BA3120148
-7EB512FEA325287EA724>I<9138FF81C0010713E390381F807F90397C003F8049131F48
-48130F5B00031407A248481400A27FA27F6D90C7FCEBFF8014FC6C13FF6C14C015F06C6C
-7F011F7F13079038007FFE1403140100381300157EA2123C153E157E007C147CA2007E14
-7815F8007F495A4A5A486C485A26F9E01FC7FC38E0FFFC38C01FE0222A7DA824>I<EB03
-80A4130791C7FCA25BA25BA2133EA2137E13FE12011207001FB512C0B6FCA2D801FCC7FC
-A312035BA512075BA5120F5BA41407001F130E13C0A4141E141C1380A26D5AA2000F5B14
-F03807E1E03801FF80D8007EC7FC1A3978B723>I<01FE147F00FFEC7FFF4914FEA20007
-140300031401A34914FCA4150312074914F8A41507120F4914F0A4150F121F4914E0A215
-1FA3153F4914C0157F15FFEC01DF3A0FC003BFE09138073FFF3803F01E3801FFF826003F
-E01380282977A733>I<B539E007FFF05D17E02707FE000313006C48EB01FC6F5A5E0001
-4A5A5EA24B5A6D1307000092C7FC5D150E6D5B7F5DA25D1480013F5B14815D14C3011F5B
-02C7C8FCA214CE14EEEB0FFCA25CA26D5A5CA25CA26D5A2C2878A630>I<B500C3B53803
-FFFCA204FE14F8290FFE003FE00013C0D807F86D48EB7F000003173E183C150F18386D5E
-0001141F705B153F4D5A15776D4B5A0000ECE7F04DC7FCEC01C3170E9038FF0383017F5D
-91380703F85FEC0E01021E5CD93F9C14F002BC6D5A02B813FDDAF8005B4A13FF5F6D5A94
-C8FC5C4A137E167C6DC7FC1678010E14383E2878A642>I<48B539C07FFFC0A33C000FFE
-003FF8006D48EB1FE0010315800101023EC7FC6E133C01005C027F5B6F5A91383F81C0ED
-C380DA1FC7C8FC15EFEC0FFE6E5A5D140381A24A7E140FEC1E7F023C7FEC383F02707FEC
-E01F010180903803C00F49486C7ED90F007F491303017E80D801FE80D807FF497EB5D880
-3F13F8A332277FA630>I<90B539E007FFF05E18E0902707FE000313006D48EB01FC705A
-5F01014A5A5F16036E5C0100140794C7FC160E805E805E1678ED8070023F13F05EED81C0
-15C191381FC38015C793C8FC15EF15EEEC0FFCA25DA26E5AA25DA26E5A5DA24AC9FC5C14
-0E141E141C5C121C003F5B5A485B495A130300FE5B4848CAFCEA701EEA783CEA3FF0EA0F
-C0343A80A630>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fr cmbx12 14.4 73
-/Fr 73 122 df<922601FFFC903801FFE0033F9026FF801F13F84AB6D8E07F13FE020F03
-F9B6FC023FD9C00FB500C0138091277FFC0003D9FE0113C0902601FFE049495A49494949
-4813E04990C714F049484A13E0495A19C0495A7413C0017F17804A6E6E1380719138007E
-007192C7FCAEBCFCA526007FF8C7000301C0C8FCB3B3A7007FB5D8F803B612F0A553547D
-D34E>11 D<EEFFFC031FEBFF804AB612E0020781021F9038C00FF8913A7FFE0003FCDAFF
-F0EB00FE4949EB03FF4901805B4990C7487F49485CA2495A4D7F013F6F5B5CA37190C7FC
-715AEF01F894C9FCA90403B512C0BAFCA526003FFCC7120783B3B3A6003FB5D8FC03B612
-C0A542547DD34B>I<EA07F0EA1FFC487E487EA2B51280A86C1300A86C5AA86C5AA86C5A
-A86C5AA76C5AA5C8FCAAEA07F0487EEA3FFE487EA2B51280A76C1300A26C5AEA0FF86C5A
-115474D329>33 D<DD03E0EC0F80A24D6C4A7EA2050F153FA24E5DA2051F157FA24E92C8
-FC053F5DA24E5CA2057F1401A295C75BA24D1403A24D5D04011507A24D5DA20403150FA2
-4D5D0407151FA24D5DA2040F153FA24D5D007FBEFCA2BF1280A36C1D006C64C96CC7D801
-FCC9FC4C1403A24C5D03011507A24C5DA20303150FA24C5D0307151FA24C5DA2030F153F
-A24C5D031F157FA24C92CAFC003FBD12FE4888BF1280A36C1D00A2C848C7D803F8CAFC02
-011507A24B5D0203150FA24B5DA20207151FA24B5D020F153FA24B5DA2021F157FA24B92
-CBFC023F5DA24B5CA2027F1401A292C75B4A1403A24A5DA201011507A24A5DA26D486E5A
-A2616A79D270>35 D<15F8A691380FFF8091B512F8010714FF011F15C049819026FFF8F8
-13F84801C0EB0FFC2603FE00EB03FE4848EC00FF49153F4848ED1F804848ED0FC0A24848
-ED07E0A24848157FEFFFF05EA200FF5DA37FA27F7013E06D6E13C06DED7F806DED1E006C
-B492C7FC14C014F86C13FF81EDFFC06C15F86C15FE826C16C06C826C826C826D816D8113
-0F01038101001680141F020115C08003F814E0163F160F82040113F0D81FE080487E486C
-157FA2486C153FA2171FA44916E05B6C5A1380007EC7EC3FC0A26C1780177F6C6CEDFF00
-7F6C6C4A5AD807F84A5A6C6CEC0FF82601FF80EB3FF06C9039F8F9FFE06DB65A011F92C7
-FC010714FC010114F0D9001F90C8FCEC00F8A6346179D943>I<EC01E0EC07F84A7EA66E
-5AA200041608001F163ED83FC015FFD87FE04A13806D6C485AD8FFF84A13C0D87FFE021F
-138001FF5C02835B6C01C390B51200000FD9F1E313FC0001D9F9E713E027003FFDEF90C7
-FC0107B512F8010114E0D9003F90C8FCEC07F8EC3FFF49B512E0010714F890393FFDEFFF
-2701FFF9E713E0000FD9F1E313FC003FD9C3F013FF4801836D138002037F01FE80D8FFF8
-020713C0D87FF06E138049486C7ED83FC06E1300D81F00153E00041608C792C7FCA24A7E
-A66E5AEC01E0323578D943>42 D<EA07F0EA1FF8487E487E7FB5FC1480A314C0A37EA27E
-7EEA07F3EA0003A213071480A3130F1400A25B131E133E133C137C5BA2485A485A485A48
-5A48C7FC121E120C1228769025>44 D<B712F0AB240B7F9F2D>I<EA07F0487E487E487E
-487EB51280A76C13006C5A6C5A6C5A6C5A1111769025>I<913803FFC0023F13FC91B6FC
-010315C0010F018113F0903A1FFC003FF849486D7E49486D7E49486D7E48496D13804849
-6D13C0A24817E04890C813F0A34817F8A24817FC49157FA3007F17FEA600FF17FFB3A500
-7F17FEA6003F17FCA26D15FFA26C17F8A36C17F0A26C6D4913E0A26C6D4913C06C17806E
-5B6C6D4913006D6C495AD91FFCEB3FF8903A0FFF81FFF06D90B55A01011580D9003F01FC
-C7FC020313C0384F7BCD43>48 D<157815FC14031407141F14FF130F0007B5FCB6FCA214
-7F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>I<EC3FFE0103B512E0010F14
-FC013F14FF90B712C048D9C07F7F2703FE000F13F8D807F801037FD80FE06D7F48486D7F
-48488001F01680486C6E13C07F486C6E13E07FA27013F0A56C5AA26C5AEA0FF0EA03C0C9
-14E05EA218C05E1880A24C13005F4C5A4B5B5F4B5B5F4B5B4B90C7FC4B5A5E4B5AED7FE0
-4B5A4A5B4A48C8FC4A5A5D4A48EB01F04A5AEC3F804AC7FC02FEEC03E0495A495A495A49
-5AD91F80140749C8FC013E150F017FB7FC90B812C05A5A5A5A5A5A5AB9FC1880A4344E79
-CD43>I<91380FFFC091B512FC0107ECFF80011F15E090263FF8077F9026FF800113FC48
-48C76C7ED803F86E7E491680D807FC8048B416C080486D15E0A4805CA36C17C06C5B6C90
-C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E0
-16FCEEFF80DA000713E0030113F89238007FFE707E7013807013C018E07013F0A218F8A2
-7013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C
-6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D
-011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C17FEA2160116031607160FA2
-161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407
-EC0FC01580EC1F005C147E147C5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B
-485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE
-43>I<D80380150ED807E0157E01FEEC03FED9FFF0137F91B65A5F5F5F5F5F94C7FC5E5E
-16F016C093C8FC15F801E190C9FC01E0CAFCABEC0FFF027F13F001E3B512FE01E76E7E90
-26FFF8077FDAC0017F49C713F8496E7E49143F4981496E7E6C481680C9FC18C08218E0A4
-18F0A3EA0FE0487E487E487E487EA418E0A35B6C484A13C05B491680003EC85A003F1700
-6C6C4A5A6D5D6C6C4A5AD807F8495BD803FE01075B2701FFC03F5B6C90B65A013F4AC7FC
-6D14F8010314C09026007FF8C8FC344F79CD43>I<ED0FFF92B512E0020780021F14FC91
-397FFE03FE903A01FFF0007F4901C0EB3F804990C7121F4948EC7FC0494814FF49484913
-E049485B01FF5C485BA2485B5AA2486F13C04A6D1380486F1300177E94C7FC5AA291CAFC
-5AA21508913801FFF8020713FFB54814C04A14F04AC66C7E023C6D7E4A6D7E4A6D7E7013
-804A15C0A24A15E07013F05C18F8A491C714FCA37EA67EA46C17F880A27E18F06C5D18E0
-6C6D15C07E6E4913806C6D15006D6C495A6D6CEB7FFC6DB448485A6D90B55A010315C001
-0092C7FC023F13FC020713C0364F7ACD43>I<121F7F7FEBFF8091B81280A45A19006060
-60A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F4C5A160F4C5A484B5A4C5A94
-C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FFA24A90C9FCA25C5D1407A214
-0FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC06E5A395279D043>I<913807
-FFC0027F13FC0103B67E010F15E090261FFC0113F8903A3FE0003FFCD97F80EB0FFE49C7
-6C7E48488048486E1380000717C04980120F18E0177FA2121F7FA27F7F6E14FF02E015C0
-14F802FE4913806C7FDBC00313009238F007FE6C02F85B9238FE1FF86C9138FFBFF06CED
-FFE017806C4BC7FC6D806D81010F15E06D81010115FC010781011F81491680EBFFE74801
-8115C048D9007F14E04848011F14F048487F48481303030014F8484880161F4848020713
-FC1601824848157F173FA2171FA2170FA218F8A27F007F17F06D151FA26C6CED3FE0001F
-17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C01FCEBFFFC6C6CB612F06D5D
-010F1580010102FCC7FCD9000F13C0364F7ACD43>I<91380FFF8091B512F8010314FE01
-0F6E7E4901037F90267FF8007F4948EB3FF048496D7E484980486F7E484980824817805A
-91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA37EA25E6C7F6C5DA26C5D6C7F6C
-6D137B6C6D13F390387FF803011FB512E36D14C30103028313F89039007FFE03EC004015
-00A218F05EA3D801F816E0487E486C16C0487E486D491380A218005E5F4C5A91C7FC6C48
-4A5A494A5A49495B6C48495BD803FC010F5B9027FF807FFEC7FC6C90B55A6C6C14F06D14
-C0010F49C8FC010013F0364F7ACD43>I<EA07F0487E487E487E487EB51280A76C13006C
-5A6C5A6C5A6C5AC8FCB3EA07F0487E487E487E487EB51280A76C13006C5A6C5A6C5A6C5A
-113576B425>I<91B5FC010F14F8017F14FF90B712C00003D9C00F7F2707FC00017FD80F
-E06D7F48486E7E48C87FD87FE06E7E7F7F486C1680A66C5A18006C485C6C5AC9485A5F4B
-5B4B5B4B5B4B5B4B90C7FC16FC4B5A4B5A16C04B5A93C8FC4A5A5D14035D5D14075DA25D
-140FA25DAB91CAFCAAEC1FC04A7EECFFF8497FA2497FA76D5BA26D5BEC3FE06E5A315479
-D340>63 D<933807FFF84BB612E0030F15FC037FEDFF80912801FFFC000F13E002070180
-9038007FF8DA1FF8C8EA07FEDA7FE0923801FF80DAFF806F6C7E4948CAEA1FE0D903F8EF
-07F0D907E0EF01F84948717E4948187E49CC7E017E737E49912601FFC06E7E4848021F01
-FC6E7E4991B61403000302036F804848499026C07FE06D7E49011F9026000FF01300000F
-DA3FFCD903F8804949486D6C147C001F4A48D9007E147E494849023E143EF13FFE484949
-6E6C133F003E49855E007E491A80007C92C8150FA25CA200FC1CC04849481807AD6C6D7E
-127C1D806E190FA2007E81003E7F82003F6D1A006C6D6D4A5CA26D6C6D4A143E000F6E6C
-49B5FC6D6D6C496E5A00076EB4010F5D6D01079026C07FE713C36C6C6D90B50083EBFFF0
-0001020003005C6D021F01FC013F13806C6C020101C0D907FEC7FC017E91CDFC7F6D7E6D
-7E6D7ED903F8F17FC0D901FEF003FF6D6C6C171FDA7FE04CB51200DA1FF8041F13F89126
-07FF800203B512C0020101FC49B500FCC7FC6E6CB812E0030F04FCC8FC03011680DB0007
-0280C9FC5A5579D369>I<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA3
-4C8083047F80167E8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E
-031F81168083033F8293C77E4B82157E8403FE824B800201835D840203834B800207835D
-844AB87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A82010385
-4A82010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>I<BA
-12C019FEF1FFC01AF01AFCD8000701F0C7000313FFDE007F7F737F070F7F737F87858785
-8785A287A84F5BA263616361634F5B4F5B077F90C7FC4E485A060713F892B812E097C8FC
-861AF003F0C7000313FE9539003FFF80070F13E0737F07017F87737F747E1C807413C0A2
-7413E0A31CF0A386A362A31CE0A2621CC0A250138097B5FC1C004F5B19074F5B073F13F0
-4EB55ABC128098C7FC1AF81AC007F8C8FC54527CD160>I<932601FFFCEC01C0047FD9FF
-C013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7383F
-F0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F8824949824949824949824949
-824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA298C7
-FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D606C
-6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D6C6C
-6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F93C8
-FC030715FCDB007F14E0040101FCC9FC525479D261>I<BA7E19FCF1FF801AF01AFCD800
-0701F0C7000F13FF060014C0071F7F070713F807017F737F747E747F747F86747F747F88
-86888688A2757EA31D8087A21DC0A51DE0A387A963A31DC0A51D80A2631D00A3515AA264
-6264505B6264505B505B5090C7FCF2FFFE4F5B07075B071F5B96B512C0060F91C8FCBB5A
-1AF01AC007FCC9FC19805B527CD167>I<BC1280A5D8000701F8C7000114C0F0001F1907
-1901851A7F1A3F1A1FA2F20FE0A21A07A31A03A318F81BF01A01A497C7FC1701A3170317
-07170F177F92B6FCA59238F8007F170F170717031701A317001B3EA31B7CA395C8FCA21B
-FCA21BF8A21A01A31A031BF01A071A0FA21A1F1A3FF27FE0F101FF1907191F0603B5FCBC
-FCA21BC0A34F517CD058>I<BB12FEA5D8000701F8C700077FF0007F191F190785858586
-861B80A21A1FA31A0FA41BC006F81307A497C7FCA31701A317031707170F177F92B6FCA5
-9238F8007F170F170717031701A31700A795C9FCB3B812F8A54A517CD055>I<932601FF
-FCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC0
-7F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982
-4949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA348
-5B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000A36C7FA36C
-7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF6D6C6D5C6E
-01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE001F030703
-FC1307DB007F02E01301040149CAFC5B5479D26A>I<B8D8C003B8FCA5D8000701F8C900
-1FEBE000B3AE92BAFCA503F8C9121FB3B1B8D8C003B8FCA560527CD169>I<B812C0A5D8
-000701F8C7FCB3B3B3B2B812C0A52A527CD132>I<027FB71280A591C76C90C7FCB3B3B3
-EA07F0EA1FFC487E487EA2B57EA44C5AA34A485B7E49495BD83FF8495BD81FE05DD80FFC
-011F5B2707FF807F90C8FC000190B512FC6C6C14F0011F14C0010101F8C9FC39537DD145
->I<B800C091B612F8A5D8000701F8C90003EBF8009738007F8051C7FC505AF203F8F20F
-F0505A505A505A50C8FCF101FCF107F84F5A4F5A4F5A4F5A07FEC9FCF003FC4E5A4E5A4E
-5A4E5A4E5ADD01FECAFC4D5A4D5A4D5A4D7E173F4D7E4C487E4C7F5E4C804C804C80EEFF
-7F9226F9FE3F7FDBFBFC809226FFF81F7F4C7EDCC0077F0480804C7E4B6D804B6D804B82
-84727F727F8684727F727F8784728087737F85737F87737F85737F88857380747F888697
-B512FCB800C0013FECFFFEA55F527CD169>I<B812F8A5D8000701F8CAFCB3B3A91A7CA4
-1AFC1AF8A51901A31903A219071AF0190FA2191F193F197F19FF180360183F4DB5FCBB12
-E0A546527CD151>I<B600FC073FB512FE6F61A26F96B6FCA2D80007F5C00070EF01EFA2
-02EF6DEF03CFA202E76DEF078FA202E36DEF0F0FA202E16D171EA302E06D173CA26F6C17
-78A26F6C17F0A26F6DED01E0A26F6DED03C0A36F6DED0780A26F6DED0F00A26F6D151EA2
-6F6D5DA3706C5DA2706C5DA2706D495AA2706D495AA2706D495AA3706D49C7FCA2706D13
-1EA2706D5BA2716C5BA3716C5BA271EB81E0A271EBC3C0A271EBE780A27101FFC8FCA371
-5BA2715BA2725AA2725AA2D93FFC6F5AB74DB712FEA2725AA2725A77527CD180>I<B600
-FC93B7FC8181A282D800076E9239003FFC0070EE07E08282A28202EF7F02E77F02E380A2
-02E18002E0806F7F6F7F6F7FA26F7F6F7F6F806F80A26F80707F707F707F707FA2707F70
-80708070808583717F717F717F717FA27114807114C07114E07213F07213F8A27213FC72
-13FE7213FF721487A27214C77214E77313F77313FF85A285858585A28586868686A28686
-8686A2D93FFC187FB7173F1B1F1B0F1B07755A60527CD169>I<93380FFFC00303B6FC03
-1F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02007F
-494848ED7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F49854948707F4948707FA2
-4849717E48864A83481B804A83481BC0A2481BE04A83A2481BF0A348497113F8A5B51AFC
-AF6C1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A
-6E5E6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01
-FF02035B023F01E0011F13F0020F01FC90B512C0020390B7C8FC020016FC031F15E00303
-92C9FCDB001F13E0565479D265>I<BAFC19F819FF1AE086D8000701F0C7001F13FC0601
-13FF726C13807313C0070F13E01BF0857313F81BFCA27313FEA41BFFA81BFEA31BFC61A2
-1BF84F13F04F13E0614F13C04F13004E485A061F5B92B812F01AC04FC7FC19E003F8CBFC
-B3AEB812C0A550527CD15C>I<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013
-FF020F01C0010F13C0023F90C7000313F0DA7FFC02007F902601FFF0ED3FFE49496F7E49
-496F7F49496F7F4990C96C7F4948707F4948707F01FF854A177F48864849717EA2484971
-1380A2481BC04A83481BE0A24A83481BF0A3481BF8A291CB7EA3B51AFCAF6C1BF8A26E5F
-A36C1BF0A36C6D4D13E0A36C1BC06E5F6C1B806E5F6CDB01FE16006C6D902607FF80495A
-4C13E06C6D013F6D495A017F91267F03F85C6D6C90277C00FC015B6D6C49D97E035B6D01
-806E485B6D6D48D91F8F5B6D01E0039F90C7FC6D01F06EB45A6DD9FCF85DDA3FFF6E13F0
-020F6D4913C0020301FF90B5C8FC020091B512FC031F180C0303181EDB001FEBE3FE93C7
-EA01FF74133E74137E7413FEF2F8077290B5FC1CFCA285A21CF8A2851CF07314E0A27314
-C0731480731400735B9638007FF8F21FE0576A79D265>I<B912F0F0FF8019F819FF1AC0
-D8000701F0C714F0060F7F060113FE727F737F737F85737F87A2737FA387A863A2616363
-A24F5B4F5B4F90C8FC4F5A06035B060F13F095B512C092B8C9FC19F819E019F89226F000
-0313FE9439007FFF80727F727F727F727F727F8684A28684A787A71D1C75133EA3857513
-7E73157C7513FC731401B86C6D9038F803F807039038FE07F07390B512E0736C14C0080F
-1400CEEA7FFC5F537CD164>I<91260FFF80130791B500F85B010702FF5B011FEDC03F49
-EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F001F82
-4981123F4981007F82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86C
-ECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C836D826D82010F821303010082
-021F16801400030F15C0ED007F040714E01600173F050F13F08383A200788200F882A318
-7FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02
-F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D900
-7F90C8FC3C5479D24B>I<003FBC1280A59126C0003F9038C0007F49C71607D87FF80601
-13C001E08449197F49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994
-C7FCB3B3AC91B912F0A553517BD05E>I<B800C00103B612FCA5D8000701F8CAEBF000F3
-1F80B3B3B11B3FA26D97C7FC81637F1B7E6D6D17FE505A6E7E505A6E6D15076E4D5A6E6D
-4B5A6E6D4B5A6E01F84B5A6E6DDA03FFC8FC6E6CB46CEB0FFE6F9039F001FFF8030F90B6
-5A030316C0DB007F92C9FC040F14F8DC007F13805E537CD167>I<B700FE031FB512FEA5
-D8001F01F0CA383FFE00F307F06D626F170F6D62811B1F6D6D601B3F6D97C7FC6F5F6D19
-7E821BFE6E6D5E1A016E6D5E1A036E60701507A26E6D5E1A0F6E6D5E1A1F6E6070153FA2
-6E6D93C8FC626E6E147E1AFE6F5E711301A26F6D5C19036F6D5C19076F5E71130FA26F6D
-5C191F6F6D5C193F6F93C9FC715BA26FEC807E19FE706D5A18C1705C18E3705C18F318F7
-70EBFFE0A2705CA2705CA37091CAFCA2705BA2715AA3715AA2715AA2715A715A5F537DD1
-66>I<B700FC017FB600FE91B612F0A5D8003F01C0C8001F01E0C9EBF8006F71EE0FC06D
-7161876F1C1F6D7196C7FC6F8373606D1E3E6F836D7160876F1CFC6D666F4B801F016D66
-704A806E525A88704A17076E059F5F70021F80080F160F6E6570023F806EDC3E074CC8FC
-8870027E5F6EDC7C03163E7002FC804F6C167E6E1C7C700101814F6C16FC6E745B700103
-17016E4C6D5D060716C00580496D14036F63DDC00F16E04F6D14076F07F05BDDE01F170F
-6F92C76C5D1DF8DDF03E6E141F6F98C9FCDDF87E16FC067C6E5C6FF1FE3EDDFCFC177E6F
-4A6E147C1DFFDDFFF06E14FC6F62A24E816F62A270496F5BA24E817061A295C97E7061A2
-70487090CAFCA37048705AA24D1601040360A27048705A84537DD18B>I<003FB7D88003
-B7FCA5D8000749C8000701F8C7FC6D6D9238007F806D6E93C8FC7015FE6D17016E6D5D70
-4A5A6E16076E6D4A5A6E6D5D4F5A6E6D143F6E6D4A5A7191C9FC6E16FE6EECC00171485A
-6F5D6F6D485A6FEBF80F71485A6F5D6F6D485AEFFF7F6F4ACAFC6F5C6F5CA2705B705B84
-82707F707FA2707F7080855E4C80855E4C80DC3FCF7F058F7FEE7F074C6C7FDB01FE814C
-7E4B486C8003076E7F4B48814C7F4B486D7F033F824C7F4BC76C7F4B6E7F4A5A4B6E804A
-486E800207844A48814B6F7F4A4883023F824A486F7F92C96C7F02FE8401018301037180
-90263FFFC084B76C0103B712F8A55D527CD166>I<B8030FB61280A5D8000F01FCCA003F
-90C7FC6FEF07F86D6D606D4F5A826D6E4C5A6D4F5A826E6D4CC8FC6E18FE826E6D4B5A6E
-4D5A826E6D4B5A6E4D5A836E6E4A5A6E4D5A836F6D4AC9FC6F5E715C6F6D495A6F150371
-5C6F6D495A6F150F06805B6F6E485A6F153F06E05B706D48CAFC705C725A70EBFDFC7013
-FF61705C82705C6182715B96CBFCB3AA030FB712F8A561527ED166>I<B512F0A748C7FC
-B3B3B3B3B3B0B512F0A7147872D925>91 D<B512F8A7EA0003B3B3B3B3B3B0B5FCA71578
-7ED925>93 D<EC7FFF0107B512F0013F14FE90B77E48D9E00F7F2703FE000113F0486C6D
-7F6EEB3FFC48826E131F83707FA36C496D7FA26C90C7FC6C5AC9FCA6037FB5FC020FB6FC
-91B7FC01071487013FEBF0074913803901FFFC004813F0485B485B485B4890C7FC5A5BA2
-485AA45EA26D5C007F151D163D6C6C02797F6C6D01F113F86C9026C003E1EBFFE06C9026
-F81FC014F06C90B5487EC6ED001F011F01FC010713E0010101E090C8FC3C387CB641>97
-D<EB3FF0B5FCA51203C6FCB3A4923801FFE0030F13FE033FEBFFC092B612F002F301017F
-913AF7F8003FFEDAFFE0EB0FFF03806D7F92C76C7F4A6E7F4A824A6E7FA2727EA285A285
-84A31A80AC1A00A44E5AA36118FF616E4A5BA26E4A5B6E4A5B6F495BDACFC04990C7FCDA
-87F0EB7FFC913A03FE03FFF849C6B612E0496D148049011F01FCC8FC90C7000313C04154
-7BD24B>I<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE0001
-FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F1300705A48
-92C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC
-3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49C7FC
-020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91
-B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F484980
-485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C
-6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD9
-003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C04901
-817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C0488191
-C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01
-F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE
-903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>I<ED3FFC02
-03B5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB807F49903800FFFC495A49
-5AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0A526007FF8C8FCB3B3A7007FB5
-12FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0010FDAFC1F13E0013FECFF7F90
-267FFC0F9038FF9FF09026FFE001EBF83F48496C13E0484990387FF01F4890C7D83FF813
-E0489338FC0FC0F0078048486E6CC7FCA2003F82A9001F5EA26C6C4A5AA26C5E6C6D495A
-6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01C314F02607C03F90C9FC91CBFC
-A2120FA37FA213F813FE90B7FC6C16F817FF18C06C836C836C836D828448B9FC12074848
-C700031480D81FF8EC003F4848150748486F13C083485A83A56D5D007F18806D5D003F18
-006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A6C01FE011F5B6C6CB71280010F
-03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0B5FCA51203C6FCB3A4EE1F
-FC93B512C0030314F0030F8092391FE07FFC92393F001FFE037C8003F07FDAF1E081ECF3
-C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542537BD24B>I<137F497E
-000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3
-A6B612E0A51B547BD325>I<157FEDFF80020313E04A13F0A24A13F8A76E13F0A26E13E0
-02001380ED7F0092C7FCADED1FF891B5FCA51401EC007FB3B3B1EA0780EA1FE0487E487E
-486C13FF16F0A216E05C16C04A13806C4848130049485A003F495A000FB512F06C5C0001
-148026001FFCC7FC256C87D329>I<EB3FF0B5FCA51203C6FCB3A54CB512F8A59339003F
-FE00EF1FF0EF3FC04D5A4DC7FCEE03FEEE07F84C5A4C5AEE7FC04CC8FC4B5A4B5AED0FF8
-ED1FE04B7E4B7EECF1FF02F37F02F77F91B6FC83159F030F7F02FE80DAF8077F4A7E6F7F
-6F7F83707E82707F84707F707F82707F84707F177F717E4D13C0B6D8F003B6FCA540537C
-D247>I<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD225>I<D93FF0D91FFCEDFFE0
-B591B500C0010713FE030302F0011F6D7E030F6E017F8092271FE07FFCD9FF037F922A3F
-001FFE01F8007F0003027C9126FF03E080C602F06DD90780137FDAF1E0038FC77FDAF3C0
-159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5EA44A5EB3ACB6D8F807B6D8C03FB5
-12FEA567367BB570>I<D93FF0EB1FFCB591B512C0030314F0030F8092391FE07FFC9239
-3F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3AC
-B6D8F807B612C0A542367BB54B>I<913801FFE0021F13FE91B612C0010315F0010F9038
-807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C8
-6C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA2
-6C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF80
-7FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3FF001FFE0B5010F
-13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB1FFFC602806D7F
-92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A36118FFA2615F61
-6E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B02F8B612E06F14
-80031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<90397FE003FEB590380F
-FF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF
-150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>114
-D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307D81FE0130148487F4980
-127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15F06C
-816C816C81C681013F1580010F15C01300020714E0EC003F030713F015010078EC007F00
-F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE9039FF
-C00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB635>I<143EA6147EA414
-FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3A9EE
-07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B0203
-13802A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA50003ED001FC61607B3AE5FA35F
-A2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3EBFFC0903A0FFFC03F836D90B512
-03010114FE6D6C13F8020701E091C7FC42377BB54B>I<B600F00107B5FCA5000101F8C8
-EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC6D5E6F13016D5E8117036D5E6F
-13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E023F147C6F13FC6E5C16816E
-5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5AA36F5AA26F5AA26F5AA26F5A
-6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5000101F0C701F0C7381FF8006E027F
-ED07E06C715DA26E023F150F017F705DA26E181F013F4B6C92C7FC6E606D70143E94B5FC
-6F177E6D4A6E137C03C001F315FC6D715B160303E001E114016D020702E05B03F013C06D
-71485A160F03F8D9807F13076D05F85B93381F003F03FC160F027F4902FC5BDBFE3E011F
-131F023F04FE90C8FC167EDBFF7C010F5B6E01FCECFF3E4C6D137E6E5FA24C7F6E5F4C7F
-6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA2033E6FC9FC5A367DB461>I<007FB500
-F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D495A6D4B5A6F495A6D6D
-91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06EEBCFC06EEBFF806E91C9
-FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03F87F4A486C7E4A486C7E
-020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A49486D7F01076F7E49486E7E
-49486E7FEBFFF0B500FE49B612C0A542357EB447>I<B600F00107B5FCA5C601F8C8EA7F
-E06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F13016D5E6F13036D5E8117076D6D
-5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E023F147C6F13FCA26E6D5A16816EEB
-C1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5AA26F5AA26F5AA26F5AA26F5AA35E
-150F5E151F93C9FC5DD81FC0133E486C137E486C137C486C13FC5D14015D14034A5A6C48
-485A49485A263FC07FCAFCEB81FE6CB45A6C13F000035BC690CBFC404D7DB447>I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fs cmtt10 10.95 93
-/Fs 93 127 df<121C127FEAFF80B3EA7F00B2123EC7FCA8121C127FA2EAFF80A3EA7F00
-A2121C09396DB830>33 D<00101304007C131F00FEEB3F80A26C137FA248133FB2007E14
-00007C7F003C131E00101304191C75B830>I<903907C007C0A2496C487EA8011F131FA2
-02C05BA3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F
-90B512FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA2
-29387DB730>I<1438147C14FCA4EB03FF011F13E090B512FC4880000780481580261FFE
-FD13C09039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F800FE14035A1507A3
-6CEC03F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0000114F86C6C7F01
-1F7F01037F0100148002FD13C09138FC7FE0151FED0FF015070018EC03F8127E1501B4FC
-A35AA26CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFEB512806CB612006C
-5C6C5CC614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30>I<D803C0EB01E0
-D80FF01303486C497E487E150F487ED87E7E495AEAFE7F5E486C133FA25E157FA24BC7FC
-6C5A5D387E7E01EA7FFED83FFC5B1403EA1FF86C48485AEA03C0C75B140FA25D141FA24A
-5AA25D147FA292C8FC5CA2495AA25C1303A25C1307A290390FF001E0ED07F84A487E011F
-497EA24A487E133F163F90267F807F1380ED7E1F14005BA25B1201A24848EB7F3F033F13
-004914FF12076F5A5B6F5A6C486D5A0001EC01E029477DBE30>I<EB07E0EB1FF8497E13
-7F497E803801FC7F497E810003131F13F0A6143F92C8FC91387F0FFF9026F87E1F138000
-0113FEEBF9FC13FB4A6C1300D9FFF013C06C13E0151F02C05BEB7F809038FF003F4892C7
-FC485C48EB807E5A15FE391FDFC0FC383F8FE014E1397F07F1F8EB03F300FEEBFBF0EB01
-FF5D7FEDC006027F130F91393F801F8015C06C137F6CEBFFE049EBF83F018701FC130026
-3FFFFBB5FC6C01F15B14E06C9038C03FFC00039038001FF8D801FCEB07E0293A7DB830>
-I<EA07C0EA0FF0EA1FF8A213FCA213FE120F1207EA007EA513FE13FCA2120113F81203EA
-07F0120FEA1FE0127FEAFFC013801300127C12380F1D70B730>I<141E147F14FF5BEB03
-FEEB07FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F
-5BA2127F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7E
-EB7F80EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>I<127812
-FE7E7F6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB
-03F8A214FC1301A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14
-E0EB1FC0133F1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A12781847
-78BE30>I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9
-FF267FFBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048
-B512F04880000F14FE003FECFF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD8
-7E03EB0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7
-FCA2B81280A36C1600A2C76CC8FCAF143EA229297DAF30>I<EA03E0EA0FF0EA1FF813FC
-EA3FFEA213FFA27EA27E1203EA007FA2137E13FEEA01FC1203EA07F8EA3FF0127FEAFFE0
-EA7F801300123C1019708B30>I<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120F
-EA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A2
-1507A2ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA2
-4A5AA24A5AA24A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249
-C8FCA2485AA25B1203A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA22547
-7BBE30>I<14FE903807FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F48
-48EB3FC04848EB1FE049130F001F15F0491307A24848EB03F8A290C712014815FCA400FE
-EC00FEAD6C14016C15FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A2
-6C6CEB3FC06C6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FE
-C7FC273A7CB830>I<EB03C0497EA2130FA2131FA2133F137F13FF1203123FB5FCA213EF
-138FEA7E0F1200B3B0003FB512F84814FCB612FEA26C14FC6C14F81F3977B830>I<EB07
-FC90383FFFC090B512F00003804814FE4880261FF80F1380263FE00113C09038C0007F48
-48EB3FE090C7121FED0FF04814075A6C15F81503A3127E1218C8FCA2150716F0150F16E0
-151F16C0153FED7F8015FF4A13005DEC07FC4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A
-EB0FF0EB3FE0495A495A4890C8FC4848EB01F04848EB03F8485AEA1FE048B6FCB7FCA37E
-6C15F025397BB830>I<EB03FF013F13E090B512F84814FE4880481580260FFE0113C090
-38F0007F4848EB1FE0150F16F01507A26C5A6C5AC8FC150F16E0A2151FED3FC0157FEDFF
-8002071300903807FFFE495B5D8115FF6D1480D9000113C09138003FE0ED1FF0ED07F815
-0316FC150116FE1500A21218127EB4FCA2150116FC4814036C15F86C6C13076DEB1FF0D8
-3FF0133F3A1FFE01FFE06CB612C06C15806CECFE00C65C013F13F001031380273A7CB830
->I<EC03FC4A7E140F141FA2143F147F157E14FEA2EB01FCEB03F8A2EB07F0A2EB0FE0EB
-1FC0A2EB3F80A2EB7F0013FEA2485A485AA2485AA2485A485AA2485AA248C7FC12FEB8FC
-1780A46C1600C8007EC7FCAA91387FFFFE91B6FCA46E5B29397DB830>I<000FB6128048
-15C05AA316800180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039F0007F
-C049133F0180EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC150716
-F048140F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C
-6C14E06C6C1380D90FFCC7FC25397BB730>I<EC0FF8EC7FFF49B51280010714E0131F49
-14F090387FF80F9039FFC007F84813803803FE005B485A4848EB03F0ED01E0484890C7FC
-5B123F5BA2127FEB000C903803FFE0010F13F8D8FF3F13FE48B6FCB7128016C09039FE00
-7FE001F8EB1FF001E0130F49EB07F849EB03FCA290C7120116FE1500A37EA46C7E15016D
-14FC121F6D1303000FEC07F86D130F6C6CEB1FF06DEB3FE03A03FF81FFC06C90B512806C
-15006D5B011F13F8010713E001011380273A7CB830>I<127CB712FC16FEA416FC48C7EA
-0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5A
-A24AC7FCA25C5C13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830
->I<49B4FC011F13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003FF049
-131FD83FC0EB07F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6C
-EB1FE0D807FCEB7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE4880
-2607FE0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C712014815
-FE481400A66C14016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE0
-6C90B512C06C1580C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13
-E0013F13F890B57E4880488048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0F
-F048481307A290C7EA03F85A4815FC1501A416FEA37E7E6D1303A26C6C13076C6C130F6D
-133FD80FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8
-A2150716F0150F000F15E0486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC
-90B55A6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0
-A4EA7FE0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F
-000C276EA630>I<EA03C0EA0FF0EA1FF8A2EA3FFCA4EA1FF8A2EA0FF0EA03C0C7FCAFEA
-03C0EA0FF0121F13F8123F13FCA3121FA2120F12031200120113F8120313F01207EA1FE0
-123FEA7FC0EAFF80EA7F00127E12380E3470A630>I<16F01503ED07F8151F157FEDFFF0
-14034A13C0021F138091383FFE00ECFFF8495B010713C0495BD93FFEC7FC495A3801FFF0
-485B000F13804890C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA1FFF6C7F000313E06C7F3800
-7FFC6D7E90380FFF806D7F010113F06D7FEC3FFE91381FFF80020713C06E13F01400ED7F
-F8151F1507ED03F01500252F7BB230>I<007FB7FCA2B81280A36C16006C5DCBFCA7003F
-B612FE4881B81280A36C1600A229157DA530>I<1278127EB4FC13C07FEA7FF813FEEA1F
-FF6C13C000037F6C13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF80
-6E13C0020113F080ED3FF8151F153FEDFFF05C020713C04A138091383FFE004A5A903801
-FFF0495B010F13804990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE0
-5B90C9FC127E1278252F7BB230>I<EB1FFE90B512E0000314F8000F14FE488048158026
-7FF80313C09038C0007F48C7121F16E0150FA3127E151F0018EC7FC0C812FF020313804A
-13004A5AEC1FF84A5AEC7FC04A5A92C7FC495AA2495A5CA213075CA86D5A90C9FCA8EB01
-C0EB07F0A2497EA36D5AA2EB01C023397AB830>I<EC1FE0ECFFF8010313FE010F7F4914
-804914C090397FF03FE09038FF800F4890380007F0D803FC13033A07F801FBF89038F007
-FF380FE01F4A13FCEA1FC0495A003FEBFF0F903800FE07903901FC03FE007FEBF801EA7E
-03ECF000A2EAFE0700FC49137EAA00FE6D13FED87E0314FCA2ECF801D87F0114F8003FEB
-FC03903900FE07F0903880FF0F001F90387FFFE06D6C13C0EA0FE06E13803A07F007FE00
-9038F801F86C6CC7127C6CB414FE6CEB800390387FF01F6DB512FC6D14F86D14E0010314
-C00100EBFE00EC1FF0273A7CB830>I<147F4A7EA2497FA4497F14F7A401077F14E3A301
-0F7FA314C1A2011F7FA490383F80FEA590387F007FA4498049133F90B6FCA34881A39038
-FC001F00038149130FA4000781491307A2D87FFFEB7FFFB56CB51280A46C496C13002939
-7DB830>I<007FB512F0B612FE6F7E82826C813A03F8001FF815076F7E1501A26F7EA615
-015EA24B5A1507ED1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E
-1500167FA3EE3F80A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7
-FC29387EB730>I<91387F803C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE0
-7F48EB801F3903FE000F484813075B48481303A2484813015B123F491300A2127F90C8FC
-167C16005A5AAC7E7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13
-076C6CEB0FF03901FF801F6C9038E07FE06DB512C06D14806D1400010713FC6D13F09038
-007FC0273A7CB830>I<003FB512E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF815
-0F6F7E6F7E15016F7EA2EE7F80A2163F17C0161FA4EE0FE0AC161F17C0A3163F1780A216
-7F17005E4B5A15034B5A150F4B5AED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B38
-7FB730>I<007FB7FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FC
-A6EBF800A4157C92C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<00
-3FB712804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA690
-38FC007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103
-EBC0F8010F13F1013F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F485A
-491307121F5B123F491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C
-6D1400ED03F8A27F003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C137F
-ECC1FF6C90B5FC7F6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<3B3FFF80
-0FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E0D803F8C7EAFE00B290B6FCA6
-01F8C7FCB3A23B3FFF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E02D38
-7FB730>I<007FB6FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500
-213879B730>I<D83FFF90380FFF80486D4813C0B56C5AA26C497E6C496C1380D803F090
-3803F8004B5A4B5A151F4B5A5E4BC7FC15FE14014A5A5D4A5A4A5A141F5D4A5A4AC8FC5C
-13F18101F37F13F790B57E14EFECC7F01483EC03F8140101FE7F496C7E5B157F497F8215
-1F82150F826F7EA26F7E1501821500D83FFF903803FFC0486D4813E0B56C5AA26C497E6C
-496C13C02B387FB730>75 D<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE
-1FC0A9003FB7FC5AB8FCA27E6C16802A387EB730>I<D83FF8ECFFE0486C4913F0486C49
-13F8A2007F16F06C6C4913E00007160001EF14BFEC800FA39039E7C01F3FA4ECE03F01E3
-133EA2ECF07EA201E1137CA2ECF8FCA201E013F8A214FDEC7DF0A3147FEC3FE0A3EC1FC0
-A2EC070091C7FCADD83FFC903801FFE0486C4913F0B54913F8A26C486D13F06C486D13E0
-2D387FB730>I<D83FFC90381FFF80486C4913C0B54913E0A26C6D6C13C06C6E13800003
-913801F800EBF7C0A3EBF3E0A314F013F1A214F8A213F014FCA2147C147EA2143E143FA2
-141FA21581A2140F15C1A2140715E1A2140315F1A21401A215F91400A3157DA3153FEA3F
-FF481380B5EAC01FA26CEB800F6C496C5A2B387EB730>I<90383FFFE048B512FC000714
-FF4815804815C04815E0EBF80001E0133FD87F80EB0FF0A290C71207A44815F8481403B3
-A96C1407A26C15F0A36D130FA26D131F6C6CEB3FE001F813FF90B6FC6C15C06C15806C15
-00000114FCD8003F13E0253A7BB830>I<007FB512F0B612FE6F7E16E0826C813903F800
-3FED0FFCED03FE15016F7EA2821780163FA6167F17005EA24B5A1503ED0FFCED3FF890B6
-FC5E5E16804BC7FC15F001F8C9FCB0387FFFC0B57EA46C5B29387EB730>I<90383FFFE0
-48B512FC000714FF4815804815C04815E0EBF80001E0133F4848EB1FF049130F90C71207
-A44815F8481403B3A8147E14FE6CEBFF076C15F0EC7F87A2EC3FC7018013CF9038C01FFF
-D83FE014E0EBF80F90B6FC6C15C06C15806C1500000114FCD8003F7FEB00016E7EA21680
-157F16C0153F16E0151F16F0150FED07E025467BB830>I<003FB57E4814F0B612FC15FF
-6C816C812603F8017F9138003FF0151F6F7E15071503821501A515035E1507150F4B5A15
-3F4AB45A90B65A5E93C7FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A
-3FFF8003FB4801C0EBFFF8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>
-I<90390FF803C0D97FFF13E048B512C74814F74814FF5A381FF80F383FE001497E484813
-7F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C
-14E0000114F86C80011F13FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07
-F8A2007C140312FEA56C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B5128016
-0000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA4
-3AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I<
-3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C
-6C14FE6D13016D5CEC800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038
-007FFCEC1FF02F3980B730>I<D87FFE90380FFFC0B54913E06E5AA24A7E6C486D13C0D8
-07F0903801FC00A26D130300035DA46C6C495AA46C6C495AA46D131F6D5CA3EC803F013F
-5CA46D6C48C7FCA490380FE0FEA401075B14F1A301035BA314FB01015BA314FFA26D5BA4
-6E5A6E5A2B397EB730>I<D83FFC903801FFE0486C4913F000FF16F8A2007F16F06C486D
-13E0D81FC09038001FC0000F1680A76D143F00071600A7000390380F803E9039F01FC07E
-EC3FE0A3EC7FF0A2147D0001157CA29039F8FDF8FCA314F8A300005D01F913FCA2ECF07C
-A201FD137DA2017D5CECE03DA3017F133FA2ECC01FA2013F5CA2EC800F6D486C5A2D397F
-B730>I<3A3FFF01FFF84801837F02C77FA202835B6C01015B3A01FC007F806D91C7FC00
-005C6D5BEB7F01EC81FCEB3F8314C3011F5B14E7010F5B14FF6D5BA26D5BA26D5BA26D90
-C8FCA4497FA2497FA2815B81EB0FE781EB1FC381EB3F8181EB7F0081497F49800001143F
-49800003141F49800007140FD87FFEEB7FFFB590B5128080A25C6C486D130029387DB730
->I<D87FFF90381FFFC0B56C4813E0A46C496C13C0D803F8903803F8006D1307A26C6C49
-5AA26C6C5C151F6D5CEC803F013F5CECC07F011F91C7FCA290380FE0FEA214F101075BA2
-903803FBF8A201015B14FF6D5BA26E5AA36E5AB1903803FFF8497F497FA26D5B6D5B2B38
-7EB730>I<001FB612FC4815FE5AA490C7EA03FCED07F816F0150FED1FE016C0153FED7F
-80003E1500C85A4A5A5D14034A5A5D140F4A5A5D143F4A5A92C7FC5C495A5C1303495A5C
-130F495A5C133F495A91C8FC5B4848147C4914FE1203485A5B120F485A5B123F485A90B6
-FCB7FCA46C15FC27387CB730>I<007FB5FCB61280A4150048C8FCB3B3B3A5B6FC1580A4
-6C140019476DBE30>I<127CA212FEA27EA26C7EA26C7EA26C7EA26C7EA26C7EA26C7EA2
-12017FA26C7EA26D7EA26D7EA26D7EA26D7EA26D7EA26D7EA2130180A26D7EA26E7EA26E
-7EA26E7EA26E7EA26E7EA26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0
-A2ED07F8A21503A2ED01F0150025477BBE30>I<007FB5FCB61280A47EC7123FB3B3B3A5
-007FB5FCB6FCA46C140019477DBE30>I<1307EB1FC0EB7FF0497E000313FE000FEBFF80
-003F14E0D87FFD13F039FFF07FF8EBC01FEB800F38FE0003007CEB01F00010EB00401D0E
-77B730>I<007FB612F0A2B712F8A36C15F0A225077B7D30>I<1338137CEA01FE12031207
-EA0FFC13F0EA1FE013C0EA3F8013005A127EA212FE5AA5EAFFC013E013F0127FA2123FA2
-EA1FE0EA07C00F1D70BE30>I<EB7FF80003B5FC4814C04880488048809038E01FFC9038
-C003FE14016E7E6C487F6CC77FC8123FA491B5FC130F137F48B6FC12075A48EB803F383F
-F800EA7FE0138048C7FC5AA4157F7E6C6C13FFEBC003263FF01FEBFF8090B712C07E6C14
-EF000314876CD9FE01138026003FE0C8FC2A2A7BA830>I<EA3FFC487E12FFA2127F123F
-1200AAEC03FE91381FFF80027F13E091B57E90B612FC82ECFE079138F001FF4A6C13804A
-137F4AEB3FC091C7121F17E049140FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB
-7F806E13FFDAF00313009138FC0FFE91B55A5E495CD97E7F13C0D93C1F90C7FC90380003
-FC2C3980B730>I<ECFFE0010713FC011F7F017F7F90B612804815C048EB807F3907FC00
-3F485A485A49EB1F804848EB0F004990C7FC127F90C9FCA25A5AA87E7EA27F003FEC07C0
-6DEB0FE06C7E6D131F6C6C14C0D807FE133F9039FFC0FF806C90B5FCC615006D5B011F13
-F801075B01011380232A7AA830>I<913801FFE04A7F5CA28080EC0007AAEB03FE90381F
-FF874913E790B6FC5A5A481303380FFC00D81FF0133F49131F485A150F4848130790C7FC
-A25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F390FF801FF2607FE07EBFFC06C
-B712E06C16F06C14F76D01C713E0011F010313C0D907FCC8FC2C397DB730>I<49B4FC01
-0713E0011F13F8017F7F90B57E488048018113803A07FC007FC04848133FD81FE0EB1FE0
-150F484814F0491307127F90C7FCED03F85A5AB7FCA516F048C9FC7E7EA27F003FEC01F0
-6DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE06C90B5FC6C15C0013F14806DEB
-FE00010713F8010013C0252A7CA830>I<EDFF80020713E0021F13F05C4A13F891B5FC49
-1387903803FE079138FC03F0903907F800C04A1300A8003FB612C04815E0B7FCA36C15C0
-260007F0C7FCB3A9003FB512FE4880B71280A26C15006C5C25397DB830>I<D903FC13FF
-90261FFF8713C04913DF90B712E05A5A2607FE07138F903AF801FE07C048486C6CC7FCA2
-497F001F8149133FA56D137F000F92C7FC6D5BA26C6C485AEBFE0790B55A5D485C15C001
-DF5BD9C3FCC8FC01C0C9FCA37F7F6CB512F015FF6C15C04815F0488148813A3FE0001FFE
-0180130148C8127F007E8100FE168048151FA56C153F007FED7F006D5C6C6C495A01F013
-076CB4EB7FFC6C90B55A6C5D000115C06C6C91C7FC011F13FC010113C02B3E7DA730>I<
-EA3FFC487E12FFA2127F123F1200AAEC01FE91380FFF80023F13E091B57E90B67EA29138
-FE07FCECF8039138E001FE14C0EC8000A291C7FCA25BB3A23B3FFFF81FFFF8486D4813FC
-B500FE14FEA26C01FC14FC6C496C13F82F3880B730>I<14E0EB03F8A2497EA36D5AA2EB
-00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003FB612C04815E0B7FCA27E6C15C0
-23397AB830>I<EC01C0EC07F0A2EC0FF8A3EC07F0A2EC01C091C7FCA990B512F04814F8
-A47EEB0003B3B3A5EC07F0A2123C007EEB0FE0B4131FEC3FC0147F90B512806C14005C6C
-5B000F13F0000313C01D4E7CB830>I<EA7FF8487EA4127F1200AB0203B512804A14C017
-E0A217C06E14809139001FE0004B5A4B5A4BC7FC4A5A4A5AEC0FF84A5A4A5A4A5A4A5A01
-FD7F90B57E8114F7ECE3F8ECC1FCEC81FEEC00FF497F496D7E6F7E826F7E15076F7E6F7E
-3B7FFFF81FFFE0B56C4813F017F8A217F06C496C13E02D387FB730>I<387FFFF8B57EA4
-7EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB730>I<02FC137E3B7FC3FF01FF
-80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07EB03F801FC13FE9039F8
-03FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B548018F13C0A46C486C010713
-80322881A730>I<EC01FE3A3FFC0FFF80267FFE3F13E000FF90B57E90B67E7E6C9038FE
-07FCC6EBF8039138E001FE14C0EC8000A291C7FCA25BB3A23B3FFFF81FFFF8486D4813FC
-B500FE14FEA26C01FC14FC6C496C13F82F2880A730>I<49B4FC010F13E0013F13F8497F
-90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB0FF0A24848EB07F8491303
-007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D1303003F15F86D13076D130F6C
-6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C15006C6C13FC6D5B010F13E0
-010190C7FC272A7CA830>I<EC03FE3A3FFC1FFF80267FFE7F13E000FF90B57E90B612FC
-6C816CEBFE07C69038F001FF4A6C13804A137F4AEB3FC091C7121F17E049140FA217F016
-07A8160FA217E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E
-495C6E13C0021F90C7FCEC03FC91C9FCAD383FFFF8487FB57EA26C5B6C5B2C3C80A730>
-I<49B413F8010FEBC1FC013F13F14913FD48B6FC5A481381390FFC007F49131F4848130F
-491307485A491303127F90C7FC15015A5AA77E7E15037FA26C6C1307150F6C6C131F6C6C
-133F01FC137F3907FF01FF6C90B5FC6C14FD6C14F9013F13F1010F13C1903803FE0190C7
-FCAD92B512F84A14FCA46E14F82E3C7DA730>I<ED07F83A3FFF803FFF486DB51280B512
-C302CF14C06C13DF6C9038FFFC3FD8001F13E09238801F809238000F004A90C7FC5C5C5C
-A25CA45CAF003FB512FC4880B7FCA26C5C6C5C2A287EA730>I<90381FFC1E48B5129F00
-0714FF5A5A5A387FF007EB800100FEC7FC4880A46C143E007F91C7FC13E06CB4FC6C13FC
-6CEBFF806C14E0000114F86C6C7F01037F9038000FFF02001380007C147F00FEEC1FC0A2
-150F7EA27F151F6DEB3F806D137F9039FC03FF0090B6FC5D5D00FC14F0D8F83F13C02678
-0FFEC7FC222A79A830>I<EB0780497E131FA9003FB612E04815F0B7FCA36C15E026001F
-C0C7FCB216F8ED01FCA5ECE003010FEB07F814F09138FC1FF06DB512E06D14C016806D14
-009038007FFCEC1FF026337EB130>I<D83FFCEB3FFC486C497E00FF14FFA2007F147F00
-3F143F00001400B3A41501A2150315076D130F903A7FC07FFFF891B612FC6D15FE7F6D49
-13FC6D9038F87FF8010001C0C7FC2F2880A630>I<3B3FFFC07FFF80486DB512C0B515E0
-A26C16C06C496C13803B01F80003F000A26D130700005DA26D130F017E5CA2017F131F6D
-5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0FE01075BA214F101035BA3903801FBF0
-A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFFC01FFFE0486D4813F0B515F8A26C16F0
-6C496C13E0D807E0C7EA3F00A26D5C0003157EA56D14FE00015DEC0F80EC1FC0EC3FE0A3
-3A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3017E13FBA290393FF07FE0A3ECE03FA201
-1F5C90390F800F802D277FA630>I<3A3FFF81FFFC4801C37FB580A26C5D6C01815BC648
-C66CC7FC137FEC80FE90383F81FC90381FC3F8EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC
-147E147F5C497F81903803F7E0EB07E790380FE3F0ECC1F890381F81FC90383F80FE9038
-7F007E017E137F01FE6D7E48486D7E267FFF80B5FCB500C1148014E3A214C16C01801400
-29277DA630>I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01FC0003
-F000A2000014076D5C137E150F017F5C7F151FD91F805BA214C0010F49C7FCA214E00107
-137EA2EB03F0157C15FCEB01F85DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA2143F
-92C8FCA25C147EA2000F13FE486C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9FC
-6C5AEA01F02B3C7EA630>I<001FB612FC4815FE5AA316FC90C7EA0FF8ED1FF0ED3FE0ED
-7FC0EDFF80003E491300C7485A4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A495A49
-5A495A495A4948133E4890C7127F485A485A485A485A485A48B7FCB8FCA46C15FE28277D
-A630>I<ED3FF0913803FFF8140F5C147F16F09138FFF00092C7FC495A5CB3A21303495A
-133F383FFFF0B55A5C91C8FC14C080003F7F38003FF813076D7E1301B3A2806D7E15F091
-387FFFF016F8141F8014039138003FF025477BBE30>I<127CA212FEB3B3B3AD127CA207
-476CBE30>I<EA7FE0EAFFFE6D7E8014F07EC66C7E13076D7E1301B3A2806D7E15E09138
-7FFFE06E13F8801407141F5C4A13E09138FFE00092C7FC495A5CB3A21303495A137F387F
-FFF0B5FC14C05C49C8FCEA7FE025477BBE30>I<017C133848B4137C48EB80FE4813C148
-13C348EBEFFC397FEFFFF0D8FF8713E0010713C0486C1380D87C0113003838007C1F0C78
-B730>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ft cmr10 10.95 86
-/Ft 86 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907
-F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7
-FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11
-D<EC03FE91383FFF809138FE03E0903903F800F0D90FE013384948137C90393F8001FE90
-387F00035B5BA2485A6F5AED007093C7FCAA16FEB7FCA33901FC000315011500B3AC486C
-497EB5D8F87F13FCA32E407EBF33>I<EC03FF023F13EE9138FE01FEEB03F090380FE003
-EB1FC0EB3F80EB7F005B5B150148481300AEB7FCA3D801FCC7FCB3AE486C497EB5D8F87F
-13FCA32E407EBF33>I<DA03FE49B4FC91273FFF801F13C0913BFE03E07F01F0903C03F0
-00F1FC0078D90FE0D97FF0131C49484948133E4948484913FF494848495A5B491500A248
-485C03016E5A0300153896C7FCAA197FBBFCA3D801FCC738FE00018485B3AC486C496CEC
-FF80B5D8F87FD9FC3F13FEA347407EBF4C>I<121EEA7F80EAFFC0A9EA7F80ACEA3F00AC
-121EAB120CC7FCA8121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A4179C019>33
-D<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E600F30000013
-00A401E01370491360A3000114E04913C00003130101001380481303000EEB070048130E
-0018130C0038131C003013181C1C7DBE2D>I<14E0A4EB07FC90383FFF8090B512E03901
-F8E3F03903E0E0FCD807C0133CD80F807FD81F007F003E80003C1580007C140316C00078
-141F00F8143F157FA47EED3F806CEC0E0092C7FC127F138013C0EA3FF013FEEA1FFF6C13
-FC6C13FF6C14C06C806C6C13F8011F7F130301007FECE7FF14E102E01380157F153FED1F
-C0A2003E140F127FD8FF801307A5130000FC158000F0140F1270007815005D6C141E153E
-6C5C6C5C3907C0E1F03903F8EFE0C6B51280D93FFEC7FCEB0FF8EB00E0A422497BC32D>
-36 D<013F1603D9FFC04B7E2601E0E0150F2607C070151F48486C4BC7FC023E157E4848
-6C15FE48D90FC0EB03FC003ED90EF0EB0FF8DA0F3F13FD007E903A070FFFF1F0007C0200
-EB03E0160000FC6D6C495A170F604DC8FC5F173E5F17FC5F4C5A1603007CD907005B4C5A
-007E150F003E495C020E49C9FC003F5D6C49133E260F803C5B023813FC6C6C485B3A01E0
-E001F03800FFC090273F0003E0133F90C70007ECFFC09339C001E0E0923A0F8007C07003
-1F49487E0400143C033E90381F001C037E497F037C133E4B150F0201027E7F4B137C4A5A
-020702FCEB03805D4A5A141F92C7FC143E147E147C5CA2495A0103037CEB07005C494814
-7E010F033E5B4A160E49C8123F496F5B013E92380F803C49173801FC6F6C5A49923801E0
-E0496FB45A0160043FC7FC41497BC34C>I<121EEA7F8012FF13C0A213E0A3127FEA1E60
-1200A413E013C0A312011380120313005A120E5A1218123812300B1C79BE19>39
-D<1430147014E0EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B1203A2485A
-A2120F5BA2121F90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E123FA37EA27F
-120FA27F1207A26C7EA212017F12007F13787F133E131E7FEB07801303EB01C0EB00E014
-701430145A77C323>I<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA2
-7FA2133F7FA21480130FA214C0A3130714E0A6130314F0B214E01307A614C0130FA31480
-A2131F1400A25B133EA25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A
-145A7BC323>I<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113
-80120313005A120E5A1218123812300B1C798919>44 D<B512FEA617067F961E>I<121E
-EA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919>I<ED0180ED03C01507A21680150FA2
-16005DA2151E153EA2153C157CA2157815F8A25D1401A25D1403A25D1407A25D140FA24A
-C7FCA2141E143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A25C130FA291C8
-FC5BA2131E133EA25BA2137813F8A25B1201A25B1203A25B1207A25B120FA290C9FC5AA2
-121E123EA2123C127CA2127812F8A25A1260225B7BC32D>I<EB01FE90380FFFC090383F
-03F090387C00F849137C48487F48487F4848EB0F80A2000F15C04848EB07E0A3003F15F0
-A290C712034815F8A64815FCB3A26C15F8A56C6CEB07F0A3001F15E0A36C6CEB0FC0A26C
-6CEB1F80000315006C6C133E6C6C5B017C5B90383F03F090380FFFC0D901FEC7FC263F7D
-BC2D>I<EB01C013031307131F137FEA07FFB5FC139FEAF81F1200B3B3ACEB7FF0B612F8
-A31D3D78BC2D>I<EB07FC90383FFF8090B512E03903F01FF83907C007FC390F0001FE00
-1E6D7E001C1580003CEC7FC05AED3FE01270B4FC6DEB1FF07FA56C5A6CC7FC120CC813E0
-153FA216C0157F168015FF16004A5A5D4A5A4A5A5D4A5A4A5A4AC7FC147E147C5C495A49
-5A495A495A49C71270133E133C5B4914E0485A485A485A48C7120148B6FCA25A4815C0B7
-FCA3243D7CBC2D>I<EB07FC90383FFF809038F80FE03901E003F839078001FCD80F007F
-000E6D7E001E1580D81F80137F486C14C07FA27F5BA2121F6C5AC8138015FF1600A24A5A
-A24A5A5DEC07E04A5A023FC7FCEB1FFCECFF809038000FE0EC07F86E7E6E7E6E7E1680ED
-7FC0A216E0153FA216F0A2120C123F487E487EA316E0A249137F6CC713C01278EDFF807E
-6C4913006C495A3907C007FC3903F80FF0C6B55A013F1380D907F8C7FC243F7CBC2D>I<
-150E151E153EA2157EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01
-C0A2EB0380EB0700A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5A
-B8FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5
-FC5D5D5D15C092C7FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8
-496C7E49137E497F90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA4
-16E090C7121F12FC007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C48
-5A3903F80FE0C6B55A013F90C7FCEB07F8243F7CBC2D>I<EC1FE0ECFFF8903803F03E90
-380FC00F90391F000780133E017EEB1FC049133F4848137F12035B12074848EB3F80ED1F
-00001F91C7FC5BA2123FA3485AA214FE903887FF8039FF8F07E090389C01F09038B800FC
-01B0137E13F0497F16804914C0A2ED1FE0A34914F0A5127FA6123F6D14E0A2121FED3FC0
-A26C6C1480A20007EC7F006C6C137E6C6C5B6C6C485A90387E07F06DB45A010F1380D903
-FCC7FC243F7CBC2D>I<1238123C123F90B612FCA316F85A16F016E00078C712010070EC
-03C0ED078016005D48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25C
-A2147C147814F8A213015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407B
-BD2D>I<EB03FC90381FFF8090387C07E09038F001F83901E0007C48487F48487F48C7FC
-ED0F80121E16C0003E1407A4123FA26DEB0F807F6C6C131F6D140001FC133E6C6C5B9038
-FF80786C6D5A6CEBF3E06CEBFF806C91C7FC133F6D13C06D7F013F13F801787F48486C7E
-3903E01FFF48486C1380260F800313C048487E489038007FE0003E143F007E141F007CEC
-0FF01507481403A31501A46C15E0007C1403A2007E15C06C14076CEC0F806DEB1F006C6C
-133ED807F05B3901FC03F86CB512E0011F1380D903FCC7FC243F7CBC2D>I<EB03FCEB1F
-FF90387E07C09038FC03F048486C7E48486C7E4848137C000F147E4848137F81003F1580
-5B007F15C0A2151F12FF16E0A516F0A5127F153FA36C7EA2001F147F120F6C6C13FF6D13
-DF000313013900F8039F90387E0F1FD91FFE13E0EB07F090C7FCA2ED3FC0A41680157FD8
-0F801400487E486C13FEA24A5A5D49485AEB8007391E000FE0001F495A260FC07FC7FC38
-03FFFE6C13F838003FC0243F7CBC2D>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FC
-B3121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA
-7F80A2EA1E00C7FCB3121E127FEAFF80A213C0A4127F121E1200A412011380A312031300
-5A1206120E120C121C5A1230A20A3979A619>I<007FB912E0BA12F0A26C18E0CDFCAE00
-7FB912E0BA12F0A26C18E03C167BA147>61 D<EB1FF890B5FC3903E01FC0390F0007F000
-1EEB03F848EB01FC4814FE140000FE14FF7E7FA46CC7FC123EC7EA01FEA2EC03FCEC07F8
-15F0EC0FC0EC1F80EC3F00143E5C147814F85C13015CA2495AA25CAB91C7FC90C8FCA8EB
-0780EB1FE0A2497EA46D5AA2EB078020407BBF2B>63 D<15074B7EA34B7EA34B7EA34B7E
-A34B7E15E7A2913801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7E
-A34A6D7EA34A6D7EA349486D7E91B6FCA249819138800001A249C87EA24982010E157FA2
-011E82011C153FA2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F001
-0FB512F8A33D417DC044>65 D<B712FCEEFF8017F00001903980000FF86C6CC7EA03FE70
-7E701380EF7FC0EF3FE0A2EF1FF0A218F8A3170F171FA318F0A2EF3FE0177F18C0EFFF80
-4C1300EE03FCEE0FF8EE7FE091B6C7FC17E091C7EA07FCEE01FE933800FF80EF7FC0EF3F
-E0EF1FF018F8170F18FC1707A218FEA718FC170FA2EF1FF818F0173FEF7FE0EFFFC00403
-138048486C90380FFE00B85A17E094C7FC373E7DBD40>I<DB3FF01306912603FFFE130E
-020F9038FF801E913A3FF007E03E9139FF8000F8D903FEC7EA7C7ED907F8EC1EFE494814
-0FD93FE0140749481403495A91C812014848150012034848167E5B000F173EA24848161E
-A2123F5B180E127FA349160012FFAC127F7F180EA2123FA27F001F171E181C6C7EA20007
-173C6D16386C6C1678000117706C6C16F06EEC01E06D6C15C06D6C1403D90FF0EC07806D
-6CEC1F00D903FE143E902600FF8013F891393FF007F0020FB512C0020391C7FC9138003F
-F037427BBF42>I<B712FCEEFF8017E000019039C0001FF86C6C48EB03FEEE00FF717E71
-7EEF0FE084717E717E170184717EA21980187F19C0A3F03FE0A519F0AB19E0A5F07FC0A2
-1980A218FF19004D5AA24D5A6017074D5A4D5AEF7FC04DC7FCEE03FE48486CEB1FF8B85A
-178004FCC8FC3C3E7DBD45>I<B912E0A300019038C000016C6C48EB001FEF0FF01703A2
-17011700A31870A418381638A41800A21678A216F81501150791B5FCA3EC800715011500
-1678A21638A2180EA3181C93C7FCA4183C1838A21878A318F8EF01F0A21707170F173F48
-486CEB03FFB912E0A3373E7DBD3E>I<B91280A300019038C000036C6C48EB007FEF1FC0
-170F1707A21703A31701A4EF00E0A21638A31800A31678A216F81501150791B5FCA3EC80
-07150115001678A21638A693C8FCAF3801FFE0B612F0A3333E7DBD3B>I<DB3FE0130C91
-2603FFFE131C021F9038FF803C913A7FF00FC07C9139FF0001F0D903FC90380078FC4948
-143DD91FE0141F4948140F4948140701FF15034890C8FC491501485A000716005B000F17
-7C5B001F173CA2485AA2181C127FA25B95C7FC12FFAB041FB512F0127FA26D9139000FFE
-00EF03FC123FA27F121FA26C7EA212077F12036C7E7F6C7F6D6C14076D7E6D6C140FD907
-F8141ED903FEEC3C7C902600FF80EBF83C913A7FF007F01C021FB5EAC00C020391C8FC91
-38003FF03C427BBF47>I<B6D8C01FB512F8A3000101E0C7383FFC0026007F80EC0FF0B3
-A691B7FCA30280C7120FB3A92601FFE0EC3FFCB6D8C01FB512F8A33D3E7DBD44>I<B612
-F0A3C6EBF000EB3FC0B3B3B2EBFFF0B612F0A31C3E7EBD21>I<011FB512FCA3D9000713
-006E5A1401B3B3A6123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A
-6C495A6C495A2603E07EC7FC3800FFF8EB3FC026407CBD2F>I<B600C090387FFFFCA300
-0101E0C7000F138026007F80913807FE0018F818E0604D5A4DC7FC173E5F5F4C5A4C5A4C
-5A4C5A4CC8FC163E5E5E4B5A4B5AED07804B7E151F4B7E4B7E15FF913881EFF8913883C7
-FCEC878791388F03FE91389E01FF14BCDAF8007F4A6D7E5C4A6D7E4A6D7EA2707E707EA2
-707E707EA2707F717E84173F717E717EA2717E848419802601FFE04A13C0B600C090B6FC
-A3403E7DBD47>I<B612F8A3000101E0C9FC38007F80B3B0EF0380A517071800A45FA35F
-A25F5F5F4C5A160748486C133FB8FCA3313E7DBD39>I<B500C093B512C0A300016D4BEB
-E000D8007F1880D977F0ED03BFA3D973F8ED073FA3D971FC150EA2D970FE151CA3027F15
-38A36E6C1470A36E6C14E0A26E6CEB01C0A36E6CEB0380A36E6CEB0700A26E6C130EA36E
-6C5BA3037F5BA26F6C5AA36F6C5AA392380FE1C0A3923807F380A26FB4C7FCA36F5AA213
-F8486C6D5AD807FFEFFFE0B500F80178017FEBFFC0A34A3E7CBD53>I<B56C91B512F880
-80D8007F030713006EEC01FC6E6E5A1870EB77FCEB73FEA2EB71FF01707FA26E7E6E7EA2
-6E7E6E7EA26E7E6E7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E6F1380A2
-EE7FC0EE3FE0A2EE1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013F0A2177F173FA2171F17
-0FA2170701F81503487ED807FF1501B500F81400A218703D3E7DBD44>I<ED7FE0913807
-FFFE91391FC03F8091397E0007E04948EB03F8D907F0EB00FE4948147F49486E7E49486E
-7E49C86C7E01FE6F7E00018349150300038348486F7EA248486F7EA2001F188049167F00
-3F18C0A3007F18E049163FA300FF18F0AC007F18E06D167FA4003F18C0A26C6CEEFF80A3
-6C6C4B1300A26C6C4B5A00035F6D150700015F6C6C4B5A6D5E6D6C4A5A6D6C4A5A6D6C4A
-C7FC6D6C14FED901FCEB03F8D9007FEB0FE091391FC03F80912607FFFEC8FC9138007FE0
-3C427BBF47>I<B712F8EEFF8017E000019039C0003FF86C6C48EB07FCEE01FE707EEF7F
-80EF3FC018E0A2EF1FF0A218F8A818F0A2EF3FE0A218C0EF7F80EFFF004C5AEE07FCEE3F
-F091B612C04CC7FC0280C9FCB3A73801FFE0B612C0A3353E7DBD3E>I<ED7FE0913807FF
-FE91391FC03F8091397F000FE0D901FCEB03F8D907F0EB00FE4948147F49486E7E49486E
-7E49C86C7E498248486F7E49150300038348486F7EA2000F834981001F1880A24848EE7F
-C0A3007F18E0A249163FA200FF18F0AC007F18E0A26D167FA3003F18C0A26C6CEEFF80A3
-000F18006D5D0007DA0F805B6C6C90393FE003FCED70706C6C496C485A6C6C48486C485A
-017FD9800E5BD93F819038061FC0D91FC19038073F80D90FE14AC7FCD907F1EB03FE9026
-01FDC013F8903A007EE007E091271FF03FC013180207B5FC9139007FE1E0DB0001143883
-711378A2706C13F0EFFF0318FFA27113E0A37113C0711380711300715AEF01F83D527BBF
-47>I<B712C016FCEEFF800001D9C00013E06C6C48EB1FF0EE07FCEE01FE707E84717EA2
-717EA284A760177F606017FF95C7FCEE01FCEE07F8EE1FE0EEFF8091B500FCC8FC16F091
-388001FCED003FEE1FC0707E707E83160383160183A383A484A4F0C004190EA28218E005
-7F131E2601FFE0161CB600C0EB3FF094381FF83805071370CA3801FFE09438003F803F40
-7DBD43>I<D907FC131890391FFF8038017FEBE0783901FC03F83A03F0007CF8D807C013
-3F4848130F001F140748C7FC003E1403007E1401A2007C140012FC1678A46C1538A27EA2
-6C6C14007F7FEA3FF8EBFF806C13F86CEBFF806C14F06C14FC6C14FF6C15C0013F14E001
-0714F0EB007F020713F89138007FFC150FED07FE15031501ED00FFA200E0157FA3163FA2
-7EA3163E7E167E6C157C6C15FC6C15F86D13016DEB03F06DEB07E0D8F9FCEB0FC03AF07F
-803F8090391FFFFE00D8E00713F839C0007FC028427BBF33>I<003FB91280A3903AF000
-7FE001018090393FC0003F48C7ED1FC0007E1707127C00781703A300701701A548EF00E0
-A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42>I<B600C090B512F8A3000101E0C7
-0007130026007F80EC01FC715A1870B3B3A4013F16F06E5DA21701011F5E80010F15036E
-4A5A010793C7FC6D6C5C6D6C141E6D6C5C027F14F86E6C485A91390FF00FE00203B51280
-020049C8FCED1FF03D407DBD44>I<B691380FFFFEA3000301E0020113E06C0180913800
-7F806CEF3F00017F163E181C6E153C013F1638A26E1578011F1670A26D6C5DA26E140101
-075EA26E140301035EA26D6C4AC7FCA2806D150EA26F131E027F141CA26F133C023F1438
-A26E6C5BA26F13F0020F5CA2EDF80102075CA26E6C485AA2EDFE07020191C8FCA26F5A6E
-130EA2ED7F9CA216DCED3FF8A36F5AA36F5AA26F5AA36F5A3F407EBD44>I<B500FE017F
-B5D88007B5FCA3000301C0010101E0C713F86C90C849EC3FE07148EC0F807E7215006E14
-3F017F190E84A26D6C60A24D7E6D6C60A2EFE7F86D6C60A2933801C3FC6E18F001076104
-037F6E0281140101036104077F17006D6C4D5AA2040EEB7F806D6C4DC7FCA24CEB3FC0DA
-7F80160EA24CEB1FE003C0161E023F171C047814F0DBE070010F133C021F173804F014F8
-4C1307DA0FF05EA2DBF1C0EB03FCDA07F95EA2DBFB80EB01FEDA03FF6F5AA293C8FCA26E
-5FA24B157F020094C8FCA24B81037C153EA20378151E0338151C58407EBD5D>I<007FB5
-D8C003B512E0A3C649C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D
-6C143C5F6D6C14706D6D13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BEDF8
-1E913807FC1C163C6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED
-71FF15F103E07F913801C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D
-7E14784A6D7E4A6D7F130149486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E0007
-6DEC7FFFB500FC0103B512FEA33F3E7EBD44>I<B66C0103B51280A3000101F0C8EBF800
-6C6C48ED3FC0725A013F041EC7FC6D7E606D6C15386D6C1578606D6C5D6E14016D5E6D6D
-1303606E6C49C8FC6E6C5B170E6E6C131E171C6E6C5B6E6C137817706E6C13F06F5B6E13
-016EEB83C05FED7FC7DB3FE7C9FC16EFED1FFE5E150F6F5AB3A4ED1FFC020FB512FCA341
-3E7FBD44>I<003FB712F8A391C7EA1FF013F801E0EC3FE00180EC7FC090C8FC003EEDFF
-80A2003C4A1300007C4A5A12784B5A4B5AA200704A5AA24B5A4B5AA2C8485A4A90C7FCA2
-4A5A4A5AA24A5AA24A5A4A5AA24A5A4A5AA24990C8FCA2495A4948141CA2495A495AA249
-5A495A173C495AA24890C8FC485A1778485A484815F8A24848140116034848140F484814
-3FED01FFB8FCA32E3E7BBD38>I<EAFFFCA4EAF000B3B3B3B3ABEAFFFCA40E5B77C319>I<
-486C13C00003130101001380481303000EEB070048130E0018130C0038131C0030131800
-70133800601330A300E01370481360A400CFEB678039FFC07FE001E013F0A3007F133FA2
-003F131F01C013E0390F0007801C1C73BE2D>I<EAFFFCA4EA003CB3B3B3B3ABEAFFFCA4
-0E5B7FC319>I<EA0180120313005A120E5A12181238123012701260A312E05AA412CFEA
-FFC013E0A3127FA2123F13C0EA0F000B1C7ABE19>96 D<EB0FF8EBFFFE3903F01F803907
-8007E0000F6D7E9038E001F8D81FF07F6E7EA3157F6C5AEA0380C8FCA4EC1FFF0103B5FC
-90381FF87FEB7F803801FC00EA07F8EA0FE0485A485AA248C7FCEE038012FEA315FFA300
-7F5BEC03BF3B3F80071F8700261FC00E13CF3A07F03C0FFE3A01FFF807FC3A003FC001F0
-292A7DA82D>I<EA01FC12FFA3120712031201B1EC03FC91381FFF8091387C07E09039FD
-E001F09039FFC000FC4A137E91C77E49158049141F17C0EE0FE0A217F0A2160717F8AA17
-F0A2160FA217E0161F17C06D1580EE3F006D5C6E13FE9039F3C001F89039F1E003F09039
-E0780FC09026C03FFFC7FCC7EA07F82D407EBE33>I<49B4FC010F13E090383F00F8017C
-131E4848131F4848137F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA290C9
-FC5AAB6C7EA3003FEC01C07F001F140316806C6C13076C6C14000003140E6C6C131E6C6C
-137890383F01F090380FFFC0D901FEC7FC222A7DA828>I<ED01FC15FFA3150715031501
-B114FF010713E190381F80F990387E003D49131FD803F81307485A49130348481301121F
-123F5B127FA290C7FCA25AAA7E7FA2123FA26C7E000F14037F000714076C6C497E6C6C49
-7ED8007C017913F890383F01F190380FFFC1903A01FE01FC002D407DBE33>I<EB01FE90
-380FFFC090383F03F09038FC01F848486C7E4848137E48487F000F158049131F001F15C0
-4848130FA2127F16E090C7FCA25AA290B6FCA290C9FCA67EA27F123F16E06C7E1501000F
-15C06C6C13036DEB07806C6C1400C66C131E017E5B90381F80F8903807FFE0010090C7FC
-232A7EA828>I<EC1FC0EC7FF8903801F83C903807E07E90380FC0FFEB1FC1EB3F811401
-137FEC00FE01FE137C1500AEB6FCA3C648C7FCB3AE487E007F13FFA320407EBF1C>I<16
-7C903903F801FF903A1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000FC06
-00000F6EC7FC49137E001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E03903
-FE0FC026071FFFC8FCEB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15E0
-6C810003813A0FC0001FFC48C7EA01FE003E140048157E825A82A46C5D007C153E007E15
-7E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D7E
-A82D>I<EA01FC12FFA3120712031201B1EC01FE913807FFC091381E07E091387803F091
-38E001F8D9FDC07F148001FF6D7E91C7FCA25BA25BB3A6486C497EB5D8F87F13FCA32E3F
-7DBE33>I<EA01E0EA07F8A2487EA46C5AA2EA01E0C8FCACEA01FC127FA3120712031201
-B3AC487EB512F0A3143E7DBD1A>I<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC14
-7FEB7FFFA313017F147FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA7F01387C03F0
-381E07C0380FFF803801FC00185185BD1C>I<EA01FC12FFA3120712031201B292B51280
-A392383FFC0016E0168093C7FC153C5D5D4A5AEC07C04A5A4AC8FC143E147F4A7E13FD90
-38FFDFC0EC9FE0140F496C7E01FC7F496C7E1401816E7E81826F7E151F826F7EA282486C
-14FEB539F07FFFE0A32B3F7EBE30>I<EA01FC12FFA3120712031201B3B3B1487EB512F8
-A3153F7DBE1A>I<2701F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0913B78
-03F03C01F80007903BE001F87000FC2603F9C06D487F000101805C01FBD900FF147F91C7
-5B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA74C>I<
-3901F801FE00FF903807FFC091381E07E091387803F000079038E001F82603F9C07F0001
-138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>I<14FF
-010713E090381F81F890387E007E01F8131F4848EB0F804848EB07C04848EB03E0000F15
-F04848EB01F8A2003F15FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F15F86C
-6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC90380FFFF0
-010090C7FC282A7EA82D>I<3901FC03FC00FF90381FFF8091387C0FE09039FDE003F03A
-07FFC001FC6C496C7E6C90C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0
-A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C001F89039FDE007F09039FC780FC0DA
-3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA733>I<02FF131C0107EBC03C90381F
-80F090397F00387C01FC131CD803F8130E4848EB0FFC150748481303121F485A1501485A
-A448C7FCAA6C7EA36C7EA2001F14036C7E15076C6C130F6C7E6C6C133DD8007E13799038
-3F81F190380FFFC1903801FE0190C7FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E0
-00FFEB1FF8EC787CECE1FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35B
-B3A5487EB512FEA31F287EA724>I<90383FC0603901FFF8E03807C03F381F000F003E13
-07003C1303127C0078130112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F
-6C1480000114C0D8003F13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F0
-7E14016C14E06CEB03C0903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<13
-1CA6133CA4137CA213FCA2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912
-009038FE01C0A2EB7F03013F138090381F8700EB07FEEB01F81B397EB723>I<D801FC14
-FE00FF147FA3000714030003140100011400B3A51501A31503120015076DEB06FF017E01
-0E13806D4913FC90381FC078903807FFE00100903880FE002E297DA733>I<B539E00FFF
-E0A32707FE000313006C48EB00FC5E00015D7F00005DA26D13016D5CA26D6C485AA2ECC0
-07011F91C7FCA290380FE00EA2ECF01E0107131CA26D6C5AA2ECFC7801011370A2ECFEF0
-01005BA2EC7FC0A36E5AA26EC8FCA3140E2B287EA630>I<B53BC3FFFE03FFF8A3290FFE
-003FE00013C06C486D48EB3F806C4817006D010F141E00016F131C15076D163C00004A6C
-1338A2017F5E4B7E151DD93F805DED3DFC1538D91FC04A5AED78FE9238707E03D90FE001
-7F5BEDE03F02F0140701070387C7FC9138F1C01F02F9148F010315CE9138FB800F02FF14
-DE6D15FCED00076D5DA24A1303027E5CA2027C1301023C5C023813003D287EA642>I<B5
-39F01FFFE0A30003D9C00F1300C690388007F8D97F0013E002805BD93FC05B011F49C7FC
-90380FE00EECF01E6D6C5A01035B6D6C5A6E5AEB00FF6E5A6E5A81141F814A7E81147BEC
-F1FC903801E1FEECC0FF01037F49486C7ED90F007F011E6D7E013E130F496D7E01FC8048
-6C80000F4A7EB539803FFFF8A32D277FA630>I<B539E00FFFE0A32707FE000313006C48
-EB01FC6F5A00015D7F00005DA2017F495AA2EC8003013F5CA26D6C48C7FCA26E5A010F13
-0EA26D6C5AA2ECF83C01031338A26D6C5AA2ECFEF001005BA2EC7FC0A36E5AA36EC8FCA2
-140EA2141E141C143C1438A2147800181370127EB45BA2495AA248485AD87E07C9FCEA78
-0EEA3C3CEA1FF8EA07E02B3A7EA630>I<001FB61280A2EBE0000180140049485A001E49
-5A121C4A5A003C495A141F00385C4A5A147F5D4AC7FCC6485AA2495A495A130F5C495A90
-393FC00380A2EB7F80EBFF005A5B484813071207491400485A48485BA248485B4848137F
-00FF495A90B6FCA221277EA628>I<BE12C0A25A0280985B>124 D
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fu cmbx12 20.736 13
-/Fu 13 118 df<BDFC1CFEF4FFC01DF81DFF1EC01EF08AC7003F49C9000F14FE09018075
-6C800A1F807680768076807680A27680A2777FA2208089A320C0A289A565A32080A35314
-00A29AB55AA2525C6764525C525C525C525C5249C7FC51B55A090714F0093F14C00807B6
-C8FC93BA12F81DC0651DFCF5FF801EF04CCA14FC0A3F13FF0A0F800A0314E076807614FC
-777F777F2080897714C020E0A27714F0A220F88920FCA47714FEA96520FCA45314F8A265
-20F06520E05314C0659AB61280521500525C1C0F5214F899B65A09075DC05A9CC7FC1EFC
-1EF01EC053C8FC1DE00AF8C9FC777679F58A>66 D<B800C051B8128071637163A37163A2
-7163C7003F57C8FC71F33FBFA203EF6DF37F3FA303E76E1AFEA203E36EF101FCA203E16E
-F103F8A203E06EF107F0A3706DF10FE0A2706DF11FC0A2706DF13F80A2706DF17F00A370
-6E18FEA2706E4D5AA2706E4D5AA3706E4D5AA2716D4D5AA2716D4D5AA2716D4D5AA3716D
-4DC7FCA2716E16FEA2716E4B5AA2716E4B5AA3716E4B5AA2726D4B5AA2726D4B5AA3726D
-4B5AA2726D4BC8FCA2726E14FEA2726E495AA3726E495AA2726E495AA2736D495AA2736D
-495AA3736D495AA2736D49C9FCA273EC80FEA2F481FC7314C1A273ECE3F8A273ECF7F0A2
-74EBFFE0A3745CA2745CA27491CAFCA2745BA3745BA2902603FFFE705BB800F897BA1280
-745BA2755AA3755A755AA97679F5B8>77 D<BC7E1BFF1CF01CFF1DC01DF81DFE777EC700
-3F91C8000715E0E0003F80090714FC090180756C7F7680768076807680A276808B888BA3
-7680A38CAA9DC8FCA3525CA267A2525C676467525C525C5291C9FC99B512FC515C090F5C
-097F14C0080FB6CAFC94B912FC1DE09ACBFC1CF81CFE767E94C8003F14E0080780080114
-FC746C7F757F7580758075807580A275808A87A28A888AA78BA78BA779147E22FFA288A2
-8B765E22FE76802103766E14FCBA00C06E6E1307766EEB0FF876ED801F779138E07FF00B
-1F91B512E00B0716C00B011680E3003FECFE00D1000714F8E4000F13E088787AF590>82
-D<92383FFFF80207B612E0027F15FC49B87E010717E0011F83499026F0007F13FC4948C7
-000F7F90B502036D7E486E6D806F6D80727F486E6E7F8486727FA28684A26C5C72806C5C
-6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041FB7FC0303B8FC157F0203B9FC021F
-ECFE0391B612800103ECF800010F14C04991C7FC017F13FC90B512F04814C0485C4891C8
-FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E5D187E6C6D846E4A48806C6D4A48
-14FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE00019139FC03FFC06C91B6487E013F4B
-487E010F4B1307010303F01301D9003F0280D9003F13FC020101F8CBFC57507ACE5E>97
-D<93383FFFF00307B612C0033F15F84AB712FE0207707E021F17E0027F8391B526FC001F
-7F010302C001037F4991C7487F49495C495B4901F04A7F5B90B55A485CA2485C4891C8FC
-A248715B5C48715B725B4A6F5B489438007FC0071FC7FC96C8FC5AA25CA3B5FCAF7E80A4
-7E80A27E806CF11F80F23FC06C6E167FA26C6EEEFF80816C606C6E17006D6D4B5A6D6D15
-076D6D4B5A6D6D6C4A5A6D02E0EC7FF06D02F849485A01009126FF801F5B6E91B6C7FC02
-1F5E020716F8020116E06E6C1580030702FCC8FCDB003F13804A507ACE56>99
-D<93387FFF80030FB512FC037FECFF804AB712E0020716F8021F16FE027FD9F8077F49B5
-D8C000804991C7003F13E04901FC020F7F49496E7F49498049496E7F49496E7F90B55A48
-727E92C914804884485B1BC048841BE0485BA27313F05AA25C5AA21BF885A2B5FCA391BA
-FCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F86C7F1A0F6C6E17F06C191F6F17
-E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13006D6D6CEC0FFE6D02E0EC3FFC
-6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002034CC7FC020016F8031F15E003
-0392C8FCDB000F13E04D507BCE58>101 D<EF7FFE040FB512C093B612F0030715FC031F
-814B8192B5D8F01F13800203DA803F13C04A9026FC007F13E04A4990B5FC4A5B4A494814
-F04A13C091B51280A2491400A2495BA27114E05B4B6E13C0721380721300F007FC95C8FC
-B3B912C0A8D8000749CAFCB3B3B3A7007FB712FCA844797AF83B>I<903801FFFCB6FCA8
-C67E131F7FB3AD95380FFFE095B512FE05036E7E050F15E0053F15F84D81932701FFF01F
-7F4CD900077FDC07FC6D80DC0FF06D80DC1FC07F4C48824CC8FC047E6F7F5EEDFDF85E03
-FF707F5EA25EA25EA293C9FCA45DB3B3A6B8D8E003B81280A8617879F76C>104
-D<903801FFFCB6FCA8C67E131F7FB3B3B3B3B3ABB812C0A82A7879F735>108
-D<902601FFF891380FFFE0B692B512FE05036E7E050F15E0053F15F84D81932701FFF01F
-7F4CD900077FDC07FC6D80C66CDA0FF06D80011FDA1FC07F6D4A48824CC8FC047E6F7F5E
-EDF9F85E03FB707F5E15FF5EA25EA293C9FCA45DB3B3A6B8D8E003B81280A8614E79CD6C
->110 D<902601FFF8EB07FEB691383FFFC094B512F00403804C14FE4C8093261FFC3F13
-8093263FE07F13C0DC7F80B5FCC66C5D011FDAFE0114E06DEBF9FC16F815FB16F016E015
-FF16C07114C05E72138095381FFE0093C76C5AF001E095C8FCA25DA65DB3B3A2B812F8A8
-434E7ACD4F>114 D<912603FFFCEB0780027F9039FFE00FC00103B6EAF83F010FEDFEFF
-013F92B5FC49EB000F2601FFF01300480180143F4890C8120F4848814848814981123F83
-485A187FA212FF6D163FA37F7F6DEE1F8002C092C7FC14F014FEECFFF06CECFF8016FEEE
-FFE06C16FC6C16FF18C06C836C17F86C836C836C83013F17806D17C0010717E0010117F0
-EB003F020716F8EC001F030015FC1607EE007F051F13FE1707007E82B482836D167FA218
-3F7F181FA27F19FC7FA26D163F6D17F86D167F19F06D16FF6E4A13E002E04A13C06E4A13
-8002FE023F1300913AFFC003FFFE01E790B65A01C316F0018016C026FE003F92C7FC4801
-0714F80070D9007F90C8FC3F507ACE4C>I<DAFFFE933803FFF8B60303B6FCA8C66CEE00
-01011F717E6D84B3B3A862A497B5FCA261A2616D5F1ADF6F150F6DEF1F9F073F806D6EDA
-7F1F13FF6D6ED901FEEDFF8070EB07FC023F01FEEB3FF86E90B612F06E16C00203168002
-00EDFE00031F14F80300028003C0C7FC614F79CD6C>117 D E
-%EndDVIPSBitmapFont
+%%BeginProcSet: f7b6d320.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10
+%     cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8
+%     cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10
+%     cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10
+%
+/TeXf7b6d320Encoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
+/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
+/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen
+/period /slash /zero /one /two /three /four /five /six /seven /eight
+/nine /colon /semicolon /exclamdown /equal /questiondown /question /at
+/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X
+/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
+/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
+/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 09fbbfac.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9
+/TeX09fbbfacEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
+/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla
+/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam
+/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon /less
+/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N
+/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
+/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l
+/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
+/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi
+/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown
+/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: bbad153f.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
+%
+/TeXbbad153fEncoding [
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /circlemultiply
+/circledivide /circledot /circlecopyrt /openbullet /bullet
+/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
+/greaterequal /precedesequal /followsequal /similar /approxequal
+/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
+/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
+/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
+/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
+/prime /infinity /element /owner /triangle /triangleinv /negationslash
+/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
+/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
+/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
+/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
+/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
+/backslash /wreathproduct /radical /coproduct /nabla /integral
+/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
+/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
+/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
+/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
+/lessequal /greaterequal /precedesequal /followsequal /similar
+/approxequal /propersubset /propersuperset /lessmuch /greatermuch
+/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 74afc74c.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10
+%
+/TeX74afc74cEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
+/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+/suppress /exclam /quotedblright /numbersign /sterling /percent
+/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma
+/hyphen /period /slash /zero /one /two /three /four /five /six /seven
+/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
+/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
+/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
+/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 0ef0afca.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+%     cmr5
+%
+/TeX0ef0afcaEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/arrowup /arrowdown /quotesingle /exclamdown /questiondown /dotlessi
+/dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls
+/ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright
+/numbersign /dollar /percent /ampersand /quoteright /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon
+/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /quotedblleft
+/bracketright /circumflex /dotaccent /quoteleft /a /b /c /d /e /f /g /h
+/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /endash /emdash
+/hungarumlaut /tilde /dieresis /suppress /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda
+/Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup
+/arrowdown /quotesingle /exclamdown /questiondown /dotlessi /dotlessj
+/grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe
+/oslash /AE /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
 end
+
+%%EndProcSet
+%%BeginFont: CMTT12
+%!PS-AdobeFont-1.1: CMTT12 1.0
+%%CreationDate: 1991 Aug 20 16:45:46
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-1 -234 524 695}readonly def
+/UniqueID 5000833 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0364CD5660FE13FF01BC20148F9C480BCD0E
+C81D5BFC66F04993DD73F0BE0AB13F53B1BA79FE5F618A4F672B16C06BE3251E
+3BCB599BFA0E6041FBD558475370D693A959259A2699BA6E97CF40435B8E8A4B
+426343E145DF14E59028D4E0941AB537E34024E6CDE0EA9AF8038A3260A0358D
+D5B1DB53582F0DAB7ADE29CF8DBA0992D5A94672DFF91573F38D9BFD1A57E161
+E52DA1B41433C82261E47F79997DF603935D2A187A95F7A25D148FB3C2B6AA32
+6B982C32C6B25867871ED7B38E150031A3DE568C8D3731A779EAAF09AC5CE6C5
+A129C4147E56882B8068DF37C97C761694F1316AF93E33FF7E0B2F1F252735CE
+0D9F7BCE136B06EE967ABE0C8DF24DCBBF99874702ED252B677F407CB39678CC
+85DDFC2F45C552BA967E4158165ED16FECC4E32AC4D3B3EB8046DCDD37C92FDF
+F1F3710BB8EF5CA358ABACA33C7E5ACAD6BF5DC58BDFC3CF09BA2A38291D45A4
+C15FF1916FE2EC47FDC80911EB9C61F5D355BEDFC9DB17588547763AC5F0B1CC
+12D2FFB32E0803D37E3281DA9CE36C5433655526ACFB3A301C56FAB09DF07B5D
+048B47687348DEB96F3F9C53CE56DDD312B93D3918CD92AF53FB9461864D11B8
+0138918D0B1270C54873C4012CDE6F886DB11BCEA04B023EBB43E0D0A06BE725
+741D08B9DB688731A6C9886C15A83C28DADCC81385EA239E045E8F3670CE03DB
+9EE77ED067036595C9F3B1854343BE3A12E486B6E5A2F8AC44FA5378D28DCCEE
+306B0E283AA444423F9A4FF38E2B56DCF67A39CEB2C643DAE86865517D5D0371
+CB8797208ADEC637330A3A57902C9A88EDB75A7C16FA9850075D9F19578EC666
+1353CC1FC512D59DFF847ACCD3D295C5D09DFE2A27B87A0F54938CC908FC87F8
+A08FF8F94A3051855B401F349F5CBC1DAD02C3CBE583E69FBD18FC747D2730B9
+A62F25952755ECC04C1852CB5CA505043B428E2BF1D407A26E0AC0C85E0DEB4C
+425D14F1A1BA5972EC78AF68FFDB2425A9F5ED10220B1716A83D53D5958094ED
+3D2CD66F2A070515F737516108CB2B0205255E9BA568C2A847679FCE1B1AAC31
+128359CED2C77D35333CE94AB2B05797C43EA28810F314D3283555D399E30FEC
+C1F113B94484B6CFCC0988EA652BD5E0F61983225CE3A1CC1FA80F13DD945516
+C84962DC76A254C62CCBDB47B6CBE6DD237E38177D216AB3F9BBF876C4775680
+A4F8CE4DB65064C59D540E36EDCF9C3AD79FFCFA244A6FB20D047BB4774E6316
+69F7D47D459A56A68B2F45417DA9C04CF6F370D13E2292908671929511BAC37F
+B8F709AC597A2B80340B60584817C685319CE7CD7FB243F5D9F9848D4B45CC4D
+22CE6FEDDC2316EC3199EEEF12CA0263ED6122153C444612F0612C338981E889
+ECB0006CFA33076F02EA838E03E551785BFD414BB360B19A0CFCEA852C12F6A7
+C36E68E2121B416EB29CC55D87804D6E79B876C7A0BEA416FE1FCC727D00E341
+47F2B3A20534E6C16D81C0CAA970639C0D690DF2383FA7D6693E1863F2BFA94D
+D7A0B91D6E2A5770D6997971C227B38D3AB79D62CFA3BB7E18E5857FDE0271DC
+8D0467EB8A60EF3A0EBD77730AD8F4D7AE248C103CCEFC17C717DDFCDE9ACE1C
+1BBBF78434C9F66C455D1A02859960717C61B0FE911A0FEC12B0783F944F9B1C
+B7BE3D1B67108D79A2C5C578B97B870F5BB646CFCECB27885DDAF5342783ED3D
+84463FF40B432FCDCEDAC7827FA0C1F6E26805C50EE6448BE598BA51324A6F5E
+493F035C131B7D9DB57EF720FE2E5FE1C532C51A0905EAFFE463BF7E47202808
+DFB0934AB9B27C12D8BB566BCF4D89709D282CDA9607E25DBC140F61671B1926
+0CBE74FBB99D87802E74A250E87029AA28E98B3FA3DFEFAD4723DE5961E9AF3C
+B5A35E3BED0B97894CF8E44176570DDCD6EDF06CB66F0CDCBE75F77E14C90F89
+BA830760415ECCE0DD1A1B2191891182275904FA1B587DE149829C711CB58ACA
+33843E14B42B9C120C917D57DD8EE4F0ECC257767B6AC6EB80E563F84101AE08
+829ABC0A055A4D33AB19281A0345AEE764A7D135BCAB8735A051D8A7892B4702
+E9917E2CB149C24C721C1D12731A5F8412524CED7E850602D8BD05F7BEB64F46
+472A600F50E758FD22A8126A913C001473CBC84165A4B46B25E00FB2348F3896
+20C8886A5B08704C319924C1749F33A3096406A27FDADC6F17807103DA04D354
+FEF400100881609A42E8572819B845B8A8B7FCF2CCCA75A1CB25BBBF3E2B1C45
+FC4BDEC03311D6CCF78669C53432D786530039B36A8037A95A231F17E98359E6
+F0E892CAEB646877F4C4FFBCCB5C5A8143FF00B90F01A62D0BE68D593E97A2CF
+2EC3C1D389C2474878A7E7BAF4C97C2733F958D6CD02F9EF880158455958A15A
+C2A4ED22526838EC3530C7EC5654204444A28529BF68ADCF93E3DA72ABD50E46
+3499D9A9A061D59C0D35F1FA5C5EA5CB93500268FE96B416F66EF179E184D595
+14DED98C95A8EEF2D172F8F59AC529A392838572C0E48018F8C9D6E6644AEA2D
+60C68F8B4BE2420B171750C96F8398C99DFB709379085C901EE6DA44DC4F671D
+10172309F8E7E7E8D9F5D4A6EBCFE0C28BDD4D6DAA0C103AA0BB2F2D52217302
+B580D26E9A89AB56927E729AFB576FDE9877B16A2483B67D3917729597707B08
+C183A0DE48462D2E16BA17F8BACB18BB9B15434551FD9F0D9F6142F4A668F631
+8BE9288B53AAF5755A28DAA6D71D17062D29D19A9EB299814755C4C6E5D03B64
+CE8ECD65C961AB35E468C36E087857A9315D362A1D3655A41D249C32C459760E
+A66FD627FCC6745F9575782B47F362A33C418F10C16E0DFB67A151E107B5109F
+4F58565797D5BA3E4B0A45978FDFA804C452F708A81314B36D5F448A836C08EB
+A2FF2DE947BD3779658BEA382C00DE63BF2AC04DC2DED83B8DFC1263E7819446
+244FBF5CFD4581952D515909B617C205A54AB0B40CA7ADE8DF11B60C4F14802A
+1398444E83A91834D2BF6E9525E6F9BBB4757EC393751695D626926D4240CA7D
+501664845B89C7E6BE94E3BE8D67531C5528465CCF393A383238EE573E2A452A
+97ECE639797A8B18FE620BE63784BAAD630E0F534E3715408A0AAABDB0767EE9
+92E8CC835ADACCE79B38AF6C21DA95F5B5EB17AD07892B6DE3598FE66FDB07F6
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR9
+%!PS-AdobeFont-1.1: CMR9 1.0
+%%CreationDate: 1991 Aug 20 16:39:59
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-39 -250 1036 750}readonly def
+/UniqueID 5000792 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FADB679CF58BAFDD3E51DFDD314B91A605515D729EE20C42505FD4E0835
+3C9D365B14C003BC6DD352F0228A8C161F172D2551CD1C67CD0B1B21DED53203
+046FAFF9B1129167921DD82C5964F9DDDFE0D2686875BD075FC81831A941F20E
+C5CD90040A092E559F6D1D3B0E9BB71733595AE0EA6093F986377A96060BF12A
+A1B525CD9FA741FE051DD54A32BECD55A868DD63119A4370F8322CCBEC889BC2
+A723CB4015FC4AA90AE873EA14DE13382CA9CF0D8DFB65F0ABEDFD9A64BB3F4D
+731E2E1C9A1789228FF44116230A70C339C9819676022AB31B5C9C589AE9094B
+09882051AD4637C1710D93E8DD117B4E7B478493B91EA6306FDB3FA6D738AAB1
+49FBB21A00AC2A999C21445DE3177F21D8B6AAB33869C882613EA6B5EC56476B
+5634181ECBF03BFEDB57F079EACE3B334F6F384BDF9D70AEBD592C8ECF21378B
+54A8B5DBF7CB9282E16AA517E14843909339B5E7C55B038BF3BB493F3B884A1C
+C25F9E8FB912CBE23199AD9D2C3E573727701BA301526C66C3617B9514D6F11F
+11930B1D97C17816C85B1BFD9B973A191B33CC3B391815AC46268691C741B2D4
+48A840F1128D9B2F9CF07D0709FE796B23A836417BF7B5B12D67F74453C82F5F
+25F7B30701D6F6D4F4DC623C0C27D6A6FBECC7312A3CD10932FC7C10851C3C52
+24B75DEA8A648B7F34F5711DB0E843C914E25663C510185BC37BDB7593C1C259
+21D8DDAD33982C336BF272BAB2F48E68217403FE9F54877B243614A87E64784D
+2796EE4179FBF96123D1BEE3EF89D682B427BA4F12A1318A57F18BE5DD903815
+26141589B9DB4C849B9628F781E6449B19640A9FFDA1F601120006E44A860188
+B311425E422E51E61638D13C3E73A5735AE1A5302E290B24B4D0366C53E460A0
+BA0B093E70BF9E5E438CCC0219974F12FCEBD742D9364CBA02229EF59D938ECA
+18902C7CBE1265FA0597BA67B0B05E116AABCCA0FA6817F8A8803F61D6842718
+B0EAB943575322BB38B86B51E9DA2F247A0FFECC8E3E327AFABBF5F6966E9FDC
+5FFB9A3075CFAFA8A119019DD243BB1B0B8A0756A96C894D90000AEE0597A54E
+BBBD4A2077FD9F9A8A17FCB91AA6C68762AA23B99D5C87C62323DED943EB85E0
+C597B8C67A6FFDC8E849A807F703C8A92809313CB8871143AA11815A1259CCEB
+C17B124C67F8678BBED3A00A9A7E9BB5699E81CEEA18B0BC1EF3B49E3DBA1CFB
+B0286E92685F5D9EC12419A6E8997F34E6E29B9E66119430D82509B8AE4BA7F9
+B3137FA0E5D92948D0E0E8432A58A55D534CDD1339B20990B58DF13396FFFB01
+818DAEC0E7777059CE15D6BE8B313EAB3BC5CC04DA2F41775419FDE3BBDBF4D1
+4E6F1FEA0F3A746DD5A1DA447821E12597143EAF04D221FED9408A3DFB5F6D18
+4B9D8BCF5F947D893C988C13BBD1C45AD5F68E24C0D401E2FA8C0B911A179DB1
+CE8E847144CF6363B241A3195414FFED9617F6ABAE1C9A7D1F5C385A9138DD0B
+EF2CF3A005050C9B0264DF4F824602CFA58FBF83F6B26A7972C2BE206C34F5AE
+189FC968BEBA2E1B0EEBB86652A4AE7F86B93DA4F3CA93BD5C73E842EA96B3D5
+A114D45D983BB890CC19F9944DF4741761C568141A87757C170595357A3A0546
+B09CD7394A5F8A7E3E7661FBB04435ECDDB1BF4C5EC2A61A78F6E8F024D008BC
+0A32FEEBC3DC0E9D3E572A2ADA2A0CA043C1C40B09C2954BFAC36030EE3CA9AA
+D49571EB8D392ED4ECB090477974F4E7D898438FB6312873D925686F05E5BDB6
+D2274540F20C5B0409ABD35FC4C90071BBF121C656EE78D55B5F7D1606A958F7
+CF1F81E631771333211F9286378ADD6525D5E4548A547DFDE2900D63EAB5DFAA
+5ADCEB72A14EEFB53BF0B93C531211CCE2CB1B52FA387A716E79ED9ACBD9A3C2
+DEBE7744DB6DA31D29E30998B42456D6FE15B3500ED0F003C985C5D4A38D55FD
+A70B015AEAEEBA889304E3DBAE87BF8BD28770B4014F4DBD5AE199D8B9536E70
+FCD38C0B0E6C32C17218E0D86C0CCFB67CBF635D0A51BFA2CEE5A371D70DF4A0
+8359DC9C79122FB837299EA0C1EC7FBA0B3378CECCA1187804B48E4565AEE1AC
+E4162304465ED336C1A47C7A0ED44CD9F7F8EB851DE25A1EC6A536BC1D908279
+2637F66B9B11FBDE78D8FE275433106E69CE8693A395D59D20B0980E6D965B3B
+A29E9867D60010A45B94436D947C87385CB59113B1493550FD02FAE717AFBBE1
+F630D61011E4D76DD3A9F57CBEC6DBF1896325FAE389CFF97B303CCA999E20E4
+57A7030758227017F51468FBF5AF4906D4403E23FFA829D3A9B11E58E1E2591B
+24B467F1441B517ACD03F03D18E6A99CFECD54B9F91814337C3518D48B3BFE91
+CF21D7D61B0EFFA25EA0B6B1E9F1A1518996178E619F9465E6E969F44ADB60BA
+42565866C9AB7DD3F805A14900013294585A7C8B8B0DE2BE4A3634F61BA335E0
+B82FB93C54D5FCEA68733C71D369D9FA4F3F7F1FB797441CCD5004FC4ACA1D5B
+C02E4F4123FFB4CC2D8951836A984875CE041FDC0ACD8B2A8E238C9738E39DCB
+1D6015147E6EAD26DEA8163272090B5F9866F5BDB356CA1D62EA8A0B60493435
+CAE557FBB2FAACC68D5F8A4FDCEAA0E2C82F167DC8B463E966467A741223D937
+BF647469DEF8432DC5AA1E0D2D28CC0F1EB27501367FCB0DD9920F547A48E2E8
+773C1D6B13A50654D4B4E463375D58762FE46F7B4AA1395DBE36DB9A39A4CAEB
+B27071F27172D33B57A632634F738504312DD9D7470D4F6CCAAC1A0D3E04E8BF
+6C951AEA1E54089A07423EC1090A1339A2AF21862A2AC993E599C39DEBD6CB3D
+FEA4787D129BA9F71899248B4CCB37B30EA6FF86F969A527F56C8A2BF2C72EDE
+C49A90723DEFCEA55047597AF887DDC49E2EF8CB794A1C1591C2E951063F5B0D
+E93CF4AD7D0769FADC79886CC7F25ECFF5B77C47E9204987D7AF6B13A8998BFA
+E5006923F3C61A3CCF6BFFB5DA63627F17BC2869DEFC98C67DF60424F8F8F585
+5DB4CCBBA16795C8D8DEF245BF954787F097B473AA571CD7A3607FB4DB277BCC
+DEDAEF8825A5E040E0EBC36179D3D673B9008BD0131C4529A93C2AF79BE99F70
+E78D9D5FA0FFF06B013B8AF4BB5E328055AF9635F2AE7D6F741C043706EC7EE2
+4E3033ED8BF2A0E2849A1F594E114A00E04E36FF810E312C3414566C3479E748
+6E6DB35321874BEE56B562E1A82FE9A5EB9945A7D05170AB85D1FE58274C85B0
+B9A50E491AB43863B115266242D2AF357BF1ABA348D83CF48C803601D413630A
+94EA81BF6838D64D384590AD54926109651056AB83EE8BEAF15E010646EE31D0
+DD32A0CD9435F33FE9C3C308E2412B65DD2B6EE05686EFE2D052A6AE449FB338
+6831AE4E0BEF3ACF3F3655DB8238EC9F0B1B543865D2581145CF98562E69C542
+EF2857167B8F116EF2570487BA57AE6C05583763B24341BF2CDF983AD7CEAA4C
+6837582B40A6508ED64BF5917AF1CB8E9F795B740386AECF52EA094D3BADA159
+BACC1D8E3A6DB913E1203010BCE8F75F1EBB4F5A0CCF35E82497E109F115A864
+7DFF57DD7212BCB0BAE1787203E88C9EBD9208D905A4F7F56FFAB24DFDC6053B
+C460BEFF9FB9D0E145588FE8143BB3E6CD2072532BB03E8293C47EC2F740C602
+AFBE8AA8C670A2835F55AB63D0E18C4C338767A86E9353CBBEECE199D664E84E
+1EE4C5291D4B58C03463743EF5C59FA9F879423C4E1430E6FCCAADD89C05F8CE
+8BD78AA57F70571E0B083CACB12C8E89728A542EB58E531E8DFF8164C86CCC57
+5ACDE9E9575B2028EE1F93C2B416123D2C2EFD2FA9DDF1857018C6A978CAD17D
+D95D92D1E564814F02729248EBCA0F69BBD35A6EEC46811BF5478796CF492A6A
+796A013DE9844ACA7377AAC0F00331D9C7D8D4184E128D61CEA5E68388FC68A0
+AED5DC264E973C0BA6EE0F6F7C540B563120D3DBDFE06866E9820C64E00A861E
+BB208B22A1DB195CC5B29D80DD65911233BF68899C8739FBC44AE8B8A4A7B08A
+60621FBED6418BC7DECDFD9325D9ACD9CE9A787A467CF44D0EFFCD8E89E30EA5
+0ECFC159C2AA45841FD5170B9933A9CAA862B7A4A293FA59625DBA668EE1FD8A
+17AC512DDC9D30B8A3215F2577E2063AE3F622801CA14FDDD0C2F0087E5DA873
+F9EEB0D23DFBE8B0117C90EBB86983ACEE937810BF998B5B60AAF854DFFC3B38
+19B4C00F221BEB5CD126A01A20BFC333C3176176DBC3483F26297306BA56E155
+404DA68C2569732B15B74201CEEAA696E4C949A890B4C4AA3E931F8EE9A7FFB9
+44789CABC1DA86C54D43F1D2ADEBEDD4D9B764459352EAA4058A0DF5E925DE6B
+5C4449E06686AE847A72B3DB0750C848C0F21A15E0C282DE6B989552A3755A97
+E6D8BA6382D29CA47901A8F65867C4BCEEA35D75BB5CAD2930627A8462605DD2
+2825298D0AD47F81A7A12BD1A9DD293655FCA634D57F5259C98CE71005BCA2D7
+C4B0CDFA9440EE4122A2CD6AA1F482838E0FB787EEBB5242AD1DA8C4C5E2829F
+6567717A520AD64AC38AA586BB7432E9E567A9BB39E6018BA4ACBD172821E553
+9664C8BDDA39FDA69B47A17807293C4E1897ED1C608EE5C12DDE0B415BAC7FD6
+067BFE7C4BFC199A125FF68CC186372B9A212567DEB70985EE7667E0BB46E30E
+DA0D988D18A9E71133FB8130A5A11812A01C7D88C79A7AACF2D236EB9CFF413E
+F4F388671797C31599CE79169EDE7716C0B9DBF61892ED3A1CC9684FE3068F3E
+BE886A7B1A0D3E0C357858E209649561CD211B91264675E1978A7ACE2DCBDC29
+74118BE4F2B7C30558C0F3746F1C9E6A20931EF3C768009BB77B0CD9847A4281
+EB754372DE304734457C102611ED20D4822F118D5BEA9661A8A4A8E0CC549489
+84D79E5C3AAF4FF29E81E2BCB8DC125109CE37BA6F7EA0D078B8AE8FF3695243
+1BB75054BF37D6209DC4E31D971E876B1799B3ADC4D2B636EF0C7FC11614231B
+5BBD3A372EE95327AE7F423065E42C16D2B2EDF92A6118C40D4D2F2C5B683B25
+194F940AB871807A013B8F47700DC4DC2E935776CF4DD8B2C138432BF1331B1E
+80B9D9ACC3897B41682315D62963AECAD855D3A4A7A2011BBA3DAAB75F4031DE
+F43A9628A073C49C0BF50340D5F239C3D1BC5276FD36C73A46B4A79C619F30E3
+73F3D58EBAC5FE2A4A22C362B8F9ADEEB3CCD0D31166178D241A24BCC61B2442
+23BFE2CA3E8FBA1B1FF660DE333184734E0D00BE164FBA03CFDDC13D65D29789
+27D3B2EAE0BB3DF0038C17A38FDF8CDE17E812DDBBA20F846767A178595DC63B
+894C0A1FC610386087249495B08FA611EFD4E40AEDB0C8A92599993398EDA09A
+62A56FD9FF0668FBE37294BEB2CF44785A8F1AA3FC65EF86E33D41619DBEA1C2
+25977D7C98974FA2CF8F552D55DA8EA87575774CC6CB3EDE9F6F0DAC189431B9
+58323A4CE3668D79D8B163BF08E4E85B9A4D93E534EBAD4039F0FBB3A43A17A1
+C9898A1C75CC569784074F20ABE85231DFD859D712C181A106C86AF21ACDBB25
+D4DE1A3982C7AEC8B93B596C49797D30FEE9A3A6195BCCEDB952DE695675FC30
+639FC6027BCA9A6A0EC6D01B0150BD0B57988DA1DE10AC902B1F29E7E29A6BBA
+7B18C607819DDC53646FDCFDDE54A496775CC46DB45BED9FA297FF79B870F99E
+0266FE50ADB32CC6D7E590D99C0DDFF0F1CC104A8BF44C47B31A56441C83F443
+9BC6200E5F0FBADD5846EC7C8F1DF1DEAFD7F4AADAC9C2540B4EEB98AAED1180
+0E632A23D9B53A6EAE41D5EA9C51EA04EE49458CBB0F496F84EB4CEBE0349FE0
+9CF81EF8CD856E92EAC893FEC03985B1082176581791FD5E89EFD6400729F36F
+8A7D873C658FAAF4EEF2865133020E49244CF4FD8CAFBEC08794C0027DFCE196
+E51C62BF45A599545814BC448A01C475A663A4497FC420232FEAFC83CA9A273B
+99BD564032CFE2E4CDE6E5170D30D8CCC00EB65AAF766896E3C81157EA379722
+8953EE3B001DA3929AB84466079BD1647FF2C1FA077AB9EF5F50AC908CF56F1D
+EB6578F87451C63AF8FCFBABC67537ED44F2E84FF1C26B376441EB0330DD16DE
+A7B23A4BF434754044B8C067FA64274732235F6AE9D36019D21C3AE156026AB2
+34FCF01844E0125CE72F305ADACFFB9DAB8DB3EA160925A7883CFD31957ACB1F
+D9E925B6FE72AFEB962E671622195A84BAF7008884DC6D2F76726DDEE0A926A1
+E03839C8FD709CD67EDE6D958A2625B53F1281D3246989BE1E91A63E481CE8B0
+D4E017B8572DC6F4DEDB07AA1308CD43B21805B776274C1CDE2283704C999AE0
+E992801118AE7FF2A9B38A0A56668651A008194011A06E83B215AEDFA044ECA8
+6E090F90FD605AA6FE7DA41B5A8F77EC688D3F427558ACDEF2775317C617DCBD
+A0382C9F8DE1D76A9E97273014FA37F4FBDB658528358C95E67245670B399EBD
+14ED9348BBFE10232236D0DE2FFC241A0D5DD47E189586117A4931235EDE89F0
+CE39F4311120E517EAC1791D19B53C60FAB31AE7DF52324E867EEA2FF7F57EA9
+52B9B3A92273B6C430DAF4EC4E66FDCA57AE283EE146CD7584EC6E3E15DBDC67
+3DF6FD613AFD83223B2C82B9550662C2717338DF7419C626532C2C727C7EC9C4
+67AC4899CD0B34869C951468CC73053EC8EAAEBC043D7344F7E1151FDA9CDB78
+26962B6F8EC149A06F4514233FCC29F59AE870CABE8EEC89BFB8A4FC4C048A15
+10E85357D4D77464BF998A5548D594DC1C0E170736E3FDB4837CAC26D3F57534
+D7C7176BDF7DD76AC35CA91FE0B8C0FBA17C3FB4DFB9A0BC6BFAF0B6D2A9803C
+43024BC30BE59525EFEE1D61FEE9F4939025FF68A6F213A7468503D91CA29DA1
+DA7F23C07212E6C7E47AFF9003392054EF6ADFBD4D4B5230BAB2F8E365A13A8F
+2812EEB21E62D7784338BB44CDF1160EA74CF9F226ED1837719F4669632BE163
+36365F8D5725D144CE335003A7E91F625FAAFC40C6191F683F33525F007CE77A
+9ED0F975C38F42A59D53290BB8A9D065FF4FE8A37E87AE2F1A1C05CDD99378FD
+C3A3323AE26EC31EDF8F66DF7C3E22659437CBAC1BDC32363D9B0CF97C9856D2
+C02A27518CD2156A5A86429BB103FFFA444BCB9F3D6AD1A67AD15CDD2653E787
+ED1FDF94B3AA7B3B2C8E42E1D2F2D5DD5D5B8AA2B05407FF0462781DDB6C8B7D
+C29E8C07CAC763DA2681F19110166FC4A3F0F48F83FA1D8F903A7CD9E8942AE7
+44F608002B75C61C04D01897382C8C61985614170F4603F456FF710E81AB606D
+E1445B1F229788CDEC02FBA2ED5ED63EA09CA3CACD348123264D2E42570406CF
+01B0D26B6C8E1F61E13D7AB33DACCD73243A64361ABD00EC00939D3E2024E524
+ADC20AF175E99971601F65F0069E2F93EDE2A4B0FCA92FF2DDF5F62D8A366CAE
+988421FD7C8CF5CDE44A8A64872B547ED08A5DC14B64612E2B531C5DC438AD42
+B01DAAA15DD042A061BA0E0C2A15AF7B4F675C614BECA18A9DB7AF3885A2ECEE
+E73590646DCF1C0E637B8D41C677C0416C08837C256263D1E59D7F77959E8C4C
+5E35D6825C95DCC0BC3873B62C2DB0C1132A2DA3BBFD0B79CA3F2165EC0753C5
+5C5D8B6F9E5D0D09EB8633CA00FCAFE780FE9FE75A3D43EB9346976473E884CD
+6906C68AF30D9F7D3CFA4D02083B582460AC0D6065202ED76B2985CA2B3BE3F4
+7122B5E5964AA5203919E209644630FD4D0CEB6E609375D50D05C9233AB1A0D5
+7807B462671DFF0BB1087126F1964A519AB79C62AB8FB64A98688EC2B2202AB0
+448E7BCC1B797F431B49456B62D6DD7E013DB720DE07CAD495B7B5B4F97CB0CD
+CEDBBF1152A9DC207B25E5A3AFCC4C586CAB571F9B73A0E6A4D81EBEBC93CED5
+95EE5DD0F42EB0B536CEFFCA70C4A44BD512DAC07B37A88A54519884A3E0BC69
+0B460002AF91FE2F0D5272129E033824C228701F587B2AA2022F4F011D5F45F5
+75EFF578F1CC9EA572A5C894D4FDB7214D48DBF2FAEF95BD3B098CEE59F264ED
+AE5E3AF48E4E389F15E73614E959EE0E266A5C92C75011544F16A83A071FDE77
+153933C67D83A7EDE8AFC050FBA5D8FFDF7335EB3DA6DD40AFC6D8314EC3E8DD
+5B2328E75DE1DB002FAD6AD832ADE67A95EFC21A9D191C8A3AE874E2741E6737
+B1EA832C2DC88FEBF689B579DF104892907017C54BC7FF5133A101868D714DD0
+B47FEA6399C608D6CFF631FBCCDC41840339B2E1248AA8A5C06A2068CDFFF253
+3014629558FF935F5409DFDA332004A9AE93E06F840C452DBA0CECD628E58267
+F9167CE246A64FC554425FC08472D349CD92310CF2221162488712A1EC75EE3C
+BD19666DFC3BF19054D8EE6B81C994FA38DF0F13867D5CFD1819908B16F43738
+7293F7E6454499B0098DE9E3D6990F95537861C3765B36B570BBDC7F5E7D3C66
+7DC5D30748BBD089B1A9B234D62263F6C2C5B643A494B2274C95062F9505A680
+64E1FF9189F382EBFFCA2A29F746808CB1513A08B9EC1BBA3E895F569723BEEC
+3AA02ED3EB290C185297507BC8A57B8FF2418532B23762C95B8A56373B1DF89B
+590890ECEBF1B6FD24F037A80776835A576A0C9A90F1EFAD1350CF92C7DA91C3
+FAA0077788E53FD9AE446BCC656F15BCBC0D956DA5F45BE7FD76CFE6FC542378
+B4A439B042E74C8E15B051D4DDF09BD1E967AC20D855A3DCDFBE74D720573BF7
+F9A9A98681B3AA5B0D9D17B2B9E43D6F09CA1B8510A3AAD2D66483FF0E863C2A
+ECA9EB7010CEA7A431CEBCA82A0FA12655A189D4CE5148D6D6E7102361365675
+5D24DA00F593DFD8F6C1CA0F19E675D71C75D3B48697DBE695EB99DCEA180530
+92C7ABF8BD4BA4E0A961C6C439F3FA2F7E722090F98CDBD45E61199A25A4778E
+C22B843A04CA84580DBDC711E334A00780F63549B32A467ECF4E23E87819F25E
+8F5781DF6B383F5FBB93FCC882DA7AE7201811A40D958A405812274759EB579F
+E93A5D56AEE7E3D3361D3C95D3E8DEEEFC89FF0AF06BB2908E7B7E0085DD42FE
+7581A65CB53A4F5AE7DFF2EBEC1F856963B4A4680D9E44270B6F65FC1D68349B
+2514E355815C5E1AE4DB25C85949D14428F74D79C097BA31E65BB3EAD1C9C08A
+0871B8B28DE6D7FCE097610C592952F2E80AA6B52811198E98EDFE8E044CD284
+1BEBF2F8C2C458D7F1B38BE0C884DECFCD8B02EFD7C83372BDDC3456F54379FE
+73937349562D8778A291F8BFB45EB38F3E2A5595F7CAD8307B1200EEFD876DBD
+BCB48863ED0DCC32B0D84DF794810AE682FE485B9B9E51151DD2BD4458E5C16D
+C4ECD52B954F50B327611FB86F226B5C53C141108758B924BED4BA1934020BB6
+FF33F71AB77797C7A7699A5B08BE46CE3EE3389E8EF235100F2135855A70D28B
+0BA408A2C28C9D8ECED4548D9E43923E45C489A001BF71030D5F9BA0BDCD4D9D
+A090C8706CE43BCE05DF4CCD2B726042B65B52D0CB1A5FE71CDD8212FA710E59
+A3E47FDF4B9CA1AD7302922F76C19C5AF4EFF3A6E4BD5E870FEDACE6B62FB2D5
+2EE76DF4F06A3120FE7023187A7B169F0A67E461917B69E2E13E8B76802A0E2A
+DD5FA5721A51720422D549F8F1ED065A412AF7333DBE243FED9EE7F028280DF0
+942C261D1DCE952000DA6F45A7DC9B28B357A06558D9F13848184E1C1C9D70B3
+EA7C4929AEFA327ABEAA649176BB634F462D71A141AC05211F20D12A288CCA82
+BBB8D3670FA38EBC170EE5BBE15C0EDA733B0741A590C7827A9E95EA725F3A18
+667CF5DDD40377D47CEEBF414DD01C84FB3D6218B7F09F63222EBB689CB16BEF
+23691A379CC3DC5F25EBCAD812A784ADAE27C1B0996A921BBC35A267887AB668
+271C76B134225D66352754E6D1108A67DEF1F6E91C1C18A231EB2C571D091AC6
+7256FF70AFFEBB18F35C10ED7198E4E9FFE19669742BD040C85F5CF6A5A1792F
+E910B07549D60BF4C6BAFE994FEF823424B4D6A435230CFE62473AC4363D5135
+210232C0F65669CF3E175A3C15EC9C8B8D4CB096C7DB979ADC7B111CF9DC995D
+D7629CD94609CE60ACA31E679DA1CBE7F794FC8FB5BD1C0418717356080E3833
+FD627F7F7BF89C64DCFD462E2B7ACB9A724F9D2AA2528B9F207A4CF74A05EEAE
+595ECEE7965D42ABD654F115F78EF26F9ED9A94BB4B506B20A3435D20BB02B38
+E4ABA7D9AADAB6C5519CA42483378FDEB0F7DC375D8CCB308AD7990C1A3A3AAB
+6E6941516FCEA0F1350EB11E1DB0B51BB8F00B571FFADB726F21B67E7B29A7CB
+E6D38CB4C1CCFE95A06310405FAF798F92C82DEB739394731FAC8481D63EBBE3
+633CB294F60FA468A31D5BA0B9A8D0DC085DCB39E8CD72A9CA6161985CB4A019
+D9A9E7A10328B028D852DBAE7F9B82EA7E5C98CD16E7C46C5F94959BCC80F8D6
+9889F36B502FEC34D118FD9AEA1B0BAAE0CA2F78F65C87B4776AA32D4294DFB0
+CF82A8C6B55A74C53C6D34C37E64C10CB3222F6CD7C6A5C8FE5F30BCDAA0F9E6
+6FC2DDB07A63AE6F2CA4882D0D586FBA00CFA94696EE03DDAF6E77AEBB2025E0
+1914DDE86AE19E4519363397C67558C126AD2DFFD73DE2EC90AA37205DCE393B
+78E59B2A027667EBCC3881716A3479F65AC9E989AF7142C8F1984C423A52BC7E
+BE657159C073A443F7BEEE4824DD61755FF91498B49F965021367A7D40D0B2CC
+D65A3274C0B27F507480A8FF3E2688F9265400F03314E85B12DF47C8D74EDB85
+AA0EEAB58BCB40BC724630FD23F51FA37E74502E75D125C5E0CA1DC96A1C0ACA
+CB2BB037A59815B4F44DB0C11DE01C23A2670C4E2A3F7D485C407E4F3829C35F
+14CDC22715001C4AC06F50B73AC5B1836B6D5C0BDE46E327A65D8F0F761F3771
+F77096751B5F016AA26F866DE68A227E946E032AAE0EFB3DCF856D69ECD2DB30
+396110DD83C76821E2F0B824B3C9486373DAB394DC3E7030EA151CF3A3943DD4
+0C46FADDAC2B500B5E8305056FD9D21B65D0C550C21282B01E891CB9C2060EA8
+6A8C42DEC32AE007F9C1C4AF702BA660C3D4A4DC8471B981B262C4DAB4EFC2A8
+0B7BCD86B92C9EF56B4012DE355A67BF347DBBF5381D6D1921EE083A24FBFA58
+EB1380FB34D6AB0B05F6607CF92F4517459F733A7AA088FD65F1DD661D779CB8
+F7A2C8B58C8569330296D9F3A987CD2C383F261DAD558800AA0739AA0419BB0C
+7CF3140D6EF1FE7F677E1FF938F82602C05197198DE46A9CE5B5F9817CB0010F
+39ED8566A168265C15E9363E66DA34C803BC59107C7DDE6F8C8E8A1B39743B29
+1723A9A9F56C2346E856EE7E5605008975039A6111C1B4AF433413F8EED29C25
+C17A951DA57772EDB0801D9C4123731C1E017D3F114EDBADB27E5FC82EA0982F
+306FD46BC335CA016F5C5DF63C29DE01FD00089963F95864FEFA0713F86C1AD0
+F3AF11ECF5D752D19877AF0A20BC3E58A0EF55EF881F1845237820716AADE38D
+BF358B31F2FBC6BFD60850913B650E8BC35174C7B5C68A205025C7DB1717AF82
+982D9DD01D396F2876C0B780FC7975589799AEF5D946F5002FE57DF9ED7D6EFC
+368274302EE209EFBCDB1FD3DD46C47860B8F1A228C7BB90772D66135420E4E6
+F9414E524B0DC392CE36413C3339C623C1692D7C0841F2492D9ADEB8AF6859D0
+D8C72B7BDEDD007864B0718B187AA40643F53F054EAE49C577D0B2B644F78F65
+088D3CC6565A1C067E63609731364FA9067FFA01BA1F8B8D82A331D4087A93C5
+B4CBBF75D523BB9D77655880F0ED09CBE20053DE63964E77A48F2C2535F63337
+16148FC945DD798FCC147F564364F3A4DF09E7EE7E0B0253286CA3C573FB9925
+1AA2EA9A8FCBA9E6587B160DC1CF7D7E67F47E15C0014A7AA30EA372D893AF2D
+BE297C9D2BEB977069E33DD533EBE99BCB520C748CE9C4A51D462AD740D1BE85
+6A2085D0DD1097F1ED235F00C1C7906587E9253D7AF66CA4CC22C0981720CBC8
+770E0BBAE73B7636A2DF642DFDA0DE233647B185A5BC4822582BCC8F2083ACC1
+E9391646EE586C53DE007ACAEA74ECBE74CF7F062C73BB60F1B2651DC7B5B1B6
+D53C4DEB4E78760FC7159C4DC73B0C1F6D0DB4D70F75D36763D4A49F5E42746A
+794CC2C57E532336A6EBA76DC86618193088B93F7D6C40CD56FDFB2B5E0AD779
+BC3867735CF71EAA51578956E1760F49C3F9DB1A58D3C811C74DB82848065DA5
+0FCA863047972AC37B148FB1F5BDC1CF3130E6FCB64AEB6D2923921D9DE69931
+DADC9C1F8A9F974CA3A324AB4FED93D0695259A61375180378639E42DAA0D9E8
+2107B6D9328DDC89C4697F0C0FE07CA21970A53AF3D9BB8AC32902E51098B060
+67D5665C4A428EFA08C4F9A987A0BAA79175A1023D0F1EECDBD77EEE55CE1C84
+7435145DC7E81D8C0017C2839752F39C6DB97DB1AF28384DBE929A209F016F6C
+197EE95E0F7440760E4CAF2C5BB40E7B26A7414158B385DB84ABD02FC7054B6C
+E5C9D9968E727688AC802B5750F7BE27D92D26C92421B058FA0EDA43CDD02F38
+78868B6A58E698CF14D982E3F134ACB20B824E1058593074CC3E49FB12D5CE9B
+9D4BF81CD1CBDB8CDCBB1A6E2A8EB38CD5CE9A3332D4A399B0D58FC4709CFF46
+EC32649DBE6F511B864890F00C1673A8F1B82AEE2ADF6125D87502DA2330B718
+09148FA7785A6BDE2E6690AD6A28CB389FAB8249C6E243569243829C8F9879BE
+FC29EE3808073C21923BE59BE768D15FE1F9D2CADA8EDAD89EEED23E9B2AC20A
+4A0E044754A62EE21656219EA54E66D31BF4B9ACCCB9206CBB9BFC94B20D90F6
+F7087788401D658BEF854D6E6CD3FADA78E7CF507413ADDEC56D00AE40518C39
+5036AEDC5A0098AE6667E82290B5E728565330ACCEC7F55630667335E9BA945B
+E961F4F3C7850DD2DEB8F5D7A080DD36838D3E4F1D5A0DB88CDB1819988DC67A
+9C4943C34AD435B74BF783386EF2DFECED904B778CFBB4D98FAD7A91679EB575
+6E48B3F3BCE81F3CDD24CEFD1C76B109726809679D69220A426A87E49884950D
+342CCCED279B166E41A709D243A42D2621529C6C33CC21333D376387585CA01F
+2B36C4D2BF3AF077B5EDBD55BC06D6F973EF4FB8454F518C4F49DC36677990C3
+F47F0C5CB73BDA7CC91A2086A3FC99C0C75554DA532148134028D7E47B59DFEF
+69D31F6F67218E51CE01B6046D0B7128981E5D6F4FD5EA423D8F20C3859902AE
+C6CE0279870B7B9BBCAB0898528A0350FB728F082B941704829E34F6E231ECB0
+A95AF2C4E2E3DE52339902D3CE019FE6CF9F25EF965EC4F6FE37C36089D05CC2
+33730B453D84EC0DFB7827BC643368AE4894A2B2E51BBAE60039B3F1BE1957DD
+A5BF893B29AC0DA7904359C97CBD075A5B510525D6825EAE1B9A4D844E56D3C2
+DD3059CD01D67E69A229CBEC58356A0A83EC25646A23BE669876A7CBDCE9139A
+A4A80FBF1E760B8670BEED45C4F48C9CFE5E95F7CE875590F5F7FF39166BAD9B
+F896B3C99B3FD7F253E783B69169BA7D2A5E4AFF51C56AD761CAB4184B7C34FE
+4C2E90CDE05506844A2E9044868CC8997E8650AFE300F06A09674EBBC1D71A87
+61A0DAF0CF08F431C26BF2CCB53571F8D30E98A7514E96F5AD7844ADCFDDC4CB
+ADD027C199C8AC1819234A8DD4E35E9BAC3C7BEA8A9D1FF485905434474FBDD4
+087560E03A3EF69ABE946842135C344DDCE0023E3B5CC5DE6C0939899DD6DFD4
+FBD3BA17CCAE5D8EB42C25
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTI9
+%!PS-AdobeFont-1.1: CMTI9 1.0
+%%CreationDate: 1991 Aug 18 21:08:07
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-35 -250 1148 750}readonly def
+/UniqueID 5000827 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E3948FFB3DF7BFF10C9BDA4EFE5F68A8CB1526990D1357AE6D2F7C2D2EF8496
+4E47B39E6712EB8908A3265E5FAB40567E866C244814449F1E993AAB422C3F1D
+DFA8C7118584F2E5197FD4BFA3A8AE9E953C6CD4672C0FF51E41C3A919749C1A
+F06650DF4C5E17492164BDBCDF22609A74BFA7F69960A64B9F949FFC2A807458
+8579366C4F41BDE1FDFBCC4845FA19BBB6963D65EE8532549274BAEBDFF24FA6
+03235D1BE37C06B1938AF369DA75BF38DDBC87A1FF445EAA16E1895ABE9506B9
+211955753E447865D33CEF007391D2666A046277A30A49804FFCED3FEA5EB2C3
+E52EE14A9F75241EA10C91974CDA6236EB840FD44D6DDE4D9B3266C3B99BD38B
+D835BCA8CB819C073480FB972CC028D218F6A1D344CE1B63F4FBF2C826F412E1
+6E0B05A26125865A14FD7B7030B478BB8BC6BC395335C3BA940E1C348267F4F9
+0AF97BBEE253511940F1048E175D3569F7D05A28851B6F50765FEB6C9654FEDC
+1BF52F535DB5BB90C1BD5D2EBF75E0AEBE82B20507F3C28A03746781018D4EB2
+298E4F2C27ACF73FA73EBE43F014BB575AAD516C0407B29E1653375135ECB74D
+C91372F06FA8EF37C31AF3FA48AE65318EAA6C34830A5377ABB2DFA5DA53A574
+433484BA1466709A4B186761655C8E482833B697673E847C691079E7F1DCB8D6
+1AD91101D757B83E2090337D525AEECB028FB3C9F6A6E6AD2F322CFDC5A833E6
+1CE4EDBF41FD34FD61630581D222F854A76C2EA9FD72796A7C9CC1F6C2FCCD16
+E95CA05826A4ECFADA6A5FB83C41A7131E52BA6585DD6DD78515D8F7327DFC6F
+9404F89293D6ACB433CD0802C43F0E74C6C4766A23A6AE3788FE6CAE82E1A104
+BAEC8BEFDEFE4F292F625E60362F3886F602CE4121BF0AAD93526314BCBB5971
+40091A7BBF7EFB3BA355B88C897D9C70C841DE41309348751EDFFA8675215988
+49CB1599834A01EC6CD4FD813AFF97A614F56975775D5F48E9C1A9CE532FAEB1
+4EBE20C3FA87CFE03664C428BFC5C894668E507950005BD8C2BCA8998C1FB92C
+4E6B791BA05B79F332EB8AF5B0F851B8B7EE372EC0861B09C007CDF43F82D0B7
+35446F682A0DA7F4112CDABE4F922EACFCB7B8C88BF550B60957E7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSLTT10
+%!PS-AdobeFont-1.1: CMSLTT10 1.0
+%%CreationDate: 1991 Aug 20 16:41:43
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSLTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMSLTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-20 -233 617 696}readonly def
+/UniqueID 5000800 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0528A405DF15F03DB1C3DA8B850431F8
+0E5F73DAC973450D1ED0530313057E971FC7E7CA88E61DA6DB9A5CD61F0F76CB
+4DE9105D0627B8DDF51A655098229920CF429CDAFC3F7788C95E7AB30E84F840
+8CED52E98DB4CFF161D2E62B0D28CB8B0AC82E7A8D2C007953BAFB3056D66079
+8064956E257D31C13509FB81A250D9E875C77A4E91CC49E9FB3C0718B2F691D4
+B4A64F351F4DD68133DED7629B0D96E5124584A16FD2AC7A3EB244A934FF059F
+ED7297B0505F3C2994AD66A3CA5D2728B034DE94B64A8AFAF341601BD4DB5858
+C9950A8BB9C598B8960609F48116ABA8C007190AF0ED335EB5BF61BA6871FA5F
+EAB5A26AEB5C7C352EB80799CEB983F19EEFA801093F62086AADD0B80BB6580F
+2CF61B1390FA56DFA1A0B61C58DEF96BA767A8A37EA44730783C600706606C60
+4EE74EA99B7C0F8E2525C8847F3D31907C3C483EFA98F6C416B6B2C343DE6370
+52FAE423008D086A76A1FFB327CC7FD84B1C66B203A4F41582F4599A82F8362D
+38108452EACCC937FFC4F3ABBFE3628DF51367DA6BA3F6826FC6522D6AC5E8EA
+00BAD300FFB6DEDAB93237704202BACD030AA824B1E97C0AFE17FCE8C75F4FA0
+B8A74329A6CF1788C7EB34DA7307411E9AD7ED8D6582884456E06E033B4FFE7D
+CD4DD8B06AD01340CCCFBC382C18CA451E4C886B01D082FF8CC5793F4727C3DF
+B52B4F1A242F31D1EB79D1E39A1D4FD13D6C5E2A42AD4B4D1CC4EE7BA0E5F80F
+802E5AB57EA15F4DE44D82AC408AA86D4BF58EF967FBC6497BBC7F017C0598AE
+32CF865DFFF0FC7FF9E6DCE9B5F2F4C7491AC674F46E8E7660452CE0A77C1EE8
+00DE382ABED85350033EC00053134DBABB69DD3098576DACC5D1E325C4B372B3
+943F8E90BE7B97B996D39337ED6D90F8041298B7A27B223358A5161FE98FA4E0
+6879524934E026863F790FE3B5A8A41AD2E91866F81B195E0A02D9BDF971633F
+0FE9A9BEA04CBEA9E46AA44C31D694A0AF3D7CBC1FC4988F6A81130613047150
+12203A85849EF4D9238604ED8040DC85FB0CDE867F50EE685C8B2BB0574FE22E
+B02F2595A161E810E2C9FB46B3E15BF0B3E7591FE9CCF7689B1988B354D81E42
+145BDD9A5C21B3E52BA1F1CB76BCEAD38C97D40F1FB50C505B0FC423A1F495BF
+62332481948BC331BE6395DB78C35E5DD1B55E92FD14F1943E73B157F5E5C24C
+AB2D70824FC69C818980EF3954F79FAA4E946064F55D8A62723694E4C489A1FB
+6A082DE0BE740A145A71F1F9FD011E558E3F27DFCCDDD49DC348707DAB524EA6
+88370F288567B17F313D9EF6300E8D910F49A4E9E581BC95D89B84E2591EE3FA
+41FFED57028D28600F1AEDFCB752BEE359856AB8F776A166C83929C17BA13600
+0A5D2447AD901988E5F5B6B9D710080392FEA79CD595FCAB7B9B52C94E0733A2
+BC63FBE36CECAE723EBAC3BDF4AAD1494B9F3D146F7E3DE66F77F6C3636C6BF9
+EE6C73AB8F1E98E043710DABDD1E9CE6E3F5FA8F44670AE15BF8FFEF72E849CC
+A9E20CBFB577BB42C9D842A3812FD73D0E26D592ECB2A920986F623184ACDCE0
+90610840699BF7302E534D6F9EC4B007E6CE4D8D07BF9D4F486C503A3EEF3999
+50E3A7402046E7C08AD26751A910154284312117F6C6AD506038B4A5A4E1097F
+26241689BA60A4B2E58103089301AEE41DDEEC60CA3ED74B2E838AC0A86E355E
+EFB46562208EC834133CACC4A6516B4378B8C3F86083B18AD53C3C1E13200B8C
+6F4ED7346CE480809EA316BC70C5AAD4FAFBAF995C7ED82624552BF2F0017E07
+51AEEB8E2529CE5E24087FF3F0921DD9963AF7BCA9582565573CB5A463C4A5DA
+0F1C8A82D76213DF461AD578C25340C4178CA8A7E99D85CEAF6605FB5AC336AC
+22CE77D930F859E0089A09D80C694C573BED5448F793FA7A3A977AC2EED1BD47
+7DDE4D72B9DB3828175AC20BBA66EB0C3D1CE9931AF3B5FDA9D9CF3C67E65CB7
+439F5FA380AFEC7DDB17FF8468D03ED4E99C507C3312E7926A5650346C44560B
+F729A594E0651F7BC3A0EAF5C66BBF27070CB1E691D584D48998189152D78F5A
+E2FFD2C517BA7127DF128CA5DEF2576FE2BF61733D5F3C0972BC423E34C102FC
+F84E33813FFB62ECDBDB494AD6A3AD2C9D1EF30D11031EE57D8F7775A6A0400F
+3EEE57D877FB8E007E4B309412660197770EF9792605C08668F694608E37BD9F
+264A298AB09C2A6E605C6A6BC523197E1F87DCA1150DE1A535C327CF09C86A3E
+2FF9FFA2C5A12E2C4F1DFB00BE313BA13F80379EB70873D89667D0E274EB43EC
+69E1D140DA4D02C8D2F8D088B2BF240EB96641836FA71EB749829ACFBAFB152A
+E67B9428C24006EC9AE92BBD00614E4FEF490944C906EC75508730FBD7F8E439
+1FC995C07CC43B83E2F4063A30BAA9E1E7398C250368C6E13BEDF0F14E6EF31B
+823FAF0EEC9A2F745125AA099110843D606073A374E97AA91139C190B0992CC7
+07926D8F9F04132B6C629B6149B07229E3774AB12FD9CD2917E8162D6F4D26AE
+99AB9F015A6C629B094E6C98767B8903678EFAEE09BF1C7B6F299A0821877171
+FD01FC4AB79872088C954ED616FC17DA91B76F33BC8AF20EB81BDD3CC686C5D1
+E28ADBE191E355419683D64E7A3C9F78C380052F9329EA6E7102ACD7D5588DDA
+B1EFEE6F0E6B4378D5E7DD88163141E47FF011C056319F8F8ACCFDCC2F352696
+3C04052BBEB16682801F73BE5B988BBED6D4C31B5D188E2C1D42C368BCF81B7F
+363189B07A5056FEB84F7DFA5186E9DB319854FCCF6AB41FD87EA5C65C66201E
+00D743116D2F0B799DCD60FF0F534FFA92A4B8073E12245F194D9DA9D76993F6
+A17AEDEF24027EBB10EC75130081B6843C302BB5EB62CA40186F2E9E4ED17296
+632B085C31B432E748433B4FF2F1CD7BDD4E6B1E6C0C369DBCB7D5AB64D2D275
+D93A35F54339DE4EB8DE77418B977E50D459732048AB32EA4CF69DD7DEF04CAA
+C22F16BCB3BE34512364791EE63E29B5733401C8F5A847764525E1B14CD6CCE1
+81A16F9FFC6D5B37B293938F0555AF9592537F4A9B2AEBE9EF766921DB1D2B43
+7AF063B20D66F4079ED13B0FA60EB782DBE17C5539A1A5CCD335F90B489E8C68
+95C28F9EE0E36BF385C0D554C681E5D927017B7DAC58A4C3442BD015892BB7CF
+51CB250208CF5661918B5098017CEA30B5C0402C155D4A8D4935B92670B333E9
+BE3154BAE9CF9BD47D79FA369216E2F3F0AA37DF598036400107B60E25FAA284
+87BDD4BA6459617AC77787137BA30F0CD07576E66527BF4D39E39E4AE54508DF
+351035A3A1BFFDFE5BC76222C8797D78723A2F3A69042BD31ED69F88E8F6C68C
+F0D8EA3F36AFA8ED13EBB95ADD129E21932EFCE965F89A399970F30011AF367B
+3AD8089D6B51E0DDC6B95F56435610DEE2AD9D8A2FCCD9699663523754C23A6F
+774F44816FECAC1EF43BA3F9A1D69CC5457482E07B1976EFE7A7FAA60579B95F
+8DDABBEAEE10353D72759E316932D064EF132FD0517BE7009431A5C185CF7A1B
+13EA10A69449674E950ACFD367713348FDBAEBD12AECBFE70C4B7FEF702BAD2B
+19DB97450F38E73B2784E98FBDAE84D2C3B1167E8B85A1ECAC09E62D187A3043
+ACB93A5701AB9E66F25BC7D103DEB8161FF7DE5CC957218F0D279723DA4377CF
+A08BB2B08218D5F62D4FE80B8EBC3B8B2D0847C561A2A8A1F09EA64AEC9281D0
+7BEA4DF7C7ADA40809268E1DDA46FB41216DEBE3C971CE51C367773F7492208E
+E7EB797235FD349F6BAD6D6E4F99C29F5A6C3C87D6662210AEB92C0FD64B3CF6
+AE2DF93D6A6EFA27B976E3A91BE80CCC2E7A1F2B90E1058F8AB9FAA0CF87C15D
+AF37C5EEF32ADACB6FDE08EB99F62F9194328C09BE10B390C349606AC58C167A
+15728318A475D8F402E294B0E07FBE936574A0FA09EC4F829794285AE3150269
+91D07377024ED8EF474898744B82C693B8D9C91E1A9011D60B34391564A747E8
+57EFD30427B4001470009229591EA924C547FD154E16646DAE7BD115B0C8E3E8
+BA8FDCDADFF9A09639A4B9FEB1B9F5C00CA5C87C7C04AC37BB7692689C832071
+5FC338C4E5B448BEB3B9F60394B6C8362D523E10B2DCDEEB70ECA04CC1C7CCDF
+2827E3A40F34B70247CF6C5D3A638896366D4A28FAA2B1B98F865626C69039FF
+3D54638C23EA32624CF10216A10D83BCB734A09575AF1B41A26B18FE5AC7C89F
+64B70002CBD12AA01EB9BB97EA993BEA9FA225552AD79B23ADE62D47C48BE023
+AB1ECD12E6D825A62962C41BC108E8E7FB37B976A4F826C12A59E7CE61C6CF71
+41F24BEF3E29709C371211809636651F02BC08EACA9B0AB2632DBD5D6E756953
+5C4145A7A3A81133D237335D202DF3673BDD07F679F650C67066ED300205584A
+26E444A3731355C11FE972E181D9C93C6C29CB8CF542CAC213D9040EAA05889C
+8C6EEF27DE0846314699DF54E99FAE310F11E3AB9005C432E5208D8BCE1A37AD
+F2D7F3289C7C564A24B951E0AA63BC60D75AF80428FA27EF965A1600D1A7D357
+935589477B0B5E12EA0512C7D219561F91A9BC95580D4CAEA7218F8B1045D6E3
+FABEA4A25ED4453A7773D2C314B8F156249CA4AA102AD02343E5BFD0396C07B3
+14DF0108D25FFE8ECFA22D7C5DD91D422A399821E7D910FC87B00544E53AF711
+E98F45C4329FBDACD3C332454809DEAB801F6DCB9511E92F235E1A17EF8DC8CA
+1C1B6217082CB95C1A605D7835741D3DECDE9202DE38392B18AC147608CFEE8A
+BF21E6DE2429846EDE6CA2D573C1506039E9AECF0A52318E992EE6A2F23469AE
+C0CA4F3F90A79E610E4928D95D0210A30E9DBE65B841D16CEEDB1D98FC42CD3E
+34426D5FEDC316E922F98EDE044DD192037787704B1206A21F759DE304972B60
+36115A6DA1512B38FECB759432F3A3BCF3DF0376B5F8D478DFF2BCEF69A3BF3C
+7A65C734EB54BA16D2DF4B7D12F646DCE4FDEC0BBBCE02A623EEEEB4C6E81593
+C0A3731B901C2D65F353937FB0CE821490398DD73B24EEF7943CDB0A1FA1EA6E
+6CDB64DDE68377298A655116C02BC58E7A1401024394FCB4A4781BB0ECCA339E
+7E8890D1C5E5B6549B5C7B42E3C1FE35703B21906A0B9AD51EE5117FAE9515E0
+3C1B82C57BDA12592692CB93370742E5AE20601AF5B4EF353CFA3EF5C92FEC69
+49EEBA22B9129068DEB74C4D04756695745C02DF963F12D7A256680DD052B070
+CD7B9EBB05015170EFA40BE9E5C6A3B6CFC2C2F2A2CADA796B837E0E9E308551
+E95A5D6598D332806D7E1423B0D572961949E322CA226726FB20DB1F25DB537D
+3579D615A955EA323132CF0DCA83AEA15A738111BC420C200067379B0E90584B
+7D142B52915DD2507477E6B6026CE3F55B42B6CD45263637D232FF9106934947
+0F31918EB3FE1AA0C56A67102D3341551365F0D02CFD324627C4C1BA77E9302F
+673FE00CAECDD5CDBDC142E7074631C26258B1BC4DC5301FBD06C5CC46ECC9EE
+8A3FC96AF26D9FAD776F4CB4BEA8A76362BA77AA07F4AF80BA17D6AFC668FAFD
+4444E78E82FE7D70226125C15388F46D723804D215BF2A16F7C21AD0A632998D
+E9023CC75FC816112850565757C5E537BE8AF1EE069C3817CC8C4FD85BA8791F
+6CFCD13667DC618DEF2B7F6CB788D8A039BEED888E4D0D8C41E36012774A92C1
+1B9D1A7343CC7513730619F110C055D61A4FEA3666097E27626F7AF00D63C49E
+C7B65540B1315CF48871455762EAA5EEB3714564E27C3C3F06AB0D5F08152B1C
+3FE59C125EC1EC478957F9C41523DB63EA844B6BCC3F37A7AB39780DA0886F21
+F3DF1BA3D37580DCE6D4E9A512669B1864EEAB35DEF3FD4A9279394E1E581020
+6FC27F2DB0AD5BCF04DD864B8070AF99E37440F80A80E13037CA7C146BE7943D
+B9BC86AD2B250657F97C7A96A551326980E14D16B5470CB75801581F8179BD05
+5A87E566BF2E2BD81C3CE1156E54636F0C0AE68AEF10BC74CD0A3B6DFAEC2970
+2C23166B8BC41F06EE48DE5D6B187F25C74A5A8C6A464CB9E3735320114E9A39
+00923504771DACDE90073F2DA7BA91E9D86B0660897BB72BE5D851F5AB62C6D4
+5709A2DBB85801A8D7FF60B14540305280E53C605121A863665E0A2D47D8A31D
+173372FF7C179A1D1A8E4F6F9B34D274A94B25BBE087C657E09EFC6BA43445C1
+70FAB6A3EF0814094FBF5370382DBC64C4F03CD96364E047CFFFFA66C2D4F478
+9280BE9F6538BE45898F52E2F05D58DAD8DE61D096B08D5A80A65FC46F8FEBFF
+C7506D9EE411E3D68BA61C3B768D563FB9942E0DC5DF82A6AD090D514D682ECA
+C1F50E14EBF58D3E1513909F4C7CEBACFD88102670F5EB176D5F53C9C92C6BC4
+B62C55E5555548B1D649D9A23EFAEAEF97EC0C3C627DFE4C8FD0E1065ADE5A74
+856863FEA0A73BBE28B5EC450596006508EF8FD468C1E2700D9B328684ECB780
+3167104317B143F059A53FBF64E4B7F7DC60B7701AA8CE4B5ED2A6AC991A1E99
+BAFA89A16DE0E3A0AA33022B87D694B3CC40A9D0B346B1080C840182A0917431
+CC2250854A407D83239A811130EF7EA6841A215B02248258FF3BA66DAEF6E137
+088980B04FC658DA0DF60DE24077F71318AE06B30627C3A638D6C0B2076D7A04
+5988936B9CC5ADAA2169F739B8F54AA91B85EB119E5E6894BF4A76E74F96F3FB
+CD6A3E96E85567581B91BE4A78FE90CBB1AD177F3A08B96BEABEEA5BA017B545
+69643B523626A76B823F8A010398229379FC051B846597EC174F3BDBE86AED57
+D29BEF440D0A458A51658A8F11A84D553ED15BE9437F4F0C8D3EC3084F0868F1
+C8E36F3E97E657F815560E470E8BAC98AE4E40DF2CEB35A76859083046CE172E
+C2F0DE76BDADE3E6C9FEC16F42605A41DFA748987D9196C3A8895535B756A37E
+D9E8056F6AE08DAB8BC625D127BD2B1633FEDB2DE282A2F22C0CC0CD45D7DF8F
+6735C77DCFC66730A8D0D5C802E3D3E8A2F7C95BDBC769E9C8975116F3B97C59
+4F57E6CB135B014E34E1B2914AD2C4DB41E573730783F6531347F27077A1DBBA
+FE6DC259D3CD70C36CAD4529DFFD07305D786AEACC8BF3C4D3B7A1ECDCD3C4C4
+0607418948E6C8510C9CFD3E2B93675C81C33D1ADEE32892A47D92A29BB8F04C
+278350E660667BE6139C0C8E1794FC9AD2099F3647BE96B1CBC8BA2F77A0AEFE
+97EDE59D9F9550FD3952449BEFEC5CD25632998EA8E32DB16E6C93A83687C853
+FEF32A49FF372CF8E580CFCDA6BD6E3BD60BE8E652FCE38D54FCB4F00055EC0D
+A41C9085CA039DC00843F9EFC88D12AF8C8826822464926023EB66AF8ECF3F86
+2F0488DAEA9F996FA25E8C8258FCE63B3A6C661BE677D165F65EA67B152ECA14
+0D2E61BEE481BEB1F45F2A83A96E95CFA2E2D076706320682B19F1547E68413C
+581183B679DE75B7CFA694BB4E9D032D43AC0F08AE04416A60DD62682D30838C
+DD4E0897E2D8A178F4A829DE0783312970A8431705CD2FC6DBFBF57FEF332AB0
+5473B356B7E2AE91BF8D1CD9D780FAADF246AC930C0347713F96D82F1EE3BC2E
+F84A6CB140CF7AC313F34B3C1E073501607447C8B8324BA5728A28669B5D44B3
+7F9B38562E61D74CACC250BF9EBC2097167A013338D44F51D036257398267560
+5B4BDF8089C59CC50704DB35FB7EFE08E51F6A7CAD8EEA51C4909F8B22313881
+D90C6CA7CFF8A4135330BF780BE40249052A29934D57F83F6667EEC4A7733447
+B84CBB016D021625AB1B40F9AFC0405DBE0D7394D46595613CF234CD7BA6979E
+4AFFE8FFFB005B3D18A93A2DBC465E0ED90B113DE484084914B9DF7EBF44A678
+AD814A4EA2815C3BB1811109F500738F860EF4079AB3E826C2F92980CDC7F942
+0679A6EE279291C5ED84D53EA15B59EE47646DD51155020EA7DA8D4A475F1266
+18A8C879F4CF3D0562E61122B59A087BBE110188E634685D9E87DC0E5A8D06BE
+98AADB84E98A4428B25E66DD2AE23AB185D95D62ECE4085BE1D4967E9CADD5E5
+EC92BB488AAE7814EDBFCE5BB7F866668CBD8AF904FE4C7699DE9764C96CE74C
+17AA20AC60CD480F562778A95E025A3B98233F6F7EBF2F0359498A389D0F5B55
+8CF1686AB3F1752B18B4A4B1D873DD8A35E73B3A7F08BD152DB528C52ABD9D29
+9BD2DB7F07658D1F7E51D9038CFE60DC9D03FB2B6634074B6DEA51B63A358B58
+1F7096676997D5B9DC7F1C68008B0BBBE13D2FE4CF2BEC425CFC8230D895E97A
+C2C664A99AAAF37B627B33A57B4131959FF07E80E7D35DC9F6C0C216781F0F63
+AD3396D9D197EB54E70288A6EB1C63DC0CB185F08C1262EE0E63ECE4DDE17EFF
+4C074B28BE3419A6A6FB04E0ADE4E61F54FDDD69AC02DE30B9B419975870BA13
+0ADF9F2658D799E9DA2E4AE93C75E0EEDBAC66D77F14097370BD22D009BCF6D0
+838A4434CE9E65A045538BE825C804732D0C98615B724F8B1B6F052AA52851CF
+7ABC84AD999A9EA32304582C04B91B501B9B3CD2A685B9361F21BB52AFBE0496
+2C9DD63C1664BF0693DFDFC3724DEAF49F6B9025672BFC12BA194CC5DF0EF962
+18AC0130436D9D27F66B1089C0B59264FD1A388B545A469D57D20BC3864534AD
+73C748659935976CB0BA8AF81A159B4BF95EDA9C8130984631F1F4912412F02F
+BABFE838EE13FE744CED03E6914BF43FA6DFF3F9314F42BEE02C6663037A3DDC
+6BBE88130E6525D2191EEB828FF6D7208FFECB77554DC41596FC1EE24FAA32A6
+01D701BBC23147AC135A7AF22F8E82C5FFC20478C097EF9DAD8D0465D271DE62
+012B1026F6970C05071ACC483D1B8A0E759152D94E9470EC560315AAD8666A16
+7E422D75CA857276B0679AEC89E78EB6E5603B2C6588A27EC513F6BD48F839C1
+3BD38C5B094110AE4DBFBE728CA8DD44249512B9AC86254D618F9CEBA7C6C544
+967DA6AA44DC0654E581B4CB0F8F739AF8EF2A92B2A359FA4B3A0EA3FF4A8736
+853D6CDA7034C13AD2DB0ED59AA9E6515227ED65E82B0A149F68AE248FE21B0D
+50CADB74A015BA18F6C1E534A626C4F50A379E53B18CB8BEC38298B6FCD95A69
+601D2508FE90F45AF92D2AEFABBB0D0AE51BCBE5AAA96393328FEC03597B4415
+941F0F2DAC79DAB1BBD04F1B9B8CA189F72D15D29C3F7C491FFBE9C991CAFB48
+55E2F73EFB9C3CCFB791863AEC846799202754ABF7E01158F6DB791B8338264F
+0853D06D1230D8B025DAA6095C9DFFF2E08829C7BCA90F6D986ECFDDF424F532
+29033647C954BA1F9C77E9955905867B31E45751F240261A3DF10F3F175DE485
+D08E903475856918194BD011FA5BCAB3C9923CC8D8F78B688E7892107A3A27AF
+BDE5CBFDBB4E29B28208F66AB1456452EA0E36F75D6938312C7D160957E3D555
+E2DEC5B209D8FF62449CBF1DD1B5D7A799167AEE4DECD8E4FF761766AA094FB3
+7FB7E86CFD76979667AE69886C797BFBC2E5AB647EFDE080AAB5B1AF6A20C0A9
+BD705D2B6AE86218C50829CA99D4EB234CBB0476F32A186B45EE45D41785AB77
+434538B55F485CA58FFC35EF51C7C830EAC2EC176F816A2B3F271FCB610BBB24
+76C36D8EA7D5F12845DCC200227D86A640CC0D70F59791F6408702AC7D1DF14B
+F4CAAAB32F181BAC49255BB853F6B082EBFD1CA577F6B6253616DF067F003C65
+88AF610C5F58E8D91660F51E586229ED325C5AE4C82E3187B70E0E59AD7B20E7
+375327EACC433FE34B699AFC471832AECBF19488FE673BAFF48409D24B4AB58B
+1C8E8A561E3C8B28A078FC161655D90609B014012CFAB0F5EB875E9A83D2B88A
+87E11FB574749EC6763D722D8CBEB5F98143DF01AC4FAA1A3B70844E24C92A82
+C864731DDBB846D8BF01C0805A24EA471C6E18C34C756C0EAE281A9F00AC4948
+3D2CC2F22C0637FC8DA5F4A9BBE085757EFB9CBD9E54F895D433E69E579D8ED5
+D8BA8C864142129E0AD170A7D4544ABD8A802191EAF6CF6F5E285404B7D19B38
+093B52AB8112001A8546DE62C64F2605011DF6E02C967E02E340F1E9383043F5
+4EF3E7E6DBAEE40AD431464011B25C8078DE28346216FFD394087F322007F911
+1EE21C688102610F6394E3BEB9BDDBF8A36A1273D6316A53B9EBFA037D6AC637
+BA0B36AAD961061CBD3C31463380D6D13003C5FA5F68F276468AF2CED48A6CB9
+387AE5741C7C79252928D88B51A853B00BE8C029E8B8C58F8C92ED4C74CC8943
+B4D89282E7160D532F9F22007312EA18C33A848E4248204F776F00D46D483259
+CA0104174D2F5DCDB64CCBFF60977D35A6CFC2CB3441EF966D15C7AA462B1737
+0079B920361AE754EFF71DBEC68B21A885AB9A61C653841B9A9DAED199F33089
+C560C28FA29073899466B9BA55EA63439B4D675811D5CED006FB6FEA2674CBB8
+ED75493173B82B70ACA4C66AF3BABDEB0B43F1E43583D64EEB11CC16B1F481A5
+68B11795DDB67CB33A03025AC2B215D5379835A32CE1D4E327EDE5B53FA360C0
+399A30E2DE611B64862138476D68C9CCF899FD89B5EB8E155733364FCF981F0A
+4E14E79325210F6C3B9C594C1B8DD2725DD694F7AA30A48735D69434C650AA7F
+563DAB6D793E70767DDF0EB615F44E56002946E3506686BB09A365C31A2C38C1
+E95E601A0987902A54BB1743D9EC5A5C496FBC987D796B9C75DAF3513D0C2685
+F315A7E3C61D75C661CD4A5B49297B16C1FB62104F0AB175DA178EAF5B63C026
+E99E23AEFDC25D1C93BFB7C9182B58D4A599B484616286CFC0C93425DE11417F
+7F7BC7B05E6F8B2E3E37383BE6DEC107EB08971A6ACCC66AE172EFC6F529DCB2
+4D478FA20742410A8804624DB03A90C6BDE00B38F92100E065BBB2755618A570
+BC84C28EB5DFEC2A4BA7EF6F4A6B6DBE18069229D912A310DF592878ADE6D3B8
+4684C42D5DB517E86265F689D54E870E0EF9D64EEDD723BB9F99B820EC790FEA
+7BFD5EAA848D6EE17519EC82A9070B500BB5DB318509F72B316ACF162A1FAF75
+E5C7AD5A8F7A2CA610C1A78DAC995C378C38D73CADB167EFD61F1410BC166FAB
+BFBF9C311FBA0040D77848DCB1B093D7AFA67C9CC400B1CC2790682D6077A400
+091915F6F609C581705F095BA8CD132E31341168597CBFB9CEB29287176EB484
+689573754C275F67B2802E9614B665C945B8A18B7E3355A922BB45011DA7251B
+90812D8C817AB81D65E3D69B00F9236D5CF95CEB734ABF83478BFEEDDA250CE5
+859AFE01BD9375719F1DE48B9700AF63892C3D5CC9ACB84F07D77B68025D44EC
+F6E08A113DFE85D935832BFF21A193F96A57594B79A69C3278794F3B96943F07
+9A6C629AC9BD16924E2C18268F6482A73AA98B0FF28E9B8E1E2932683C155B14
+491257A7FB094FEDD7501AB7C24CD11F3B45593702E4D462BB73AAC8C6D85A17
+94AC384C6B1AED89EA4DA938A789C3E19C19447DB3219EDA58ECDC1602A8CD86
+7416B777C32251EBC0B1135AF96111918ABDCDECADD7BA4FCFC07EBEC5F29863
+458D30E5707343040174C85044FDE203878346FB14007EBFA2D7548E7ED1790F
+E5CAB33BE24FEA0DC7B8091FA1DD58B303A449015E089FD7D0C3A102114FA2BB
+72213BA3EF3D1981F4DFCF0B7C3EAAB740AB77FC4401899DB5CF7D4AB0D50B3E
+D1D050B48D4DD999594B576A72C6FADBBE7B08AEE834858101054CF8EF86ABA2
+F82F97CD18CA9E5D5BDD5C9FE6079531EA709F6E12E8633C8335E1A68C1E639A
+7D8F2916118506FB51D79B02614CFBA56C44F6CE83FDCE29A606FAB6E06D4AF3
+D9819629213892707B1B48CC0FBE495FE8AEE915CD7E4F3E107D8427C710E6EB
+5FD126FA9ED1C43F6EBEB2771D9179CFDAF9532176AD8BF820351A6B614D2B9B
+DC0391C729A2F535326FFBBD9C5859B3D29F494FCE6D6C49E9D1AA97FAA8FC4A
+618E25F00BCBC742F3C9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTT9
+%!PS-AdobeFont-1.1: CMTT9 1.0
+%%CreationDate: 1991 Aug 20 16:46:24
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-6 -233 542 698}readonly def
+/UniqueID 5000831 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E
+2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279
+650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35
+F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A
+D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E
+F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1
+4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A
+438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD
+BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B
+A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641
+AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74
+D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB
+CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A
+082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980
+9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0
+4BA1EBFAFDBEC531EA1210365091671CE3C86A6D4BC591C37DCC02570042575A
+9D24252D6E01A8603753934D7EA5CAC1BE4E5AD2BA047DE8F3983B23A8A1511F
+B08D373B69E5076CE4300137B8805EBCC0AAB89BBB312A77835795E3C069322D
+42C893A30AD739E2BDD299679B158F7493764F2321E3965141B5ED1C6F4765ED
+F46D391A646B30C90002B1C461AEE79E5F094CACCA656CEA3DB921CC5205F328
+A2C69F817061D6C60B121EEE844CA5008F23DF072D4D1C9EE000CBF2FC3FF4E2
+119740FB306D340D92D733000471A990E5227B06C53B3DA72141948D2FC17A77
+0AD21196F678B0A93DC026C410A781255D359F043B777B70E1331E88E68032E1
+AFD0CB35E99550E1C0FD2852A7D190E079C1B8EA1F8B005D66F8406E14DCCD92
+9B1F39E6A9CF2E33CBEEEAA09AE1930C846ACADD3B0F0F102B43AE6EEB3D9A24
+50C521F1B4D0541CF7B325D14EF0575ED2A7A659C828570DE5A4A773DC6493AC
+C95FDEE00FC1E9E332B536AE670CB145808E654923F757EDA89FF2BCA9E89FF1
+6D0D03C51443C52FD718CAE35DCE7CB7BC738614074131479E3B05F534F67874
+E2118A332C880EA45B91253E8101C38FDF36BC7766CB320D14F34722E2F40F8E
+A469DE22A904697BF8487AF1F26166730DEF2B9502847EA432FD862BA777B6E0
+C62A9622491A23CEF57E9713CD3D61A36E00C865E445BACF3536E9E33DF6DA81
+995CDC130C5AF0CDB265692F769BC0200B42BC73A117C0617C412ACA508F970C
+B20652DC14D4031E531BF59295938866FD3EC6F19B4DDA468C69B78E117DA535
+438B129CE6DEC5FC2EA667058B36799189DD9CCFC0D60F96A055280C298663DF
+B58FDA736DC747662D83914A9845669E87F78AD78F2E93466B14DE865CDABA3C
+444C8C17CF2C964CB42EEF8D7D72AA73B6E5A7DC48FDC0849A92A97253B05C76
+5E4D2A947538E7DD046A0107C5B473C460F9C0367646875035C53D4435A5DF36
+0D4C415B18D38411CCD3E29F3D63A14C9DE5B44CFA9DB7E3EDE6B5D881903618
+CFA9FC3BACEFE774B0052896286D9C8A5F302F1BAD47BC71064039020B164409
+7261EBC080F141CAD093315E0687776D604C8D74C77CCCAD5FA2A808BF9ED3FF
+FAADF730A8113AC0EEA8ECC761060D6A6D35DB4F902B6F63350EB5A819092DFD
+06559E737140E60F72543E3151039715DDE716517DA0A15BA43A7C0825997371
+B9B6CF9E3D3ACD82B053682EFA03ACC9055BB1C644F1BFEB1A543768237ADFF4
+91123E508671FAAE22B1118471A081520C6E138CCC5543F163BB6D28D09F6371
+78737184F1D3692BE655E3EEA04BB9B159B07EB70D22B4F27D218E8535282047
+8AED37D8470659F013D648B1FD43CAA99437827E88BEFD7B7B51D38B68FD18E5
+60B7C3BB9A1981D3CD0208FB94D29DC1BFD86AF42099D5AD7F0C49B05CB27291
+7DC54D7CB4465E78864D78236419EDD8C52CC26D7041C16EBD06FA6F6FCE91E7
+A86B11C0D436E13958C81814F59007DD17FC68AC26029BCB74C4C01B7BEF049A
+81F2D35F0AD2313B95A09A65D8A915185EC6BB038F15B29ECD29E6110DD53E0C
+B09883576A64A272D02A84AF63800E505D8B6B95CAC9E510EAED3888E193CD5E
+2348079F78FA6AEF1DB0A8A020A89315F26A4D3923DE9A6B6349AD75F1E08250
+95996A8C71DC6901E90845D6ED174CCE6A2F2D7E1864469CA04567BB3A0B749D
+D09F26846E95CD9B707331381AA1962CBE6092808DE03FD97022732E229F6107
+6933E9BF8F63A0C0F73AA73EE8F64BD049F12FEF37957FFCF9EE4DCD373E6991
+BAF5FE4415CB2784AE7EEA194BCA730D552E6B23DCAD2ACE75C9239EFDEDD3A1
+1A7E33C5D64F9664D26ED72EE280BB33C4DD08B76F787B2A8F5E484B6679B4C9
+70A123B9DCAC536130E9095BA6688551392AFEADC8169F67ECF580B9A0F10BD7
+4760E803C4B4624EF892A07F4A879436493D782F2BF34A0B560EEB21880246E9
+4C2126D731636A317090E91CC4CA05D99E18764DCE7B1ED9A78ADC5C3F51EBC0
+887F0E6409424D067AD199F238C059D05BEFA084ABD4A2CA7F5C16DBE97AE843
+B51BCB3B5CF71C9168040203083A3EE50E4D492BC21B7CA1648FB31645C74F32
+801B3743CE95D230920B59DCE8D587EC6917D31CE10D60AB047040A4194E3DC5
+347105F38770D26B9CFC472B3B88459DA521985B1F6005980A4D7C6A3B90901C
+0B79D23FD1BA58F75E0F9AAE0389FCA0D10C061A4469B4EF66523A2DA39B617D
+8E21BC50F7DE585F9DA3AF48A5E88237544D230562BC6E7B6B26CE43176EA3F9
+A8F1F13971F7C65C4C8FB391CFBE58CA3BAD327DAB59E6496869715FF5E8872A
+68409C73D11951511F5A8826BB47C051762D2E9E8495AFE328CCF14B4192724F
+4697500FA7007C9F662CCEE6EF492EC198515B9901E12D27991A029141D1826B
+D722D41DC8FC2F7E197DE911445AF33E4F58E7E1A2067AAF19B5D46173039D43
+4AAC3991E07AE3262F2AA3195F6F3B022FB40436111CC7BA6ECA51BE2C3867DE
+20D8AF638B6136320F9F214BE615954F01AE717CBBA102DC69B961ADCF6085D1
+EB59F2228F373E184EA3808359E2979DAD578C643F496645D97F41F46357FFC0
+1219A3CE14E1BAB3D0CA3F79BC299CC0A810B44872C3BD0D12D06BA4945A9E71
+E792DCE14E8DF47DDB17D01DDFDF110D7F4D928E187E25DABC3F34F5428147B9
+0F2F756B07763AD25685F99CAEAB3138A0809B272154A17EFE2E371CD9FBAA79
+B34F34A8466CA9B637C5FDE77A65A67FA68E4F1B6D1A2286A2F6F024A8ACD7A5
+9F187818C7666E5BFAEACAF13B6489C88731287D58EB413006653574126EAF5F
+6E78B13514FE40761B70ECE6B6C1D2422F9FA86AC4DD12A807445A750E6774CA
+90DA9FC8211134451FFCC547ABCFAA8F63E934DFEC3B4443ACF203EBBFD7AB93
+3EE98240E47B12A7423C2622E4D0DD6F5DF97421C29A644F2F37221C3F311FE1
+418FFF1B36F1057CE5EFCB2801777DB7E746EB933D892FB57E94E8A0C617A6BE
+1711CAF45373D573A7D6018673AD72BBC10A418C756E7FC82F9A2824F3B080AA
+175631DFFD9D2C78A92FCCCE9E864173F774BE42D6A0B4F95DFC23E9FF4FB0DA
+4E69424B496A08308BDD03BA40E1E29004033959ECC88898D0057AA9E62974CA
+4BE6651B893AEEC10F325264D0C14A8142C30A58B87583A5A5938E43A4E39B60
+C47A1A227144050933BBA8095CFB4FF475EE9BD0FF44CE610E1E50390F641D2E
+1B0DD50C2BD7033C286A666C4B07CF27789D68F987AEBA241EF087D9215F89D6
+0A89D4049EEACFF77A183ACFD83B60A492A0E847741E036353D0DEF1DBB01BC1
+3354F15232992FC283EC2D95E93A8537AA790F21F23F9DE5C168C90933C6F9A6
+3A4B773C1C1860A1E3B0C466B709D27C68FAB1B3617A73DF9E018C2E4B595330
+8A0E8D1BDA0967B1DC3A5DA5B96627CA556E23BA89C12A512026CF6D43702E67
+2EBA6786ABFEF3F10E204B9B5B72C738268BAB512ED9B8E1A5DBF95CB75738BE
+ABDE1AD1208DD41BA7B9F7081B01AA22CA257C602E0CB9769973B4FB46C1A4D0
+5EC5B567A9EC991DF2D7EFF791AB4A051220C2E3CB17D3A6FE6CE802A3BBE6E1
+656BA3F612E6479BA94CE2020C55345ACCAA514A55C72C940419CBF128643946
+E0721F8945CFA9A7664D3E274AC498ACEDF9C8A9D09E931533CBFB712057B3AC
+44CA4BC95BB96F9B3FD438AF46D0FD5CB66EF308278ADEB0FE31CEB9E93E2373
+0306CF0EDFAE6C73EFEB1540E342C89FC626966B7D01C2734795D3402A6BE710
+660B2822088D5A9879DE4C6A74CB5719F766866D797FB846F4AE181ECE9E447A
+6FDC5365A937F5D5CDEE1F961210917191CCE511F442B34E2399C42C5CFC8F5A
+7B9EB407F508B1B998B295E39C04DDED5571492932537FF6AF76526E739C99E9
+9B702414478863057F264B11BB195433D247AB684722B9EA66B02EE1BDC57422
+6498382B2AA196C1EE9E8ACEBD946E16E415B148F3BEDB889B95645499E61EC5
+DFC8169ABC03A1AE3E51E85028338FD7FD471CED1708BBE55577560EEF0B4263
+17C87251F434C0C40FDBA5E12F3720459421557A280233DCE87805BED9184318
+9C4A55B99560459F0932A5656389255C259ABC6F115B900B8D6A82853FBCD7AE
+01BDE047AD558106FB9A5310C42E9CF17A1DA691234BF71E47EEAB720FF71B67
+9723E6514600ED5733EC66969B367BD930D98B01F2DDB5B9A5C162EF2ED10E00
+9A58B69492A07ACA258EA7E7BC0E6AA07C4389BF545F3C54FE5AACAAAC1F90A0
+F165EE30AB18495387C1CA716EBCCD08325EB578BC59C991EE784DE7040624A1
+48183FC209D720FFF4CE907A4AE4D5057640F777A34B16B9E3096A83BB50D1F3
+953E82F3F1A4828BC561DE99582E0AA54B2A963BE17EC5023FEEEA505DF9DF15
+BB5C2D3F4B75625C3FF06C0D843C3947D8EA58AB2A6267BE6E2506E0D58A2DD8
+E05B61C4D2F4231A3D4032175BA3C536A0A50DF906B2FA23A8F54848E81A9FF3
+25354A7D5B17E9BC9CC2765865CE9F8BFF07BA9AD27E4ACB531D20A6EFF49B1A
+D479A82CE51E83AC378677E19CB593735EC2E7BB14540B5E120DBCFC4CCD6319
+16E6987A488031144E36DED23AB83ADE5DAD374A35620CE27AD89E54C176C0E5
+B0EE1A88D96A072A8950F425430624CDDB8ABD6F45D79004A72CAD5AA17F0714
+A3238C3E42814D7719A11017A656678DC89CD48D5B92FBDEC2A3506458B5050C
+87CD8B9CD0E7FC0CA26B822265E14E2B4812FF00C96FC342C4CE55B25E628CDE
+49099B12513DC1484CAE9462F09A946301E9597E11CDF3A31AC2420E4DFA47D4
+259AF53C3AF330DFE4734B72684E50BD5895A8F64FC814B561342CFEE20A56A9
+CD60C3E9FD187D6033B322075E715BD230C4DB95EE677EC9147C78DF1BD284D8
+8FF42450CDA9C4C556065898A93F2777B52203E2128713C1669484C10952C0A0
+C2306E036045E6370655A8D323BBFF8A6F2BE1F9B8446CB5955C9F3F1EF9F13F
+CE8903EE90D0F7A2BDA34B279C4BB3D8BEE6A8C256DCA01D7149308A33926437
+85E22529ECD1CC157AD27393B461A9F4685D0EEC63AC9EABA6309C0A36CE3198
+2B6FDFDB499E29B46C692609400C55E13C491CEDD0BA275D2D876E06E4B9D255
+5DBA5322454C6AF0602E0B01547145C502B0DFB31EFCD86743BDF087790B31A1
+25F14F796BCB613625E1D915E6CB8598F17B463209CD72B4558D398B6D5A8BCA
+9FE5BE145AAD891E064E1E6E96D32B248E30C550A7EE4E533531007C29D83E23
+CB6075CDA42913296BE65F9CD48A7384CF56B86913D4BC5B11054431C32CB43E
+757B7D1A23100CADF5391C44CC9A614B180657C956BD408F7C7F81D31FB8EA8C
+8D038351A8F6CC8C8E25671AC4B77CB608B3882B2EA0A9B081C9B2F81EFC6DA5
+CC858FAEED1AE829E6488337429FCC62C2BA5C355154E05B9A3BD5944511CE0E
+8BF787EEFB3F136FCABE6CBA3C609C248AD6640530EEC6AD8247E77A6AC12E80
+C82732137D8CF638CD0EC7D4CDE42F80C8C7149244D6FBF1701E1E3C5666D02C
+2F68126B54B2333661C32F70051FBB82C750FD1C60FD9F667DFCF8657154F409
+7E99629D2B7B926E8A1077CF78CA89AC5EDDBA3E04FB0A565AE2DF997E05AA09
+73A00018671B2AB71652FF9A059F1C361659523606B78E9B4B10F6D72847FA39
+953ECB88070296C1B09FE8D92A50EA8E98FD6FBACFD178EF5B2BF23150749F27
+2CA4491C4C6AF4D6237EE0E912773A04CA55814FD6EFA493D01D1D911A29BFDD
+D53F39E8CD7B7F964AA091DDE7CE9CD3EB8757DE545D074EAA584B8E24676364
+F666FE6F9B9EB570D154E7E2C05A8DB5A40AD741F0585641F4F32CA05A7F3016
+E116A22E4F85AD5E123F07FE0FE3AB55A7ECB31503202AEE7D66BB8E89421F08
+1ED8C1734A93FF047AE8D0F87F83474EEC20D55E9763A4CACEF15F12AE7E3A20
+667DC66A042FB67F3A140D1042E8175E47FD6140C05D89925DDF10BEA57A71CD
+C778A57564AA74D7AF7B2074A4580331240782D35E80B528B8950FBCB1A8E593
+F96EFFE0F1DD23F6377363D661E1C4F98104C31D7C0E7F9C6F219AD81617A512
+69B5322506690A672CB9E2877309F6DE2EAD18A4DC9102A1955E94E3081AB800
+9202CFE99B057B1F41EEB87543BFBF5EE1FF1C93DADD0ACE6A7C7E779E011A6F
+39C0CA50F406A7F107418B4ACA6A69E0CB46C43676B0843463D5C53AB375B595
+62E9F1FD5DF4E2D5BF34B7D111C8AD6CF2BFF59655C20D40B50EC525386887E1
+B6B11D62A02B7F81F65AB65472EDDB9A196D41D98FD5B1BC6D339964346CC55D
+A55B98C5FB4A4BA1ACF255B2380447DE3732AB82E3BD0433D642ADB7D67C2217
+884A6C99345D4638646CEF366A85F92860A0716F3DDE3E73CA907D4BE597AD07
+053CD914362D5C6AFFAC009D29B7D288499522B923394AC2F02191EC869C5A6B
+1CBE5EB7B47A790040D3270E5AD0396C05FCF895E2E0AAC4A94C2EEF4B7C19D0
+F799E1507C81E2129F4E287B7318E62ED92300F121F282AB65872102B94314A8
+1108E733828CF33ED983C7F72E3AB8CE5F6B61232965AD4D5259AFEA3FA8CC5C
+AE4E0D1BB9F3180312DAE392E28B22EECFAD24965EF9756A29858A9901018FC6
+ED605A1F43886FE9E5307CA56DABBC9D42B0A606307E81705565D9CB81814DC5
+78E5BB93DE5BEF316304E8D33D3AD847332A706853FADCDA40B7F04E11340EBD
+BBAE024BBCA535597FF8D3215869F2CD3AA0A2BEC830F379FD005D12AF2CD298
+53906D4DF912C3FF79C0A04020BDD46020CA80748920845D7C9AD60BFF780A45
+99114B8E401BD5F3CC489432880EC68186FC7661F93F636A0CA790FBDBDEE105
+BC0C11C03C246365BD4090923BBDECF9F7501A65E9D6EF06B752B0B6C92B0469
+C1DF26D6384103B405D948CF0C4310CE34B0CCC47C98A38E7A237BB737C7B6E6
+2298F143A5BB9769A5D7E4330F1C64C9EDA7EA34F85F31B19BD546516B3C97CE
+5B7906B0FA5D39FEA3C84C48C331A549DAD1A114A43AE7EE8ABFDE8FBC767F71
+E86450864BB71B9D11D9614EAFD6547E509081CC17C6261D3B81511EE43C33B2
+F63601B3519AB2F58A8A03A304DE0586517E0D9CD27E756AF6EC6FCEBD897FFC
+89CD5D760EEF2DC6C185126A7B85C0043B785A90901137FE197A57E9CC1116FB
+604E291B7846ACEB236E1C3BE9029B7B07D21900D8A2D6F19FDDC2EEAB076854
+6443D8C28B4BC46D7CDE0D841E7B0C43F86A30DA56F6BE0F6023E2AA8064EA2E
+DDC9D42906137635BC7D21312C23C19593756F4A344C72E7505C41A401B91887
+9512A20F1E1F5A1E065FC6DDDA3412C255C89B9A77CF05A0FEB510146A0EED02
+13633DE45D4626307B03A012A1C44AA0BC4039744D2EF60AA999C0D6F0C2A5EC
+065D730A2F43DA9396A58F41F57787BFE8FA71CCF395B9B68C221FA789279CCD
+EF29B6635F6028A95C124C6A3025F2B16550E9206CC3245FBCA796E91098F4B5
+C61BBD21365F39045FB67086B11C32515AD245CD0F50687387DE65DB08CF6D4C
+9899DF674E334FC25A3B16FD97B19228951D43EA09EF4D0FBAE1D7589B312AE7
+FEC3EA4A20C9D63B7D9DC1A1C35EF58808A988C20ECCD08A407E8F1028B204B4
+267453C5CDD206E47119ACAB15B690EF50B59224D863EE703C76F271E89A4827
+14E154FD7DDA5BAFCD97DC9FECC47F0F136243DC58963D492C3CA6C91E54577D
+669228FA800E18F6F60F47675814A7BD746A79AA1F727539F1A7039B65049D41
+2648B977A75178D2EA2806CCB41046C10BC62E2AF9F61A1EEBB7D762FC3F10C7
+30457B1AA72511F10AA111D6DC77EB18F93A6DDFE8B98625FF037B088556DBB1
+86FD399255368EA7161AD6E779502EEDA86F0D1EA4873C01E8A7BF9CE7CD3AB5
+50DD7234BEAB66700D8F028B2468C367841DD2BF035A151FB15EE213C0A5943C
+A0A5FD68B90C976EF9A008960CC12257203E95BBF7C82EFC853D41C9F983A6DF
+ED243C9C67CA1889719EBE9D5F684210FABC485C3CA8675F2AAE6360312C191A
+8B1A0F18AA901257157CD7840324B2B0D78B1D50EDF9B3A812A9321F3091D203
+2E113E616F09DFBC0FFCB15C54F8ABCADCED58DD3BB2526A81119F2B4FF93910
+26A70BC4AB00D54047D1E997C375BA799635AE4AE0E7DF9A4FF97EAA560C269F
+4380E3252E6ADEECBA2BAFC7AE56729474E05DEC8A40ED3E0518732FCD253CEB
+71F1A8B18EA41AF08D54880924F5B02D7B181BC76B29A4DF769EC1723DDE2519
+6B2170C3C5D4E70C50A21283ABEFE0064996392DFE93EEDBC854BDE2D4EA81BF
+AD04AAC565C48737838933C5257D3AC9BE85E4C22AC3AB4FCF28B7580079D8E9
+0F56C6ACABAB0D38C60FE08F5CEB05BA4DAD9B09B0F9E57C4AA524300E6B8AEF
+1250C6432E54D007AEA9B36E43890355C788E233454A7D59120E3277DA3EDB55
+6BD9EE10B356C16E67F93F9891EDCD06B16279125C22F2B0EF90315F574BD651
+B46AD78D7723FA0CA2B0A0AE9C102C4CDA3155E33CCCBE026C5E8B603A3210E1
+FE538DD514A4D1FF897BE4655B5D8D752439F135E6EA7869F315F3E9699B7B77
+810A6989623051130F6E4E1471656F6CCB10A13034FF085403221017732F2390
+259FE3B29F6331804C300132B9586D3C6B08318A71AC700FAA6E83CB3A86B1FD
+61C6DC7BAFABD3B49F8DA9E3A98BC94926E07DE98945A45061CD0FD002B90CF2
+B8D294606DA133D4CB0874FA3ECD4843828F6F384A595EC123817EEB3BC6140E
+6419208362639835765C432D7BE88C8BB85DB91051F2BB3C247E729F25EE441E
+BD3D4A44D90E9948BAD1D5C168D7FD14694599566116387F622B53F0E4096071
+0DD97D7A6E64F3A2B11BFD075C6F7DD953F57C1B1C3FC952200E8142AC1D561D
+963C5F5C67A05D8E6872B97C6C54AFB455DAC53C80660E6E4CC554E3B5F5C268
+E0E027D321DA10B59BDAECB378E304D11A1CCF3D72A029FC4BBC2CAC76D1D5F2
+84DF09B99A2249E6F1A0ABF58707BCC2C460DB4D4D9250B0FE4283BDE6CA55AE
+BCB1C85A373E382ADDB1AA92B2FAA83858FC6444942CB783D5B639D69344B8BB
+4A8C7DCBBA3FDCD2B455ED377C3022E2BA3D7D717468B42B731CBBE3FA439E97
+EADECB5AD8DC8ABEF73F510FC6039D001EE8DE53E239594E64428F2A460FC809
+3BB40C9C6A8358C7122B45483FAF3471F164D8BA84D4A844E09188B4C34FABEA
+79BEF8F884756AC909B70460BC22C6874F966699DFD1F3C54FA1D2AA72264E93
+75596BA06673B01D2A763CE177E248960BA0F7E3BADD59265C8876EFDC6FCFD1
+81469DBC59AFE8CD07EA8FC0BA3FEFE43DD7D527D84F685FD985B3A89BB5ACC1
+31BEBCE59665D9CCA179B774390A1CA5573A2AFC8BDD6D6901FEBC9CAEBCC5AD
+9CF26EF10987154F9CA620F426E3EDE082A2551C5E949984C30CCD98E2B1D0FC
+3CCAF3EEADF436ED12108134359B711772E6D3C921B02677BB15EE87DFA5A2FF
+A3F253528D2D0828BE0778AA599900DAF72AB2C17D1513BE9630761128C366EF
+B3330BCBC83A5F745D0F163CFA100DD8177309A5ECAA912C8FE8546140587FC7
+50B14AE5B8DAE05BD2399CD44B888A894F79550DAA5DBC84AAB94E62F0441A6D
+3E7D008F10EE46C58F1A92994269B52DA17A8266BEA8EB4BD99FD39D5361C028
+81FBD28300E40BE415F7306C8D6D94713869722A6A179F5FA66A332CE60A0C39
+97AAF72BED0B337795CEC21379D67FDF7D5011BFCC60CD433EDE8A3768455F68
+62A9CBCC695F9F8B4A265026B1678DCD7ABD8FD566792218BFD7FE5A61FED3DA
+9307CF0FA486FB636D09E95D640A95483A929639D14141679BCE01337A309ABE
+6CC846D012CAE3E838FCC4FCE3372D020343A155EE284BD858C33A245EFE1B79
+A9FBEFFFA2B402ED5E17A9CBCB2AB9B2B131CCA1484291ADBEAC711503405F17
+66570740C63CCA6E7AD5871AAB381ED4968806A911D6B6A2EF18CA9C6A4A800F
+95DB24AD68BDA434CA725D17F0AB0E99E339967FD4F0455D7301ADA41ACA31A9
+6A03698C9A012E022234DC03E2F3276D2DA1FB03955C191D2E8B4DDDD668CF04
+23F806E181DFB4CAC3E4B3C66E79AE87749C4083E84848BE641133EA61D06708
+B3F84508985C54352247D3B42857C49382FDC78F5F0D6101908673D90F4ED17E
+040F0B0F6EF8C1AE38B5BA866A45EB0DD3B3C9BB3F342B7F504A37605609E111
+1CFDDFC92101E71E3F6DCA38F0A833D0CDC52CF1A03EC5F49506618277D382EA
+94DAC5B910F48275CCFC2AA7181DE0675079286DD6A06FC691989197A40305BD
+246A28B5F578E458B39EACEB1361AA5DA481563592DB0C9F03DFBF4D6D84D72D
+C6FEBBB5DD1825735C97C51941B9CF05DB32D1C9A33A0676AF6A652077DA1FBC
+6E51CD90D46B767C729D54499D392EB6202DC498B57A50ED44FABCB78E8F7B23
+5337EB2DF8395002AC4E2AC04974C9AC46E01BB7DA9C55074EA3BE0FE9F6846F
+9C573876BDD9A1086838430B9E5C42246117D7F5B2A8EE45DD30A6DA2504E2A3
+2CAE453E9747615D9F0A0BA9F06B0026DF21FDEB50A4FFE7952FABFD6D17F098
+79237B36805490D764D1843DF4A0190F094778D114489F6D2B5FE89B614BC0F6
+23F5A366B2AC497155D729530FF1BF982C82D24204826C6AEDCB4F3B4AB88CE3
+FD55E650E8E67214253D189D67AC4CCD9090E0482CA19977166DE08230D434C6
+41405B7E4AE2D63BF49E78819CB661237A9E27B2C2091E6EBAC4AAB0C5021B26
+1D38AC2EE717F583B31AD83326080FE441FD2AF2637178F7C4EFDBED63A32C33
+19C315F16BF7D12E78C11D9D769C7B52A453016538A2F72F4FCAB0DEFC246AF4
+FB40A1B5D3520839FAEB7B5E9BBCE4F0EA3874C2426085620B7E62C4FBB47CA0
+7C32065EEE2B8A824999496999F06A6E34FF667808965E11605A19B744CB775D
+D0598DFCCD73A530DF88D72D2D467D9631A8D7E665EAED42B3F74586795F7B43
+51FBFA148672EEAA600B76FA43B0D14AFA5BC1BC57A8C13445FF035D5A754687
+986A1774822DD5CA273D64E2D2CC94AC913859D435DE7C8DE64C5F2150BB395F
+E55C60C898DA92625462846464F073F2699642F4D3CF0F849A7D9A2B2FDC80C1
+D26C06208191D63E97A2AAA73EC4B96373F23D4FC1FB91B93899E2A6DE369D90
+830C451C3462DA0137C812BF06E8D219B90DC6A551FEBB2A52565030772C8657
+DDDC5D3ED99982F6A3F9FA842C550FE8A5A7A2BA36862EF2C3A413EF94F437CC
+E3D51F5196918E4D9F1AF0CA1110AC00F963EE17AB1A2F1B7D6242C29D98747C
+E91E8A6F924E89B4C6794677EF604FA3235E8F44578A5A87CE1114631260751A
+909C7274E941FA9596669D9FF82C29EC8280B1B326EDBC8812D2EE2DF812C02D
+AAFFCEF6165985DDBA1D9537AA0948A4A797F01B316FFF6EEDBE874BD467A239
+E89435CB0AAD16CB06D3401F42EF7677C2D8EC60A395F716687958E5F9B6B887
+5F9C29BB8320634C9892C9E72369A9CC1447B51489743E755363E4624CB88265
+4315F7C6C62EFE3916F7580B3E226FE6C8B3429AF51F93DED861D22EFDB49B3C
+6C5FCB5893774E880566DBD66A408495FF65F8BB99D04E33F8830726B20C872C
+8F4A8537542E1956C1125311CBC0A014F0E8E90124AE145D2D8FB12D113D79B6
+6D5828941563B1C3F2EC506BD4807A969279AEE347AA6B552E328C9D11AE52C7
+61DAED073036C79B9DA40BACB90855AA3CA93020E2B553BD377C3504D7BE25CD
+5A43DD1C53FC73E3C2E1690FD80B93C4C6AA5C76324F32400C019D6360B2BCD0
+F33E15562763487060CD620C5F48C40000671A83C22E4F7E3F5F37C9F70BDD83
+07085085B3F881555E1B8D0C45F13C95916907CC0A8E85EB1BE75A3382D16224
+041858FB54EB7F0B8719AD892B123A2EA81EECF9CA572AF8509B94FF7DCD544A
+4CF9A7235FE70F97B9D817EB60E8A809BEB69DC4FFDA1653F588896C4C3E2378
+D1FE3F902ED27E3AD5BEEA4A54A88EFD453B380B06F222C088C5CA5536E1EC70
+3CBB82839056CDCA0E770634B7E8320D856487E9C4B02CAA605B5510D563C3DE
+A0709BEB02EDBB59432B65F5D27E38F5F91290B1C871E9FF9901BA8A3F938659
+C5A5D28E001A3F8DDEF24DFE7211081ED9749FF5A753F6FC8F3064ADA79EA8B5
+201161CCC9385FBEF61739C6F103EF29135978DC77B9C374695CE7209F3C2B64
+36CC939E58840C9FCF40888EA836B6EDD24B38A678EC8B988865D41E1389A32F
+4B6319BF59D48FF6349C98E611CFE1E7EB55EC557444F22EBF414E8EBE976472
+B2F7580731D42BEB735396F8F144587665BA950F43802B7FD8C4BBAA4D25345B
+736C90FE9838EFA1BB52B1973ED01D4DE7E7E1DBE08162C352B06918CF62523F
+A135923EC6D932F5DB3469AC188E1409A83839C3F5B9A4967B1E77889C2DD5CA
+98D3038CACE8D9623BE6425378CF5262961462D7FF5F2761C1BBEF2A032FA6B2
+7D67129F35D5FB609E5E60398CAEAD4079A9FB008F8EB9FFB26C04914ABAE0BD
+AB4875F982AA68C8DEA77CF1F0F7BC8236DFBAC37302BB695E7102373A9DDF67
+2163973FFD610BBB8E0D6E4DCBE688D092E6583EEC11CF6F42245871A3F86AA4
+4D59A9BB6D53E586A4D187930AEAADFA4A072CFD97E3973475A8DDAFD6639535
+44A41BBB8F81ADDBCE14CCBC9DB20268AFDD05E2B85779B0E0CC49E200CFCDE7
+B6B2B98034BB562A43B080360966D51E1DA0EEBA8803A9526F86A59B50861C2B
+CE3D72A03EEDABD9ED8935A1C8BAD1D924EE7A118225A576830D30FFA3B2AF1A
+8D6B4AB990D3DA5428F6CAD5788553BCC2448DA0896C6A481FB803E28D7D335B
+2D569A4D801D66F27175EA483381F5B6ABE1DFA739AEB016C4B95CF230146B59
+440F72EAF259ED4AA1798345DCC04786B8BDE68BE9D85F8AB4FCEF54D8E72DFF
+7D0BBBF7D4A79E71CE98EC0F130A2414B4F958DCF7E138C8A15984693FE1A092
+5204582EC8F65BC1E4AA0654D4392B78C29649431886B236C95C11A3ACE49002
+5D83E07965B396FDD136B49B203FC9E48A8BEA97CB77C6EE0F6A5AAFE249AB4A
+3194A802121CE314FB773F02A5A1D28C040CEDC32A1EE958018B48AB84E563B6
+DAE93C28036FACAFD6EC351D7960047B9AE8DE4845536EC7C02C4AADB202FAB8
+E32C9FB7056D17A5CF6817679E30A2E58BF2531F8F1521F5EB3F58EBE1EAD4C8
+1BF11243FEA3332BFC647ADC8B7929A78D105423C6E34E5194BD8C18BE0512AF
+5A989420376FCB97176DF17EC9922C42E00D1987680C7CD96C3C81BA0C490A4F
+A54F11154F3F105D05B465F6711DECDC06391325F04875805F0BE3294B4B412F
+425998A37BAB0DAFEBB09F5BB79C344E31FF93A81784CC3B334ADF4E515045A7
+22B5F88737620B4098A7B38842A888AE61DF3E1A5A40E41315886A24C71E744D
+05FDE20901F03C5D5747789A686303DAC5690FDCFC5E09F3A031121509455FA7
+8FE6B5C878495F39C40E6241E3A5AC629A1872E2332BEA5C0831D1106CA169A5
+3F596660252B63AED600B8388E89202F81241BF0AD676D1632DDF73C379E05C4
+315839EA8196F9FA4065294AA1770F75F6793D29E585737657A8FB0E3946A6D2
+304F2241C79CDDCACA3162B28EE02C9BA50E511DB84463EB2EEA28CF96D3BDDF
+486E44FB8C4EAF0A6C44B459DBDF135863FB8B31958D49BD0C097A4D15C76D00
+EE844D99EF977BC0E89287B0C2C67C06D2256E846F85DBBF41A7059B2BC15D9C
+66D5D7693642901D17FA0C68FE80F3D3F7234B6E8D7067658E23FD09CFDEBAD8
+6B35ED0A1EA4A69FD7E8E7EC16394C1E3CAAA9EFFAF95EF6C13230DEFF0302AA
+448B60136747CB51427943E0DB1C1DD087AD6B284DE4E354070CCABE9E1D5EEC
+B6975793FB09A9655D36BE2D4A3026DC4689294DAF0D7B6320C34B5AC6C32FEA
+7E0675B45D3967D1B476FEB52744FFAB4BB49970F13642C89FFF63FED0D6B350
+2B5C2972C747FA0B43C834363D848F99AF84FF0FE8A786D26C4D3167CC08CC67
+ED566087EDA4550120253ED1F19F1A4161E705A3D8DE6DF75C330D571FF2AB5F
+E022B58D2EA582091CA3282EED6F075FB96000B36EFA323EC9B893A2CEC57865
+09EEA572BB127A4DB00331BD574C258CBCABB02EC1E088F076EEE22362E93F49
+7B4E08CB19E55431C59CBE634FD12B28D56320FA1A753B528FAD98DE5513CE90
+CC1B0D722A4437FA1508F6FAB9BB8F3BF38F7EDEB6947D2C46580A7602FA90AB
+0062ECD827C062737A163E1797576D1C83A31E0F4F892F7D7F83F1F4563EDFB3
+219A03CF16638E6D5E7E961EF4341AB0D7AE9D80B38A0FA8AD4B7D24E4071F04
+8A2B4FEC937C73FDC45CD570DA8C96D56FC104E39EDBB672478D9C34171D93A1
+3A995D5F9306E3B39B35D04D76CAFCBFA1398465FCC9B544B2FCF97424120227
+A97CF3B254084F65516DF48F799D6D4F0E830314E1E7FDF23847B7B22CBB4739
+708B3C0FB3043096AAFD133A43930819F5D16C57BC9A5913B8A552A9CDF5BE41
+4B29F40F181A1089EAB1E1D4298EA03D94BB9D1365BCD0613CD5247A623E0603
+23ED64BDCE80A76F28AD9DBD65495C2E32F8BEB374F2BAC04DEA83299A9FDD4D
+5D13287A44190D8CBC8F275AA695D58E7DD99A958FB645929E1134B5A796AF5D
+B4DBF734E15633F17FBCEB18A41805E56D3B33C18E0D3DB638B5716FC11609BF
+42F01966B3D9E2D05DFC7E61326FF476C5973A6863E0318A95B0DA88F668A6CC
+6C657707388B0ECDAC67288015611D0AE7958F52D7F7C380FFD27AC1D3B83934
+C3F22276DC03EEB1DD096D86A24119D3FF9194ADF3FDBB09C42FFFA860550CFE
+290553C71DE6CFC37B9A11C22F859D956BC38CF9A4FCEF72B459F44ED1B31C66
+79D80C7C88A7DD4833EE90FC64B7D8CDA2D0C98235665F71B07A3570189C6C88
+FC4AD8D1B0EE5A3BC948004F39963DAC6EBA7240DD832D60472C4F088274CCD7
+A97A05F6AB7BEB8292E20DE373513632C9AF5B1449D1D03BC4EBFE36DC25F58B
+75C2461DFB41E1AE20901F01A15362434460A638D80E2F569DD4948C1674B8AE
+C5B1C3322B9DAD25A9A99D84932B2CEF8E074F2C031D9BE0CACD94CAC6ED149C
+86E787ACBD3CDDCB45057D149A2A155274C6FC165797F5A0973FE29FC9D3914D
+1F44B6CF95F23BB378C06447810BD91402DF356E30FB965A69676DD932659481
+A66CA8B8015B4112CC1EE2D90FF1BDDEDD4F80A232351389CABDD596766F19DE
+4D93DEF877106A54B0FECB005F41C9468CCF2C84DDB15732B015B2CD1A4155CE
+52D8AF86FBC1D97D8249A84C8CF54C271A206CBB0291C9A83F9D3F80A9A94052
+D090CDE951BCE2CC812F66A47202F44AC93FA73A7987D3286FE133103B364E5B
+04F3BF4907EFD49128AE6C07DDDA38A257ABD45F13872E0D70A19B82AEF69344
+01F869C42AFE47B8CB550B6EF46B853952EDC511A909B4C8904B4BD121249977
+5785489C28A02A3052D5A122132ED896BF20A5DD0ECFC08C933235FFABF515A5
+C7280AF5CFC4C13B6F153AA92EE18301448E410B882FC827343444B8AA88E281
+73C15C38EFAFA3E640DB986A69B0D2D882DD31B2BAFCF09F8AE98F86761557E7
+BD3ADDBF480C7571770CB086139CB970FBBB4578923726F492DF82FDE83E4F94
+171BFFB8B11C6B195CF22684A8D5F0D63C57E654F196DEFB51A5DC591FDBEB4E
+28310F8317514EB7770041BA2B6172B96E691D4F9F289B2E785058F99C288EA6
+9FAC0E3D8D71EC5F16F1FC1F48962488CDE53B1BA5E57FAF21610326F3CEF7A4
+24B314C4A55AD1C644604EA428830304AA36451AC1FD41F007E0AE84C4DF757A
+B85F4F91BC123DD926A47161FF996C1EC4A722B912188E626AD7D928526BD12E
+ED244BE4CFBBB20676C3BECDE1B734085F00B72C32267DCF002B47E6112BE3DB
+9A72953B4B34F98B4FC3E80ADD37A8E2D408007745F51F4BDDDA57038755F031
+D2B09BE5249A9A2C9BFF225C5C7AE43D97B761501B610891725CE320BF9C7C85
+93C9E9AC2BA6947535BC406ECD989D01728EA41D963A8753DA2A0C9B4D9238EF
+826DA874319F994FDE1859E4CC3B17601D1495D1B3500AE1B861C55901D9610A
+25078C498AFC38B6C64118EE9837E5C61E03B2E7CDEBFD8B37646D649B1A8E21
+B6BA6A8552FFA55102A7F6BF6F8C0A15C66548AB867957728C673DF3221EDE4B
+022428A6E829E6CABC7CCA6C1A60700FE68D11C122930FF0D75DF89D89252CCA
+692CC02DC52F158E3874A9D030C8EF5B0DCB633B2025C203AE79636E1B2497C1
+51208C4DDAF096885EEC50CDCA1133179227427AB85AF800122A7B7A506BACF1
+6AD4B3954794B5D37F42AD94A93B90846C55E12B8943172C8C4715685D0EB537
+75430F0A6EF94CCE0B6B9D71EA42571E9E26DA0840B0624E1F97FA1548F45FCB
+FAA189A40844D88D87AE8EA4DE29CD9E7DF322016AAB4A472DA4DE10956E3DBD
+5B8E20B8AE941CD8541419FC0E90813FEC3DF42FE4F8A7C67C661F1AC766A278
+EABCCEE8F45150E4EF2D6F967E98CC3E1578FC5235C9111AE4ABB028A4E8E683
+E39056B5F1CB6E8F5EEBF12BB7DABBA1626D691C4AF07767537462AB6472B6CB
+A9F4CC1DC29ABC46FBF92908E1C09D21DF40BA8E0D9376449FC64B1F91B13F10
+9A1A484C7361EDC66F7603CB5C00D988E3A34057E2AB21071AA4554D1234D6B3
+BF04C440FEE0ECDC5378E34ECFE504D9B917543DEE8D86A1A1AAE111F7870C4E
+D81D0B277CA333690FB282
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR8
+%!PS-AdobeFont-1.1: CMR8 1.0
+%%CreationDate: 1991 Aug 20 16:39:40
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-36 -250 1070 750}readonly def
+/UniqueID 5000791 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
+48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
+9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
+0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
+8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
+EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
+FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
+9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
+D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
+9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
+ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
+10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
+83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
+2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29
+044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49
+A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0
+23DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
+19B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
+1C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
+8BF6B05F0B97F8FDED86BDA32D9EE6204BEE321529D58F28F7A9B3D04A4469E2
+775A8B43DF5350CA25E95F1794CEA94B99AA02F3498C608E6277595DFEC6CC7C
+965B69856CB2AFCAA52F66F5A019C999A1C79906EADED8AB0A185F84F5FC544F
+B289E583A8AB4726F9538F4DDEA903CC1E623DC5EC25CD02353A4C9A63CCB7B3
+483A481AD7220714EED8EA179FD74724C7D1F7032527E25A43FB59367B10F3F9
+4BC23E2AD9F5744EB954C8A0086C0ED51450A8EE7DCA2BC27081C4F49FEFCFC0
+DE75DFA3E620747E85ED0F66EC590FE6CE40D08497B52B89FDD0EF6B1D4C0A8E
+FB12E7A909CA56C9A44DAE837CFB4515412DA996C9E3A430D48B20671F04448C
+51A14CB5E9B2565D33A0C0992D9456F3272776BAB972E4AD37CD9538F78BE951
+9A5898C0E3F68EBE589967254EC4E10B6010E386ECF44C742D37C64502DCB250
+E9CCD2AF341A18836489360B950DAB980CB0621155E647B6DE953A6DB1AF51B1
+31375114FB8E6AC909DF17A7362DA2ADAB0DF9ABF040426957B6264BA0DF2B48
+1AEAD8B9068A3E5A4D85166392CD12ED01738931E5683E83EE999C08C54AD19D
+FAE794A00EDFFB4F430DFF757CC2163DE77D79C3F0ECDF5D42A1B079729E276B
+DC2691D6B29EB3C37824D4A5C7A452C10C98E38FBD2437BB29CB8964ECB475F1
+3DF9D1EC2F4723CFC914DF067470AB81C22F69FF0A615F693C0BF7084FF67DE4
+741E765B47E222EFEF6DDCBCC5BB5EA3FE507959AA9CA4FF0CEB615938095738
+AE8107FB11FD1C35A85721CAF2FF491E90F4F15B4A8F8CBD72EAC28909FBD231
+B0A45D94469D2C03CC351E5C4127CD2334F94A1EE91FAF19DFAD50D49DDCA165
+1CC936EAC431720FEEEC3184C1578EC4E9C6084EF6C6A30A327A455DE14E72F2
+0ADF4A1DC4232577BA25B75DAFA460FC1E018DF361AA3A8874EB6B445F973459
+83E3C1D441BCF8A100C22DD2B94DF2E3EB57C2C792A2C789137911DC67926D62
+2848C29EC41A771243F46D48FC17133E004F9DA9202364E74773A22999E03437
+1D34277B9724E78020DFE394298E990132C6647546B2F95CC2B336C40A335EAE
+85E5CE36670AA9E28C37E43AE4D5CDBE11352105A1A23B2B781A88EAE094B83F
+D9FA26C3F500B5BA7E08758777F11A110679044B09CE57B64D1EA9BD4BCB4E71
+E15E27D15A83FC12ACE44971B199C9ECF06F20DBF062B6654DC6E15DAAED262B
+D645A7B0B9F6A4159201A1650DDD4F74EC78F5EC876A1F58F351BD3AAD7C46B9
+076F73EC8972CE1DA144C78E629FA13B34AF57913B2101A4A236DDF2FCFF1834
+1C24D8360B9D8A24CE3AD889967CDE59D26511EE57B2C06F05AA04788E1231E2
+854E0A2EE1A5CC34B44547D9EBF87FBC6D1B9E0E5C0323D1BC82EE7358F247FF
+6EC3C4F7817F405F91B5AA3FAD663BA2F7E28FC7B50427449B942D0A3820D2C1
+A10EBEBAB909EC5072E37106156859B98B0EAFAEFB8E13A4EB6A1E004B525C69
+DDE72B04661C425A7E03FE440008695D45934CB6192B6A30A5CA8A3FC61D1EA1
+CC2E1F17EA42F6A562E063C2E66B90189D123E6570A485D5019BEABD9C39F639
+6601DA48143C88488B0484E823A382172B3133384336F5369928B5161B7AE927
+710CB575FD233FC0908DC203D3B9A8ADAA0F454054BD29B037F3FBE0AB0F5A50
+A3B80660E06E62CB7306FE8612909E8DF7A1CB7B39B77524CC7472B3964C7C21
+7F59E69BEB0EFB64AD1F79C38D246CB63F61BB31DAA2BCCEAFBC1F418F2B6DF0
+292B5F8A4763BD8BBAD841D0A08D3145064510D427C5978470067ED239D81F6B
+0A10477AC233C934CEA58FA051E7F1D915CCA135A0658BA7736574DEE0887216
+CA99343D134715DBD2A5C46B3BD995A4B106DFE5A24347DFE38A14CBBAE8DBF4
+F8B7F782BA8FC181C3F8FB1DEC2C706D7DCCCD97EE254FAE1A9FC6B2466C04AF
+626E2A59C8B4E96FFF0DDA9872209084296276E54C5E8BB93E043BD9C9A36AED
+2C3E82BCBECEEB0C2DE7356F71235D9CF94EFDD4098B0DA80ADEC47ADA99A946
+B79DCE7274C6DC92757550B7FBF608886D3196206A3ACAAC643395C000541E5D
+19C9EBC62BE7AF3F3F81BBCB0476BE81B2083E8802DF643E0E4A8C873D17BDA3
+76141A6F8C990869A3DCD7AB7F46C701DC92ABDF4AD9F38F01D2005415C1BADA
+9832C0888E5926C5344B85F4830C17FC928A585CC745DC25A7CEF3B4D41C6680
+219EAF65CADA5524F5FB1F09343CC28AED8FB7A164C25F9CC5E8FC6180D08D88
+509A93BF0AC28ABF2B9C27D5707C4F0188E843E3E8DC73A58D74B4D88525F699
+5B98C71A6982D6DBB65B105B2D6E65E8171D915D8A1BBD89BB160C96F478D61C
+EC0FBEEB9AF29705CCD13061097953825DA7354112DD72F1AAF30EBF508A5A02
+6C7680AC7583974BF6A82F4AB9F35260EACEC1C9036C12C88B28B3C2467E4FDD
+A22FF5FE59355DD4BFD849B5AC6C9F52DC51A3B8A4CD1AA7491E785B0DF81C1E
+33B610B2F1B3595C0D82B86789D548A92C20F5177B17C35A961F858D7DF0CE07
+CF9A957E2FE826F2C6ACE69A2082EEFD86D932C9C3574160AF7784CFA05C1EB1
+A881D7AFEB71668F1DEDA3F8055640E7CB2E7DD23139FDD37373FC6DFEA85C22
+B59330D72D6331B8A1D28A9B3D2172A177AE5CF0D22D28A1911F9F3FA700D355
+F84230610E2B79A735889C5CC591347AC17F9E65C03C0A1CDA2CEF75CF01D6C7
+C6D5F727258F499B09B0A042A97F7ACDDD7B188A5B917E3D7E7A411A0AC84F59
+B96A7DC581B81019168C31F7E5F6EB8211F1F44B785391D41E89565385D15D9F
+66FB6986A66B2460B4C8229E244A322ED81FEBCA8E2827E4A5E54236E33A788D
+0A06625F92AA6347A73A477A6A37292BDBF2DF42D5FDB1027DCBC8E481147AB3
+7779E5EF008A67808490E7904DFC740E38BC185CF0C8F0C9002606D31764AE5D
+FC5F6E9C330D43ECA95380B988084074E8C268FDFA357F7045B7603DFFC5B0BD
+01B257B0A754A14A565FA0D8C89CF7C4C9FB69445ACF7ABEDBEEC24C87E89889
+61DAF3144291D4A8E7ABB3CA95F9E89AE84649419A20ACFE872E8BF81C523626
+6CC14EDFE5565FA25E65290EC272E2DCE660A916D60C07C4C9CFBF539C7B5497
+C55F8FA22CC53374F6E07374A73B0F6F68FC0376703B6E73B319312448DD1CB1
+962E16A84A3873A322E7B3C737B42E18D53B02BE9EDB07D21663D0ED6443538A
+276EC167D6DE7B94625C6254FB5555DA81B5D6CC92191D15C002F813A73E19A4
+A7C63106EB5C5EA7BD9E1FF3D4C3BFB6265C48AB48CC4A3FBA55B0D2D8795D55
+484F3E387BB56602B8C2EC4D04A8E123AD02422D1FA04809A7F2884957E9DAD7
+EDE67F91D63FD0D73D89D9BB9126B5DF3C1C09CFC81A7C60CF6463ABA6197D2E
+CC1E8339E2F5A26569838E66E7024DE8BF50BFFA3F1E6A923D363DAFE4751B48
+D5ED2CD68C5C8F248CA0C0A9B9CE506BE17B4044FE73003395274498928E081C
+450385B2F2D9FBF91871109F137E52CCA8035C9B30D3419901F342AAB26F874E
+449F214DD406C210DCC35EA89E6A0397E5AB4725586EA12B8C10F41D292F9140
+115A57DFF19496AD04C0D9A640F7AA25E9E22A05B23C7A6FBCC115E3DAC7A34E
+BCE9EC19AE54BCA3A7FEA7AA0C23B24870FBCD9BB15AB17F7002CC33ECD6F0EC
+4D43607C98126E7FF7A59EA187F3DEF3B6B1A174926B2D0CED8159B3741C0F67
+A16AACD009847CAFAD44B338D2A4F3148D6CA437A8F7709AB4D29EFC4A37C256
+5A3A52282ED1B5114C14045D2A3806C8A7DB6854EF7E158DB4CD6C4F84A46047
+098F6158763C0049A17CFADB12AA198B74E7AB62805556BD9DB8424A1037136B
+5AE30853446E67EE01770DC8153A906FC71DE0D8C85B86DDD62E6951B77E1709
+900338A3CB40515E0636185392979B2BE52FEAC763930A99019C675FBFB94041
+DC09D119540CE689EF7C3ABA5D62573F6E4559B44F3F8AE1C3D04540525A10F6
+501588CF0897D767C84E00896EE7CEF9FE832E772AFEAC08B1700F8F54056E19
+F05D44DA94063E497FA35C720A6EEBB2156BC1D91E68101C366AA5BC68CDC2BF
+90CB15EB12AE0F234B370EFC0B4A23C4E503EAF5529A032838C87F51FA806214
+41BF8EDBF22C89F8905D4C8F7260B2269180C6E3127ED31ABD878D74EA7BDE87
+F597D440AE923A58AB02D27E349CA7CC043B946D89D81C8AE4264863989AB2AE
+5061880897F46E6CF9519548AC8A01431C746C482F4B4C6166788D372CE9C997
+E233DF9597857AF04E493EAFCE780FD229D04F4FA02CE51ACF4BD4CE1917F19D
+12C4B25B1A3575F0B41317EEA24DE1BEFDB1BC3AFD5F61E512238726E8E3A31A
+8B2F3BE79948C8B1B6CA815AEFE34B90DB93B7282C775D1FE88632A41B4FCBD2
+A05A9A04968293E79A8FE18892B806179790119BA3FE378B2AC882295A25C7FB
+59C0F458CB0FA4B103153A2AA534C24ED96976843EA8B30E30E6DB279426C24F
+DB7D8ADC3FAEDDE6F204824C5ED8A31E10FA0B8DAD46E1BDC4E80436148D1134
+09D08C56667DE58A1E78DA8103A4E9D6ED7DEACF7561BF0C85039468226296AC
+861156CB0F0FF2FEC76D2A32E7E49C48F06A95D61A2FE40F135634BCB99FE538
+1F8492A5CEAC9CD4AC76533C237259E077AF4F1F26B3D1B0EC473CD56D3BAA8B
+CDDAE26E7CEFBED818C1DD83AB0142EBB928E6FBC0697FD81B7A73B5CA05A16F
+11EC2428A8A77674D63707F0C91D78EC64F8D5F648199904AFCB27DFB49FC8B4
+CBFC4869BC0A2FCFC7AB259DDF59A941CF4A1D4AD4F451CD7FBDB168FF72038B
+F1578D89C8F938FF72D408753AD113114460BEB902B7A0EC4F37A6FE3117E4CB
+625A664D7FC480E986681C7E3055036ADB8546EAC44B5F12CB4001039A9DE56F
+A61D523DE1B0F83609E46E38CFE4146049420154A9C7C75622032404970B674D
+4F79BC99A5F3F720A45709338E8C6A529257281CC880C8C77CDD0F7E6B495D67
+AB139E3DA9CCC3C99306C3CE9B0E53D77B1A009A261B8A22B789BB67934EE7F3
+A1CA8C2170082F18903F335085FE5219EB3CD0ED4DC01C9A45426C26046219F5
+3CA60CADB58F6ADE1FEAB848184067C6ABFC365553E20960EDF70DC319FF9574
+654155F8AEFD9864A839EF5E0327291C8784AA2DADD37665FD8A2D70066411CA
+C88205E79FF0E2C2FEED0661FFD3736A81A26AEF35599A7463B9F036D6B22AF5
+A6B0C9254F72BECE010800BB32100A745954D96F9A273D5BAC6658B5433BAA80
+22B18397514F4C3DA8D0AFE9ECF437788CF11071BEDBFA9D5FCE42FB0896FFC9
+629971DF9C78E9C40B065C909971202797E90387D12835DF3D305370094E9B37
+4D294623FD09CFDEE5CA6F75827A69303D30026AB518BE812F021C7B25AAFE70
+6485201252BE6AD4F19F33A18844904890003E57A763FCA21B0744BDEE1473E0
+CDD16D4A0A20DDC9B9CCD3E7146C95696FBAD1D1426C6EFF8733219106B56B58
+42DFF423398F878930F85DA3245F6E248E98674144209F1DEFC9BB3D80F4425E
+F6CF06E89522871DAC2865
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSY9
+%!PS-AdobeFont-1.1: CMSY9 1.0
+%%CreationDate: 1991 Aug 15 07:22:27
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-30 -958 1146 777}readonly def
+/UniqueID 5000819 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D0037D33F24E2FAC2B0009AD3C8350CDF8CC
+65BCA87979C36D14CB552E9A985E48BE4E88ECA16DF418749AF04FDD2B0E1380
+D281BB2476BB45FF30946B247DFD7F57305FA87E50CA338121C71CDFDF927A9C
+77FF14CB4A1D6D80356FB1171ED38C37702350497B44E42CE31DB2F493807DAA
+15B887C671199A54C4C1294BC520F5538C15556BC43C9F62342B121C6DCD6C5F
+491DA47FF360201EE21C08A781ED0589A6DF91B99FE118B9B29E4F068672E52F
+1A06C514D91C4C937D4E642503392B1CD1BF5AF0BCA28EBD840AD76CC39AD7AA
+CF2C05711374F7849708E1106F88737C9AA60612D384CA8C173FF1031EBF6EA4
+176136DE1B9F29E40E82680A2CFFDC24DA05853307F1D1F6537D061EBCBCC5AE
+E6316380ECD8E63ACBEA9FD1FC28949366850AAABCBC9552CAB2CA3BB934C8A2
+14C9DFADE24D9214858B1D42B2171DB18A475AF78868C2549F19555AAB07F586
+58B28541C74E14F28B68DA42A9D46C031CBD74FC09BFEAA3AC1DDC68B7B71B81
+6003C9C6AC8EDDDC046D247A2B8AFA63A3B1BA1F12AE0B4DD07327F0138BF470
+4630E4B5DA55C194F454EE2E872E0ABE6B879DF2E87CF81F75D79F458F7D3F81
+FDB76C15EEC4125D18685E1D8591C54C0B0D069E2ED73434617B9D30E64457E6
+1542E4630E848948FF2747D5C31B9C314AE108931003DB9F76644DB43D245499
+2D28E8452E50B1945E13A5DE2A8B93523D3671D1C7ED07EAB6FFB559E5A1F828
+B22D2FAF349B40C3B31FE806595F67C5E75260514F456FA0013668D948619514
+0EFFC35C1AA131AF8578A254AE62CA75A6631489C78CCE633A3B302BFACB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMCSC10
+%!PS-AdobeFont-1.1: CMCSC10 1.0
+%%CreationDate: 1991 Aug 18 17:46:49
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMCSC10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMCSC10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{14 -250 1077 750}readonly def
+/UniqueID 5000772 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A30EB76029337
+900ECFB1390CA5C0C3A04528044F266BA17BE487C79B94FAC6D6484684C5BFEA
+87BCCC77D40AD11552035E95E3007126418ED49B68468B38A14E88E68A267B98
+076F1C9769A5AFBC285E5B158EAC9F926F1D6C0B8F1D57D9C31D25AE27123518
+9D2CD92E5689E0213089BD268DA5E47525CB8EABAA4B78A15AEA34705889AB3A
+FFB8953B5B3482E52BFA0940630ADF8C0AC2177D907324299EE980E850F203CD
+B627962F43D5A678C44243CDE97853BDC6AB45FD5C09AD274DAF89929F583CC9
+CCC24BDFC68B92111055ABA5F26D2DC67C70906F71C2957701D65AE746A60C30
+40E6CB24B97FCDAD0487AE38A201FBF0E41BABD2181981A71940F1E707F91E5D
+C8CA50CB16D8702D188E56D014D92F76CE0B52ABDB9110E32438D2BBF3E6A40B
+7B005F10BB437812CAC6ED2996F7606DC962C4FDE207FF322782C343DF44CEC5
+FF06A55C630C20E9AE1B0D1C5673753C43BA0767D65D1B451CC6380D8BB3C4DC
+81E8FD8AA79BE993218686F29D3CD925566DD587F541A0DA1B1CC3BCEA2E6C7D
+5E1016F6917A871F1BBAD96AF9E867735017119A381FCF33EB2D3E1E7093FD90
+CDB0CED4818CFD9E201A03430CEC713620BE0D3254158931FB657C6AD4B2482A
+0E7D070D7497892E9E942DF58E88CAF0C8221BF36BF7C435BF2C683A4A2EF4CB
+E85820A8AD3486155A40143011BA9D76297F46DEF69ECA4596D6E4CAABF84091
+22A96A4BC78A8DD072FEB759A68A44BE1164638B6D952147EE3C628F9A022060
+1D1941E73310943FA782532ABB1116532AD67AEFE0758C051241E301C7E13A98
+6447EB0180BF6799814BEA4DC0F727D0A40B7BC3B1269CDE174453D6A3C4479C
+146001CF717DE25AC1BE5AEA5F2F1C17719251C429D3AED19EFB5F708A36D89A
+354AAEB20A954E4FB9682D9D227FAEFB5CD1388867E0860EBB0E279ACE74934E
+3D12254656E004266D501B9DE05E7FAB380E4B69467E641D0857F13BABA4A940
+02BD22D63B9600A7FC571C1A3AFF39B9DF9F0DD9F396497CFDD52BFACB8CCDF9
+FF9277FBE2D32303E4B3CAD99F79A7F45618B900CFD718F9AC9FCC77058D9486
+97FC192847B08CAC407B89801CE23E7D54AF9DCCD0320CB64BA0B3E41079316F
+19B5A779D0BEC5FD5763BEF31035BD24BCCC838444B60BB1EFC43921BDC2DFDF
+C3CECA21CC24C1C7C3CF17D2565DA4EBC9EE79001A286A1D0E0E8F48E4FA44DE
+5DAEC3E84B688D4235E35D78264A9CC83AED6DDD0E4591102EDCE85F2FBB474D
+CB049179585556D6948D6F720F88853586A768547C085FD2DAFA1B4C986CB4C3
+A92B580C149EE31212E1A0EC36D1830FDDE4F19FB39C2F64586C292AF3BFBED3
+6E3E8DD85124644B874A723D6E9544A3E56BACE9D8A0CDE0CFB0C334258D6A71
+F3A580D03195D0B2B72D92B4EFAB8F8151564C2E86CDDEA43546DCCF1DE7EDC6
+FD8123D17D3DC8A7805395A556CDB49FEFE2136DB8C62B163C37FF258FF675D6
+2D9C7841F7F1FF81389F85DF6382DE676B524F3956216CFECC417767DA7F55E2
+8470E949ADB93BE1E12B281532463BB4CE03C47EECE8D6C4AA13BFCD1C7313F7
+B626AB03395711F8EE5880A5C452E6A0DC1F25285E9C41044CE657AA0BFF7240
+BD162FBC9523073CAAA4790293305910CB07AC00893F35FDC0F0536C84A8D184
+E85542A95786168E1477DFF426E56E03028F3209A56995A842118ED577AA7A2C
+735B6808DFEECF65D37E6B7998909F23A9B39E575963B07CF93D47FFFDA47EB6
+8F8EA091835E8293F2DE1C42668A16608AF3F3B2C53222A727A68327ABDC1270
+E98ABEAFC84434D8265697A16A55A735F77EEBF682F1C4A5DE01E042187E3845
+987EB0027B14F7C0EF6C9C5A346ECD3417E381F3FF97AD21907D0DC835E6D976
+990047FA51AD8DAEE9A86381D60B8A60244604701A782FA90D24C34502636353
+2A2C507E189F1D1ED2B4E2EAA426A236C200208B43C765F680AA8F31CFC57992
+4BA5003418EF6A81B2770DEC775C05F1CD948A39C3F5FA49D710151DA9AC22FE
+2E68640D5A47F5B4416F0F52279D1B87C563C95639B4AA9AD4D403FB48632824
+4AFCAF43318E8E61D68B67F207DFB322ADBF72C805F09ED0505212F64A6185EF
+625F9BBA2126013E181577EB5B4C5A395B98871DAB1164572FDA647DB840ECBB
+B119758B52CD0151D12D12EBB5E3AABD05AAA33CFB30BB47F7C4DA5963CE2718
+4EF6272DC76784551C91B62BA293AD0FF335CB2BB8577A957CAFE7E3A91EEAD6
+E3EDD75B5A2BF62FA89A87814F1025344029BB7EF08D1227A6139EFFC9DFB5A9
+F17EB228E3A0CEB99FF9DFEDABEFE69BBEAF6C796F976595FCDA62CB0DF03A1D
+2F7D4A307DD6834159ED84EF35D9C2B8DB908469E146640B7499B7B17E3209DF
+BFD574F6537287CAAF629AA021A784ECF4751940D231A6832C520318266248BA
+0D2EEBCA5CCC8AC81707E6F35424FF58D5B4828B71D5A59480A2502CD71D5620
+05BBE8D046E1E00F6E726CDC38E0788584646D710EA033E917CC3686DD133B07
+4FB8A343C20F11FBD21A93A3DB65383872BEAC848834D03F0217183DF50E3916
+AB7B68238C23848CFC7D345FC4C70AC15CCC3433592AE028C8424E539826AC0A
+83E3AA79AE231B447D6DCE32B074B5611EADE8C152F93B571154DB9213E6F6B6
+EAE38C9B2971C8313D15C953CBB7A37F5BA658306AACC6FD3AE4A3D0B1110507
+0854DBB4FAD36BDEDF0ADA15108D9B6F7F61A10A9AD25E87F84A04989551B306
+8C393AAE446F7CB06CB19B9D805DE0C52C70869CAB832F04F3E92E094031E553
+5B8679720C774280F66B56DD63D9EE47371EA55817C4F66BA651C473C27A5F2E
+1675547F0B8861A42CD2ADBB8BC778156B5E139A611CE0A17140B72FFB99EF64
+D805E4C477C0EB42A59331D1E7020FCBEFB1B8753CC8DB27509E886EEBBB99C0
+937E7CC06C3F42613612CF874263BE46DA67355ED0ACAC9A1DB02C5934562EEF
+D6B30388D057D4488C4B77B3E04140C48966DCDD773BA08661710D19813A7887
+6735A595B2D10D4CA14A807120A43B09DC8855B0EC0749F3532002801F45BE01
+3ACA592F545511E6A889833BCB595D94CCC0905C4E298BF2D1BA59B1CF7BBCC9
+832827A0FA9505B6D468F73DBFC63CF5188A5E2C1291C7666BF88A82FFF54275
+BA9AC8F7A3EE9469FB4D5271750D4AF3FC0BFF55A5F8DD60AD8745822B98495C
+2843A39D4FFF1760C2C7F066A760B2D44EA0D36BFC8171EB791126BC3E3575F1
+7194B6A35677519DBEE369390AAFDBCF8C867BFEDE73AD82F90D2F641A9A4016
+C24294F7302D00AF096FD25D8ED6D779D3A1D65F7BA72D9F88BCAC873AA8F3C6
+BB9F693671D2C1E75F57C379604972E32DEE03D3709F7B1E2A71775EB003C9B8
+7DD49825CC31AA66E5573863B2975826C19B8A6BF57B8D2E47F33FAC2E3C23E1
+22946FC2FECF4B38E11F79B9C82EF395BE97E699470836C5FA2F4953C6BE47FD
+E8062B48E429629C765EFCEE6CB7DD1D6F58D37E57A8FC521CABE705C7CA7417
+41D0224C9C3D4210101B65ECF0EB4795B03C2ABC4504C09E9ECF74114B39D1BC
+8E83B1D818A5A89886071A14D57DAAEDD70540952F0C649452A42F6626C0C1DA
+165CE8233F8D318BE73E0F5E1CDBCD62C4BBFAF01A152372BBDF03D4F5950969
+BAE25148A8EF0BA62C20D9500F98697B6D3474B5E5F82AB1C260D52F78CBE06E
+D487AC6E916929C5D35BFF07447608DF3C31296551245DE0A3F539C0BEBF5EFF
+3686859A904A688FCEE6E2770DB0209B52BC1260B4B0953665572E53FBA56545
+263D697F6D0EE366972A66D481FDE9B5B760A749D9CEE1477A263BDE7163F785
+12E5E52AEAAFB6A05AA3A9412E623AFF76DA062BC8768DCD745FD0B4BC618104
+C4FD4CE144C19D032CED19B8F0A0DA3CC45B2315EA918AC2580BFD08269F1A49
+12DD707B3EBAC19D2593C43CBA8937708BE239D569415E55F885384032B30D95
+1294463865AC6E40EF853BACA42E65F2E8718FC747FFE9633F614B9CE0A47CB7
+8F22A5EC845BFBC50F822319D4CD604CC4A74A2649B2B3B67CB5D79F93C9DFBF
+457049066E8A4F3A7DC08593FA16FAF7AB4D8DEE6DAA41DE801BDE5A295CDBCE
+177EA270FC3C77914CD71BC4C508943B00CF8CCE983809DF50BECD29382C1BB4
+CAD8D737A88F25C0B9BACD9403A5699166DE2DF733BCA2B7A5C6220466B2649D
+46F72A5B9220DE95F19ADD3A5B4588AB50FD5BB335F89FFF1738C8A4E8592E9D
+5BD54974C2F5F5449C2100FC239466021C5AD8ACF6F07C9C6B01060CEC83FBE5
+091CCD6B39BEB888015A349245FDE839454038D30A8F800588535A2FCEF762F1
+F90AB562F287030CD4B5D946AA3E78EBA4C852D5AE9205E67401B012F257A72C
+2296AB4606F43EF8B1ACB295BFC33F3ADEA31DDD57D6B4A0C133F0F200DEA2D3
+E4126CB9104194E6617A15E1796A14598F3A71EEFFF09EE3DE6EE31FCCAC8C73
+5EE4782DA3CEDCC41EB50C9E12269BE8CD955C55261931E63F3E5B521EE9F6DB
+83B0F15E7DB784734E76B21424497B72646245B705BCE06988FD09A65FC7A09A
+27DDB98733BF0D7C56331EE45E9507923BC85F4B72053C2548604ADD163E28BD
+00EFB6D761342A3BE08CAFEF79F21E5E2949AB810133A394609923C920D44E10
+F605E5D90BF5183CB14536FEAFF86475E0605AC83CA928201ED1E5D8C5AF6AE8
+C7C3FC31C213633EFFFC133CBD012B6DC15A49D6D9FC0456BEB04FD8BB2CC10F
+29A93B34FEDAAF618DB52B2993E7EA0897B4A8E5729D0906FEA1F244100E53AC
+70EAFF565BA48199A29705D8D41DF7F1A7382D11616ECE63B1F1343209404B00
+6705E0ACA23888F0E5A183AD39F812CA47B7C6EA888B302764D7817260744D5A
+CBD64E7741D914DBCB538200B8F2DB8332C1CECC251C4A5A3F64D30569000DFE
+A5870E1697576F04F2C887B3E406A99E525D50FA1EF50048FA427B62953ED05D
+DF8CD3817D3DDA730622EB3E00A098B84F1E09734ED33DB4E2D0E1692DB61A2D
+3FAD2FDC0ADA0251D32517E08F0E74FBAAF407A35DB779995C8B5552696065AA
+E4A0789023826E290408D0B871309C665C6CD1645E4039F7F63D1FE9FA5740B8
+D590F177E0381832A300C22CCD9E91E7A93F40B0F5953E40F0CF021FCD5DA3F1
+444B6E8D2E0EC54C49E083806CD5743ED134E97F525BB9F77942688A7820FCC9
+335AAD4E6C71F201B5CF7E1D7C8156F2D2C26D51675C7A164F8C5F8BC0BAD163
+3009C8647860B4F760396872D61C8ACB542AD323EB06546B781D9D6681D0AB8F
+9D340526B5062A4CD4FC09425D4338DADF27DD627D25E300ED19D37B14BF4413
+63E6E6F6DC32C593EA549B7A8877312E4498D93F13F1280071546DAA3264589F
+A724E78CB69BC18A4C95D987E5264847D55F4BC4EA50220D73C1799D849FC874
+FBCA9C2FE0E4AC60AD37B569FFA06A12D4ABFAD51FC492E1353150BDA27BC49C
+791492C6D340C9BB73FCDC6A30655474D22E25845143E8DE4327765874FA7BBD
+7E09AC46D9EF1FCAEAB13FEC348EB2819DE9F7395B5B98EC1EE1EE1E14E0E28F
+9FB50D0908738B115941BF6A1550D64D7E88390C1E184089638BF40053685A1A
+19B7F1AE7AC99C4D58119B957F3E465674A5654AFA70EEBAB7B0B2D6D7DBD979
+6EE804BC93B9465D453E97617A4166B14831FB9249395A9C1496D51E086B2943
+E32CF0283A4E99D0D2907545D17E7F023EC829527F389374FA1A28E068B4014D
+D0353CC5EBA3603B41993B3ABF2A9EDA80E30CEB08EF43DB69B70D80E9175F1D
+FA17A21172CA272B7E2FA169530C6F6D9E4B7DC99B0D60686C9905B627531100
+B2D49835AC49F002A9E481B62ABE97A4D9487A7F4DF4DC87FFED30809A855486
+89E50FDD6D9AF814F74B5A2FA2940DBFE394C573B5150CC5B2BF3FBC787C7217
+00C26BC6F88B5B4B2EC52BF5A6F3E24003A3A59B901FEBAB824BE07F958AB71C
+E61D639EAB084E31FF721B4E17DEEB0E8A0E14E13ACA8BEFE2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+/UniqueID 5000769 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
+B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
+AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
+7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
+20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
+B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
+68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
+D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
+26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
+F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
+77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
+BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
+C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
+30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
+148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
+E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
+E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
+337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
+0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
+472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
+A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
+31B84248049A4C7D49ACFC81E3E4FEF5F69FA691073C34351C95E8BACB6C51F1
+F0A239823BF97F518E4B04A7F85F0AC7C6BE40E6FBCA328F96D0F9D9AC3C2A53
+F5781366C50469C5386935E833FC248D8260AD6F72D2F2D3688E9A94F87E5F62
+5DD3358365F85FBE367FA2769C7EAD5EC9BEF5292B14ADDC9683E8CFD76FDECB
+CB72CC020BF223B29FF3A9538B04C9B9403B01CE4DE99EF7B0CCDDCDAA7AC5AA
+8D7BFA69A836CFE988DDEF001303F7D58DD7E193171F7E9A23ADCB244AEDA2F9
+642CBF8FDD62F6E91B80825292EDDDCD7496624B6C1D381A61E8C1AA0A00DC0F
+2280242088F24D4129B4CF1320A2989A08765AC390CA76720FA030743CAD6846
+F6E8789A5E3E96940C65CF0C9677DA1EA3162B71E99B770228070BB9A660909C
+47F380B10F7DD5AB2BC23044B4175164A88BA16451EF494E5A1902F43E9FAFFC
+3A60286E5561E16780F2115B85685E797E63731011E10EE1D64C148F65873F06
+5DB9C32ADFCA9342F4A18E85BB905DD4AC45AA56B38EAFE3F1C9D17D689D8B0E
+C6E91A7D42EE6BF82651E7BDB46BD65BFA57BE8E0A797E97BC1DECF2EA2DDAC3
+CA6164F5AE380D6B2A23B5DE1B97C91D29E535A2274BBFCACFC10C12E554D0C4
+EB97C43A3C752B5393154E9865685D33439FDDDC258860296047026EBF689762
+A1067296C711A03086D178FEC65A2FB0BE917ACA96321BBBFA8458EFA0E14A4C
+85AEB8EF6597D75D5BCCD1B0935DC1AFFB755BE6106162EFB60676735BE64564
+B5DDDAA7C26ECE1690A043F2754103FA3F81E29DA762BFB50D4A3F3C8BB419FF
+E9317E01EF54AF28B4F875896C7B8196A95707DC79F1C3538D4F162260AFCD90
+61A3967C99F6F780646B5B2A97DD6649CACB141F76E10EFD1A7A9DE0D76705A5
+AB7155D73ADEE46D19B6A7CFC58F614678D999A23C31E1C86CDBF7017DB90531
+C14ACA1F11A9FEDD6C0AE413C7DD478AD99E7CEFF7785DD631552FACE5B0B428
+5781E221364CCDEAA1AB3486990515939A9EDB065282DA4C5A837C81CDE67A52
+97FA3936E332AD57319A0DCF95DD083934855AB5CC535EA4E9D9DAE662F7BB0A
+6D45FBE3072DB42C1D27BC8DB5257FEB94D5CC9E7B944C1AE3F4B7322182690C
+9541CA08810032516B71FA614EC6823210DF837B551624862C9D4A1A863500A2
+A913E18C4298DB9EA02BDC2BACA79F0B57897AF2E486CDBEBE200FA42B0C2213
+E577843CC8090A89B416F8D09827C62EA1756C82BCFDB38A7888DD1866DF0EB8
+E45701027A28440A6DBADD0D1158BFB645F23DCF66205A14175E31281B1E5CE6
+7BDAD0C786B0782E76044594F693B3546D0D807168833ACAFD06DC4B8CB05496
+D8041FD42795FE58DC25E5C14E78FFFEDE3B48BA53C008C1FC1723551B65BAC9
+155B82AA53A9475D2B62954504DFEDB3DB0A8912313978CDAA587619F64BB9BE
+C99872DA229A8D5A282A92148A68DBEA0DA4B2F0A08D2A00F6BC04F793968D0B
+7CB56E8AD3ABB9AB57A514A170F16EDA92F8176DE7CB42C4F23E504DFCAD2B20
+2ED5863AAF337A28DAF9FFDAF578C029EE69B0A030CD6134DAEC4C0E71BB0851
+E7753AE655AEA168919C087038417510DAF6C48C31886A2674E2487C2E226B99
+585FB5225A704EAF95B54E688080E863FB94407DDBBDF259620A9BD9073640C5
+ADBF23A33F705B852365912A262A40CB57FF109A87AF25466AE93C957DA63E5E
+6DC474A4DAABBD9337A852206C50B645D28AC81A9F1848425DFCF6A10702F23A
+1CDA1F43EFF11578D55C1380AA9DE2B0CB7BDCE13C78966FC614FBA1BF4F64F5
+4B38ABC7919DA46D084DE5A435F006F127F3D1B232089ADA7B1705E03D727BA0
+0F8BCB53E985AEF73B9D68B3DE0B1CD36E566072AF21BDE7D991E090D02E3239
+E1E389F9F799BD17C453F0885D74FB9CA04E6DB6BE1EC840F8C1E7C117199177
+A8BD4361E733E53210D3FD7B71825563EDA0D99153F1A81174D5850704559972
+60D67F2A11FF9403C64D9F58F30C2A0E89C96281F8395E26B12C6EA61FEBFE63
+737F0A33D7E37E3DCD245043BA1522729C6DBD5D78B2C8C58FA5BA77BFABCAE1
+AAE7C36E70FFA3E83A906E8E63CF6F331499964299443B9C5F0EFB91DC4E675C
+5784DBA5413F3DE861903D970018AC64CCB010133F2EFA4821ACD4474715F057
+6FA8565AAD50B9F19F8DBB6E3AC72E1906423AB35A93D56E34CFD5F3B5863571
+F654EA6D67B299A48185EE5DA4F873932B39C23F57764ED19EBBA923A51A2C6C
+5CD7A59477341ABB5B5F21115D1774500B930AD6CD07638047F45A2AD8FFBA36
+05C5CB6B7B97F88404462CC50EC5A75676E8F91E7D42C4DB59AA74E24848DFFE
+B556A249D8E3D23137B60D9E8FE2A9641AF959A216C57A825B811C6E7522C443
+69B8FA6395F7F3C628A3CA99FC5D8689C95E35EDD6B271F3FEED9D184F0B3AFA
+8A7B6100E336589BDD6FBD03B782E36D809A64E9A94F5E9B3C9E7822D24D46D8
+515CBAFB830CE3F1923F6156E29AD479301470DB9A9180FA7381C4A09E9D1ADB
+51DA817559A37DE2615DF1AA2DD6B8C4BB1C9B27723DDE22C116B4E43ACE5463
+71C4B79C1729EBF6F1ACABB12A3F596817827589E67879ED40DF7DDD403D45AA
+021B11B11859CD7ED42A6C6F15021E04508C2CBF94CDA637A75ACB47D3A249B3
+31DC550B331B22CE2191850799B2E0AF443ABB788CC6297929AF3D3BC9405C8F
+2433C4BF18C250C2C15C442C10C119F543C101F60FEF1EE0F9558A8E2F6035B0
+C5789E9248D846D2ECD3EC4E790A79D2817F5E612833FCDC360C6902F176E130
+E70FC6E15E07ABF4FD6BE5F3EE3BD4A48DD38256706C25BF0E6D9A7C51DC80BA
+72BC5F5243C1B49E3D75455BEA13195C093C47AAC6ED3EABFFA674F9E66207EB
+98571BAA8C06389AD5402730DA846CDD6040CA84E0F27A65D1194D916A835275
+4E99D6F6084F8EB0E34940F47C4D8700E1B46AAD46EE464D4E10C4E1259D2208
+70D0EB1661EE28B7FBA067BAF8067480793B37D4C881678B2612531E87BC7243
+0AC0B8A4B816F1670443C0A3E4FD631EB8B48DF3D4A03D9690408986E98F227E
+05253E9BCCB8C61AA0B4E352B6B76FD9D785AC8823A4FBCEBD4574182D86382F
+6CF90EE394506B1043FC4137E9FBE5D471F605E34B59AB3822ACF3B71730A79D
+802486209B66D4AF6BCB7821CE4BBC447F66B35ED8BC949A935C335B9F61646B
+AED373E141AEFCC868D068C2D133AC284885829718513ED5328EDF5230C38399
+F97CE6F55004A89D21937914FC9CDEABC3837A63B658C1F96E1F6474420916CB
+3197C6F107159EC20D34E13A8698BB04E9E8BBB59993776DA701148447D07F19
+2E8FFF1160E89A82D07D58C7DFC3B71EEBF7A9E958572BAAC093568F5BA7C0BD
+B118994D1A3A9F60CC96A1A996D369E7FC684244C07C3461C932ABF4C266B7A3
+239D80C79F603449A0145D88AB24A4DD8B2D82F315AF8F05904EF22F09331D9E
+D6340306D266B4283E919117D283918BF0B4D944BD0B7990DEA8859A690F011C
+7C6843BFEFC9329CAE786F102EF0CF8A2D70050B264BF0D824E1647191D1AC13
+C23E7F53BA73E1B3636C50BC33E2F8D0631C3A76789304A52DC48AB4BD9D6C9C
+51D64DCF77AD95EFA09415A64B346B32D4189A9922B9514A26AD918667CE94DB
+A631AAA4EABD64C71E9E954A40A16A66CC50F444350FBB77C1BF49868E2DF59F
+5EEBB30170DD95B0D8D7530E3B613B70337239A47C582AB7E3E0EA6C6C908B16
+5E89F0969A57D2AB5429DE5CABF2158AD4DDEBA86000C37DA9D859BA60A6A4B0
+EC7C29E0B6E01D174EC741BD5989B5BE020C843A86ADCD2D6BA02CB524140D80
+97FFC7AA43CD5ED3B6A4E7D4D90F3244A71598955428E310D2263394B807FF04
+E102DD0203FC79B002D2458B4E29AEEB42CB757197316ECA9A21D5E8D0F1CA74
+1B52DFB5FDC9EE0764E5A2F2CA7307050D13DFAA548514374CE8BFFFE8109F57
+638DD8BFCA8F51079D9ED3621A6AE9CAF4BC163F79E283BC7D52E215E73B896E
+7A208969AE5E6D2660B73891FE0C38D3F65A65117EFEA6C9008F006811ECABB3
+ACED727AB8D25D9D6F7B12A630090675131BD7657017E0D1BEBA6C721D97E496
+3113B14D6D8C6ECCE0C82CD092480BE17F5031FE21FA67AEBAFE90E2DE02F273
+8B82E66CA84CE6210D492175BD6A0EB412240AA3799637142CB8F8E07033FC81
+CAC9CC379FE10A0E444A373605647996A2AFF259B0A2332DC2C4C6AB519A102B
+5A0EF3331915EF092F5ACF3CAB65F21DBD04986BE3DF862411E7EDFF32867B63
+9891E06A0BDCDABCD7EFB0F8080CA30C79FEA9ED999B9B2D94CB3CD3ABC6C94B
+1460CDB5C58247EE64C7B0A3896E86DFF036B3BACB489FCDE3C6B4926F7D6EF7
+0166D4B404F3EEC540EB39B801F22B57F59F7E987F76E6BC8A61DC216557FF8F
+98901298DD5571653CC29C5B7F2DA9FBB4D93B62CE43C06AEC1B942BA6A3E86D
+7C1F83AC372F681EFCC95CC23149881FD1BF6951C669977722357026C481BD85
+C8B79C02D35D6EDF2DA523EF97B32CA023C21B7C0E746DC61A4E062AFA6033E2
+D1221BBB36256B230363B9B4E40E34272AB93C63D962D5BCFF652259E9EED617
+38DB29D6521453834C876865FBA9AED8D6F740EFD3A0AC9DDDF999DEBFCE49B0
+848E6B535C89DC288C1BC750B9FD923A74853E2EC884AF81499539BA9DA06041
+89BFC782FB656E28F911EFFC5CD1AB78AD270D02AB7D129F1512EDAFF40E1895
+4B9B7FD4D3F0669B1692B22690B08623D21318669D032E899617279149C08A48
+E71DB761E6E25DAFA8B51755120DAB6C7D9AA16EE353A5A619EB659C974FC026
+9558753A717D6F3928835038F32C0FDD63D4664BC97FFC8FD5378CDDC66A3CFA
+093EE8063A0B09B9DF05F7564D65940FE9E6F1E9461355ACCA406A4B6E16FBCB
+5A2C9BA2EF4FFE362FA6CA020F5DB489755D27557242393E50377C6945B64996
+868A29A500C5D5772BDBED54B25DCD6C229F6D43290FDD5D410576511D907D3A
+5BAFC90F329A4C861883FE8185ED5ABA95A7DF29623704DD4EF379ECDE1CEC4F
+AC06577755135A1B5427D5DAD85485AF0741FF7F16884AD6509854D7944CC513
+6EF45A4A3E3F1F4C2DC86682B7A62811F784C3B7A735BE518196E8E2CAD81E6B
+2B8734FF26C91E988AA5B9E1E7FB42DE6B82FF6479AFBB7368A4260F67BDAB69
+3E689082825E4FE7469CBA1B9B7177119C0825B100BE8E6F1A910DE8F92CB3A6
+661B19BE5EC3B6DF6B04781432F40EDB678878FA51FB4F3DDE2076921CF3EEB8
+AB9885EDE74E091F0A6C1583515C7C46828AB1487B18B84F8B85A439A6C8EE1E
+3822776A0A1E25216B7BA38AE77EBC4FB706257290FCBDECBDC13BEB402F2C25
+610AF618A12E7D229F6A83B8CA7D8A117E1EBAFE6C044F13D583223F4DC56E79
+4C297063953E49AEC2428F1E96B1EAFAE79099FCA69EAC63E970F10512AE8B91
+5BD5E11C20C0D65F637642E85058D8B2ECB4A5E6C6EBF6C7DEA6EADA0F978CB5
+EDFE9D9A7E608088F791EC9A12612DD9C997C71BD0465B2D06AEF2DA48BD4C2C
+ABA638772D5E614C726AC75F61823707B4F72F2D42146089FEFC3998D9C15521
+27863929D103F46673B563712BF63819930CD03242F480A026F77B3FB17C8819
+4F9FC69F0EE56E975EF3C545AB514B0E6DCB8E575388E0961CCE8D200F445B2A
+4EC2A853EE7B2192526999A1C0AAE2A90A58DB58EC82A10661DC30134286FFEE
+3EA512A024143D07A6C671AFEC84858B4828B2B772AAE09E9CA9F7882A4220C8
+D618C9C5892FA5A36059B978EF8B26D6839EA8D9C679452810CC9E132C8E0274
+117339DCEED2A92632DA2BA784AB19E90A938C9ABCEAE9296E0935F5F6309B16
+1EC413004EC7E3CD2CEB4452AA657183E4733200C62A02914ECAC30FE556AF4A
+1AF2B26101CFDA61F122B1F4353F9551E38FEA412DE7D0A8445B9D039A417861
+5C373641A4B6532370C2E8C5257583484A065421EDB4E50EE8AEEDE46F557A6C
+6CD994D162A969698AE100116344007A7B7F747391DA9796409D301E59C94148
+F285929AF6B8C6A31D65594F63BFA0D352BCEC60D50E9232C8F28E73B2DDE881
+DBC5F5DD8E88E8EF97828453D5095311B92409C532A1A549EFE3CAC1F3D91E5D
+2EEC82CA6129FE9DB8CC6FBD6F4BC204CA9454C475BD8877597D75ECBCEACC97
+9DC698CC7A064227CBA45EAD0AD850C45D059E2A4ABB0C830EBF95E61F8AC3B3
+8A9389EE9E05EA091E64DB71863480D9E4312772FD9B4D6757556CC7C43FB03E
+04EEA1C9A048ECEC4B7C465CDFCEAB707F67FFDC903F784CDB60CCA60CB3DA37
+09CDEC7264AE28487F0042ED019070BA501C22685AD2EA7BB03EFD5D8728F672
+E8FAEC9A5885461CE9F2FE3BEB7F64DDBDE5B0F2A6CF1FF0CB2BA0DFA2CBFA20
+C539DBA84F0DDFD3E62AFA11CADD416CA921C2965093177B34DAC627D18442AD
+3167DFA2688C2364C0AB3F2DC94D0867CCF22998ECFC568EC07F28161F401789
+4F3A13987DCA67E0012D41C712F4515135DAB1405B77BC1C2C3B7CFB52BDE5B1
+7E2EFF5C3F19195B778B0016ADF3FF0B11DBF0D674A412AA946167CE88D6B10C
+3D77EC4BAE76A665329C977409D2AA8A8CB07325501FCCA2A295F83C21AD5582
+09406FD233B02E25A465739986A6962ACC3FECCEA316A8C747B6CBA3B1C4C7F8
+5A01B5BB008651EDAFC2A0AAB839EBDD14025BC19B9233D54CB5D400345106AB
+E2D1617BC855A3AA6E2B60C50AFBC7FEA9DBA3D30EF2905D96A5F928011CAE86
+B1C6FB92AC8BA20D7B15B40113BDCFD9A05B0F9293477C4695E6FF84AA54E779
+AF7E19AFE02FE9A3DE310E6CDD4A2C612C227FBEA17CC5014AD9853A74BB6D05
+5A64F1C4366DD4D807809FD02B29B8E455293104ED7187A3D4943C2643ADE321
+3299D423DA71D017DEF79F33E499D5DEDC97120E91D0408ABA55CD77190E0964
+F7B7FCD76DC3213CC9D6F5EF9A7456A181433712F1ED8FCC46BA54793C33F10B
+F8BF3C7E8B59C058AA0A9C18CFCF23CCE06D71A146A34B5362CA8EE5DBA42690
+1EE541CD07C043C565F803F5EB1E459807DE1380398989EE397D73EA7D142AED
+B255F05A5BBFF1F73C05FFDD277EF060CA9E3C7318A58AC3BA0A335442BAB763
+E725EDFAB0C984B14893F0050D0773F5037D763074D3CD9EDCFC92F17C3FB699
+F7AF92090BAB4B356C4837B9ECB1D71BCC98ACE7F88448A2E2FFE1B96767F9C9
+45FE6C13E93E0638B370D660FE15D1AD1B6BEEC26C04EC188641560733EB5C39
+D19FE0D6CCADA8D7004F8132E7F535BCEC3C5D45321E59EEAB9576F7B4B39ADE
+59A85AA8EA28B2C737F4368720E2AF82A7BC1B364FCB39588256017A745059BD
+7C31D183495F63A7B4A76BC50C4A00EB2FE4EE0C512C3BD2573D2E6E415CC58D
+E2933DB1BB194B005651138415593EB9EB4B9BD91D37A0CD576B218B6827EFC4
+1D3F1D036C6DA66217EF92B6F349B918AA5E20B9D4BB950823BF7EB9FC07F78C
+8574224AA93ED2064D7A00C98C41F732215ECC9DE1017CFA379A5B8569C3A496
+C0CD61A6201D53177F2736DDF182379C671B38B16AF092D63450CA96C8E8084F
+2DB8C8EBA732B5A84F540CC34A4AD3E9908B3DD149A10767999850D353EB7149
+E2BD0102585AE07505B83FAE856F467310372205F79199BAE473893B723F7E21
+88EE6659BE3088859D2FCEC1604FD568DDA45559DDF64EB10FDB19FE8C9D7C59
+F0E7B781DB5FD80A3C7A73420D470F1256D683F92EE6A7A9DD241B66CE4FC35E
+C6D69D2B66834D848437D45374829F5F1624722806B9E126B43A51B4FB9C27E9
+D5EC07C90DFB7CDA30B53C0DDA3D1F93B7EE82DB6EBC14466F0FCA5149F13B4A
+BD949717FB44FF8BFAFDAA7914240E43B0253E4F8ED5C481376C3B609A191670
+1F2BDA2F6F6A466FD42FE9BE9EF7C3A5B20DCB2A7C18DACD0A75038DC30E3FD3
+64F8389204FEEC67029A64FCC3E5FCF97AF24D98A455997D5667270A95BE2D13
+ED87F410B35B52A2D3D89BF180B3EF83CF39B634A0C1CAFB62D76F373D675E86
+856E7D0ECFD67A5C48A7FF4653B7A607622DBDE7CB434E145F9A4B0501456B86
+3E99DF2570B034243861E4BB80E0F9CE2649329960A792F30913C967F9538E76
+75B1591E075C10BB59139E2D1933F6BED658D704F623F8507B0E2A03C582B75D
+657B577A72585B6926D51882ABE25C752824092C6A1F5A006512FFAB96700DCA
+E2AD0C7D7A3AFFC4F823A02FAB788C32ABDFCDD56DDE65FBA63BF95E890573CB
+EA28F7BB049BD3133DE22E8F4F05AD04133FE48785524A14041C73EAD6F60D7A
+2CF1F8F3C7258172EAC2A9820F4C04DC34DECF2912182EDC86D7412A25A6FB25
+F46341AC7889B645C36A85C8F10D22E41D4143D10EDFF014C00A7B1E4EFAAD1A
+7E42EBC657CBA442E9B2DA0BF049E86D680C5E1C4B2588E99F24844E8EA639D3
+A4CED6A0A7BE055856FD998BECB9DAADEFACA913A60AE501FDB6F035A2D300FB
+FF13B510595A64A900DA5496B7CF1085676680008CE70D114082EBDB5B384058
+06A99A26CBB247CFE8EDB6EA428D261602319D5EF03C9B6BB657E6D8A7632970
+491BA80744BB5DF021382808F3F99ACDC4EBF26887523FA5EA81321D6EF2AA9A
+55939200A4D011602FFF717AD90EB5E47807CB58370C40461591217C2A714DCD
+2BE918A0177D068A21B5927C254643AE0B36EA772A3D2EFC25083B8291BF311D
+74B95C21696904773C60760CBEE6F94638855697A1948221438456099589576A
+AE5438C70C082D177905FB82FFDBD4BD94ECAC1B6FAF0D4D7578A1B6576B4F13
+E3A6F814B4AB580ED09C916E20820DF0626FC1D9A925E8BB6A368E630AC6EBEB
+933991990F4E49075B318B62CA8296CA43B77FBB16578839419929DC8A2AD819
+F3C404FBAC9CE3CAE8AA904E39924C4B704272257DD3D0C8421A90D426376F9E
+E2A4B6C868BA2884D7BAF0BADA6299E307ACA1A74B1D73D73F0150A6C560E65E
+6C0D247AD55969C1FC5DD81C764338799892D391A254B3613F89D1A348A9BDAF
+CCA171CC6E51DEF7A91C7929D6FA2BBC243DA7B1BEF9652F1D8FBCEB2D367187
+9FD4B2C681820B2189A213866CE3456E2007FB3DFE2E362149177CD104444D0B
+C026EAD4390AF141B33868DC5A49E0E1108DF1A6DBC81E2015969F66773BFF69
+707FCD43DD72B483EA751FB1C840C917EAAE7447AEC688EB9922FAAACE7BC094
+F617EFFA3199DD06552C72E53E67B0053A3BE5C5750EA0581B1A7692AEF0921A
+859C7F04DB8AAB312D2480ABE8AAFF257469A555B5F983D277ECE041588E8F94
+07ACAC0E3DDFF44817A21B86939E7787FA7772113699B0A4D9E5462D3E59CEFC
+2798A0D70911F57BB068F9D11393D3F2A4161C26DC2F3C92A7D1F5FC32C6295D
+9C6DFD5E9561DD4443F5CB7A356A9BDCBB61706ACF0C51670668C67DC0FFF754
+286CF2BEF36A02F637DA2DAB10F4897FAB65E78A408C405B52C4F88C4F70CE20
+9A27803EAE707C5E9BBEAEF09A2ACEE9986A64BC671BA9D638375ADEC6E83038
+303B41BD653612FBE967C4B5A121032C73C085A237A561B860660D52FC408F3F
+CCC694CED076A3F42CA1CA6C12A222BEF6850199F45E2354CC7E308D277CE2FF
+F85076C0FF875911B86306112881047E688C5EA9CB6497EF84A659A54ACE4AE9
+774EB2A9ECD4ABA95831E2B6DCF60E8CCD197670E2CA7B79FBBF3C9D9990E737
+D8372E43DB9D4A1B488C630E86BB9B9E91012DAD1D7FD603D2DBBC732690B2A0
+8295EB964EDC0197D6CE17CC3C71559962405AA1E21BB1A8C17EA1DB8911C970
+4EFC85F0DB429C54FC4BDAE64F5BF4B5DD90236269894A180920BF30FED59182
+6781F1602EFE3DFB2467EAB8B00CB5FC30B9669AADD4DAB5795E69F4B8703815
+95F15C33DDF808D242BC2169FF88EB6D74E9E10B638658330EBC284C89442949
+8F4658A6B3B0E70D1431E969676900E56D0773D36A7CD91CBA93C35EE3E07BB8
+2124EA7CDAFD27C4EAB0C53754CD38D4A08C362E0479422E9042C8586BE74C21
+FE71358084B5395DED53C62FEE8ED78460D8A9E8C39E49355E9F712142D3CC38
+A62E9B7BA97061D2C70579E40A54C0962BFD0C5DC6B3338FE09770DE0910F9FC
+4B35C0A307412BF77CB83E62BE74B4EDD3A6BBF2E2294477209F823F57B87452
+778759BA065047FA61F3CF1853F60BF4600245237CAA359DBD88619EE2E948A7
+FD380EE535751CEC58BEA1C0E48E098CAA97C0AB72A2BAD0B538D8D48A44CAC1
+AEA3848BE1B68AA401F37A1E2C4361FE68EF65617237AEC00A37FDA5E826ABD3
+291EEA47E3D9800F98665C75184247D4CEE91401411E53B8B48FD8CFA7147E05
+3603F82AA77C3FB65E787AF953D88B897ABF206480083C171AD32AF26F927E7F
+58F29406D9A4C64522378E3009AB2DDFA65F62ACBB25888F7244002324FCDD2C
+D01D4E83F7D222DED9242922F1187FCFEDD0DC300E05C4508256AF9D8DF2141A
+84265C77AE2034B7848A2078933229C180BB2176481EA46056610BC76B21B33E
+B5792BB9A3C4AFDA74A7316CFDBC0F9C63625CAC268AD7A3B82A9E693F4A2CC1
+6CD9E3499B943C6B6522F4DFF471B012E8BBC82E941CB87F1672669A7297DA94
+1D05CBE1D1BA7E3749E59275B55C1893F0EACF28EA06567D4702EFA6328B4E06
+A179896B168BEA4B248FF64884DA6B42EC4E49116F1BD06104C77E80DEE2B5B3
+96476851455CBC7BA1F8D37E927F2B8AA5F6860070940F182B1643929C4A02C8
+0D0CF40CBD295C8B5965CAF002D464D032209B83A69CDAC059D2C949A1CA48DC
+93C3F287AB2FAAA8010D2B982AD7663E331752B23C82FC07E7F3EB7D72FCE84F
+02EF6982C96FA3FCFCEA45BC433C3A1EAF91DA6BB03B8E6C22EB79958025C3D9
+6BF93DD6421909607AC24B682E90C3E6F1559C58ADFC90350EB44CC159A69475
+BD46BB4123F4AA935D836E5BE5AD399F13D35136933D47F980D19CCA98DC441A
+351E2843395245E1A3412ABEAADCC1D314E61FD3F7C227804175717E50D4A553
+F329D7D5B1D3ECA7C063471ECB6F72B2FCF5B31C18FCB1C92B013C502C36E795
+4BEBEA3247CCA9989B9AFB2E0144C8FDB21E6611242D26DDEF38024E971E3BB8
+2ED74172E32515C57A002275759AE8C59CC17AA0EB4A849BB434F1CFE128CF02
+E5EF9D2A02279E03CFACBE546FEA176A9864EA3E2748CE7D6480C7BB1E8A469D
+85DF3BBB2D98337E82B68BE7A8C2DFE8D6D86FF6BD205D332030679599B70AFD
+8A002326707FB485B995826FC0D2F8C3588D1201446162A1F8FC7E75F9208B05
+EFF017F40F429CBF0CDE769D14016514543752438D907B32F0C40398C0E0B246
+B06E5C2740E7E5A6AF3182E0E0860A0B5158241D79F7F5FF174764D8351A89FD
+0A7D99E40F317AEFAE208F3C463DB86593B91892F11C9BFDCC8D741ACA2A0BEE
+B2C1A836EC39A8894B9097B194F980E7501608B1403CAC065E92B41AE18664ED
+8D9A889C1653217FFDF6006CDAF20073DB4300CFA63025D381E4AE4FE969FBF4
+1C66D6FBAA6C0BA67B91CE299044261708D93B15F30F685589FEF331733633D7
+F90D071B2CAF4106C22DC5C7361AE88FC817DB8BF37FCF2E409D882F1FEAEF11
+41DC3702D9B44DAD630071210E34D2E644101C7CB2AAF0892C497BB391146614
+50AD23021FE8FDFF23A505B207A89803DADB5E0E16886FC382809EB0854346C3
+5D4D7084F688EBC02DF2673AFF763801F90DBCF5B43FB0E8D57B3079A2C6B07A
+69A462168B9FC750AD55E11A10724943B61F425344C8FAA924C87F31E07C3467
+1002FDC8CCF3153405FD66EF0EB2FA0FF5E5E0A35FCF5052133B5550152BD88C
+2700F1A7D05EAF25B6857615918BA5654925448B950BEFB9EA36073AA00E7B40
+0D7E839AC159B8856EDC45FEE444945EA9C4DE984C68C9C1EE918A8CD45BEB50
+58C8DA3508F5353B1EB83FD38BAB985608E08A0412A5C83C2CBFE295057EC58C
+1C6B537EC6CBE44342700E114DF42ADD55E2FE7FDD9056908AF166ADDDDD93F7
+DD5865C03E8FAAADEA4173E3213392D37A545B409211E2D30F2118B5183DBEBD
+E7CAB3C1E3C17CDDC47BA80B2EEC36E47E9CF81A30780B0B50B231A7A4C5E3D8
+4151DE0CF686095E2706850C90761CCF524D1B61B3E76F6E8611F0E4D993D87C
+8A08A4809656DC07FDDFFCD8F5E60782F3160171BB025A6B736D4F4093BBB062
+B2F3704B7A438495FD39CE9270411A5111B499A5B97AE75D94A56EBCBD013406
+BD215B1A3526C8ECD4C745FA6384931D197EDF17C37BA19DCC3B0E0FB79C1946
+53145487B08EF827AB1E4AE0BD7A0106CC4C1A61F2529CFEA254FA028D0D3DF8
+48D762C42E711FDB0EDCC0D3D1DD6B4ABF4650856B8F275DF1C8179A8B4D3A28
+94EC6376424A8F2462A99D1989AAAB1163A67D05D4EF46D07EADBF747BD56E9A
+DC48E7E1B40A2FBDAF5D8CE2EB3AC9CDE96A6044160DA3D5B96B52ED82EE892D
+CF600C28E53B9AAE89AA2FFD100EC94BEAE73FCFAB2F4FBC2CE26570C17AFC32
+5B343E71769C190E8BB3CC4FAA48991930F7A5995F998D382A90C2A0C98AD6B1
+57782EB0D16F191AAA1F04D2BAF1DB754D8543FBCD2B5D3E76591E5E6F1A2F80
+6705E607D921873420D7A347215D7A522BAD6CAA9A2285D0353820C27D0834C2
+B3BF27AA4704E1E8ADF303E3855D4447BA084098B6E37F578DE9D6C739D44353
+10957E129D642D099B137C406524161A5CBF6619FAB7BDB4A1FEB5F69EC2D8C0
+803685291E483C2A9DDB83D8F7D751AE6C69DB8297702D20BDD7E293F7DACFA7
+E56F7B77F915221981C363DC170F6E04267CE593751908CAB3D95018E8CA038C
+8BA4EA16A91A227F04552857B947B693B0DAA420C7D99B5BFD058677FEB15E61
+EF1888A69C9E33CFB2E0010E1BA49CA8198242B9E025B988A9E6AB0A7D434C80
+50CD2307B194DFB07FC8A827BF6239B3226935A32CCD429348E1789C8B3DFAF3
+03B59B0905DF2EBE6C807F52A4811D10B8B10E967FED1853A6D4DB02A46DA4D5
+05150D24118FFB7445C8CA17168BD332F32A78DD5211A37FCE92F8BC2142BAE5
+FED439839A5F7D1FA4364A2F5F8B1BB4F4BFD27F0078EF167F247DDE2210128F
+B927D08CB682DE3C8F954E064349C585376E84DD8D0A15FACFFBC5F54CDB2EA7
+34728FE9B4A4D2B07FBF7C6598EE6A5CE1CBB7C0A176D890AD82F3E2F19D686D
+75A6B5816D89FAEA212AA077AFEB0055AC44B4E9E639B7D7C8A2FD4C476F4A61
+AFE52462E4B8352D98B3412DD494642AD5BF0D59050DE29A72F90838941C4BB7
+8A826E48A9AA4AFFC93DBB77A7C8BF4787C47E54F24BD702A3459CD060E70429
+5EE5A72C97BCC54F001241C7E0B1D5E0DF76DA82FBDDD294ED30876554BE1E88
+DFAAD6D8DA75ECEC61588EDCB48E39A654CC3A8C5641A385B3E0590DE54E9EE2
+65A85A1DAC0AAE90E1B131E7064006D5933D96A18235EA1CDE5662B14C393359
+6F7995B833A671DC33B8ECCBEAE657004483AEDCB128D2D89DBBE7D87F56FBA8
+091300D55B04A20C4ECED98B229A61D4A0ADFA6E7CB8EF07D92F69BA316F6690
+02BAC63DF03E07BF5DDDF5C26EF67375032DD9E1CD0A4F9DEAE0AEB79D3BC2B2
+A084661D6DA1DBF6B5AB2047BDF4C1A52856524E17ABE66E38A37711FFE2C3AB
+0FAE88F096CECB55695970A1EB99491DADB601E0872543310D4335E11FC92DA0
+EC1E364D1A81CB3CDCDA4ACD219104C828108D8F75EA0990D6F39F879A58A757
+56709186B52D8BDD9205E22DCE70F81FF0DB0F73D7BF22906A9DC9A95AF8452B
+40F60A11EDB522C9C8B1473C1B7409E95C520E660EF08F99BA405F44CBEF56B4
+388ED1E816AAD6C5DFBA690C207D08DAE204826183FE0C18261EB2E51B594561
+D88BCFB02E70054F35E0DE0F31B15191867079301EAA85D5FE398D83F08F9FF9
+054E00968650A1546AAF86268CD31B5769B6CAB63D5539D67B426847A822468E
+472A5BCFEA9DC15DDD0ECCBEFF03BEB6FA5ACBABEE7CF2A4CB7D85388BD84649
+4ABAE15C9B52FED3B8C9AAAB550719309764625EBBD5434F4049309FCAF7571B
+377C4DFD355A890803929CBC4596FCDC5875E36668E891E1FFD980B8FA734931
+632D59F23D6A80FFDAB866B595A86E6EF798FBDF73C1B0F7073F1C671D641F55
+9757E3459CEFF505F1F35CA640B572F985717C6E5CA9E6C006DD797B3F47E0E4
+03AA2294E550C63651FA76B2C32ADBB897A3F6099D211A31081AC349B67C89FA
+9D2BCDAE1BA92DF9F7B8AA9035783EAFA722A038AA94EBE8453B4A7C1C875090
+3D13D7D2843E9E92FD2D55C5A31D7A0FB86A63E6F39D8A2E285AA7767EEBF42A
+ADA62726BE511F7283FB148079086AE4A4148CD3B0BA71D2366D02DCEBC34EBB
+278D4869B09CC8E191C28D212615125A7BF3C7ABD0ED0173EB04751EB4AEC783
+3E781DE01956244B1502D5CCB14EC3C1558F44BD8A7B4C5235EE01EB9787E3F4
+7633CF9ACF9D1B95CCD78FCBE8B015FADFF6961D960DFF37AC63E5FCB3BDB0FA
+455935C1DD9D3D0D6B998E83E562A0CCECED8BCADB546D4298854C3E760A34E6
+63AB4419351F5567DFA518340EA5E8DFF2C63E8A8862B992C3BF020A514EBA10
+718183819DA30F6DCF7C47D94845835495E3B69FEF796728DDFE4C9E2E32D163
+E02393F60133F2316BB88A3FDF7BCE977CD1F23B4735DA3DC10631D5716CDD84
+A9E67B3A60493AB9589026321993D57CAA1E68A8E15BF7CAA67AC1C33A5458B5
+4D6FDD851667B28F5E50EDFF7051F2A934BE94F86D5088412F5720D25A480D21
+CBD723974537BD0D8EC45B84FE50B15548CC910BD0E91BEEAA1966F3CD79EB7F
+5111A9E7597217524A812DD4C2FF71CD57EC7E368A13B56EF52BDE19E34561E6
+58AC76FC258B6CAC1AB4A5564F90761D0A9EF18FFB33D27AFAA073B3228C22C9
+E2D0106451552CDB212B28F3597D8B652F03B94DF3A980C6888D69BD8597C73C
+5F9C6FD102453E2DE1DA43F0531BCD09873867BCCB7D2A78E8205BDDDF4F1602
+6A9B9C370F9EB49AB46C6686BB5B74A65F0F7BC4A6028BCD93CA252785E8E27E
+F0ED475B95D2819629AF5C08BCE99EE7F5AD89152FA4B6C5A06A15FF077911D0
+F3D99CCAB72B83A877508AD5AA2D8551623E22B1CB39753D61099184D035B063
+69B7D8FDD9AF3515AB4EB6D423E302EE2D0D6E402632D9FD28BDC27B40157940
+809A7F580610903D5BB8D3AA9B2D7F7B6512C106267D41B3644A21F2D8770E4E
+4A69BAC7DF73C94BDDCA5A54810FD0F4CB27E4583D1AF77A631DBD0F260296F4
+E61B4CBD7641D80CB0FCBBCBB03229D6386111E927B91B128E601ADF44B8F481
+99E9941A3E9E5C4E791D822C4DA3B6DDF7D8E01FF3F4264C61E8A779BEC51DA8
+FAF47F90BFEF18B8A02E27C4F98A2413C659002232AD2FF6F556F90B634A4F3A
+220E89D77C19E9D9AADABF338EDB3C0A0FBF2995C8BD1FF35826988935FEA5EC
+C36D3994011F3FDC88581F9431335719FBEA6CA09E232F3D3723937C4EF79E04
+C1026CF28D01A630044065B894C833F83254155E92B0B2EA97F1F262FAF419F6
+7C665F1675CBE362A3848613677132FD9F8674B23937243BDA27D8C17521FE63
+7950087A0D9E678AF1814B234127353D9C9BBDC7A156F8A67B45B3D7708B9AFD
+4647790FF9E9AC3CD84D67CE96E98FE1FC45526F0B1CED5A8E6E1117342DE6B5
+966B2B006F3475210B2293769BD5119042D8D610BF2A98A8A749F99F54537A76
+BAE6FF65A536DF5C93F04CBBFE4736375CF9FE05CD4444D0DC75D5A19351AF7B
+E3708E72FDB3246E2ED29E8E2D1DE84A547C72450185FA82E066369D37467725
+6ECA1771A162DBE738F68EBE829C6F4297DCA6AC1C58072015551631C88DBFDF
+1887D5CE0726800230AE561F8B37880C536F39C70FE9A3FECDAFC92DBF5726EC
+8B4D486AFED75AB1FBE9468E449CAA33D450D68936A5DC20F9E179438318F5A8
+CE9D51AFB937162E7DDD1AA3292C17BA791657A7EE7DC44E80D363B0A0A26E03
+F6DD84E89D28D7C1C3ED347AF7FD4816B66FBF56A4A551776FD3DBBBAFBFAAA5
+A99CBA77634AC5FBA9A02B8289E14FD064591A9C1DAFBBA02F44125B931ACC5F
+B94304B22DF6D09845415B0FBAD0F206E809EB721B7D57B4538A364EC470CFBC
+3D9D30311A4C98976498DE7B6FAF7EA6385B2F6BC3F913517083EA1A03BF3A37
+28B17D9D90DDEEFFB6FED93911508F48424A2C7EF96FF5F7C2BE572C6BECEDAE
+9895E3364C10ECF70C24CF1F16C4265E4AE26E8118AD1CA54D17E0E5E1DC3E54
+25A65F2180CADDBD660CC16034A000CB321E3F55C07039A5DAE31B9AFFB2A33F
+E85C43EBFF2216229FAFF16DA8B2E91272C20A3D44BD9D1613347B80FC96D23A
+E84FB08E2C4AF42E48C6DBE656C1593E1DEC2E3C5C5719AE12B5507840D27383
+5D8B266561EEEC730072BB24DC7E734DDF6B8E725E9205AD2DA26A517478AA2A
+531AD334BC428F48586FC2DAEA9D262B673F5F3FCC1EE33C0FCA58955E739C58
+75306B3CE28A091645670B38846F56D438561B84D7DDD7FCD31A7023916E0079
+FF95D359F472198BAE4628F8097C984B094C5601B8BF3AE95BD8F7ABE1BAA6A6
+A4E073756A2140A266B01B1D31253FA57BE714282F88960BAF37AA5DFE4FBBAE
+9DC32332D7C578C5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+/UniqueID 5000828 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F
+21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6
+06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF
+55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5
+B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86
+0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9
+1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961
+7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A
+7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402
+356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B
+19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2
+C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F
+244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B
+AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95
+5C43C8942435D0AAA3D9055FF808F2C3C887A3C469BBD98F026D0A59E26BA9F9
+C2144CFE49A9AD892D4D31764F0AE3A10644AE3966B0A790684B14D11FA49785
+EC5565D2B2E584CBFD85125F3FAC133338DE35361943DCE9AF05FCF2840CE512
+998D42CBEC52B57B79DD63F00985881E8463396ADA47189A94DDF951A78866F0
+B8A3D9197E39335277EF2294308DA70065D910943A34F7D5F2090FB4AA42ED70
+CBA469A9F64B95A6FBA4BC89DBC93765E3AE4723162DF3F9D6BDE77DD5870ADE
+C8900D6346957B84C3CE88A8F9A12D46B8FCA50DF4433B0B8AED6A63B3DA102B
+6DF94E62408E24154BAAC66B2B249C695BC0FA37A28699D9C0F3EE94AA32E3C5
+8F8D7F803B5D25014D43A353D719B14B247A87898A960DF68C0C0BAF70C83917
+6E9F7B3ACC64DBAEF3FDCD3A80C0AB907EE342E543D607556CBE5A9089B86D1D
+E768F27D74A613F3ABF883222A8596B542EBF54E9DCE327B5682AEE5F6BCC38A
+2A052EC4018AE3189DC1963BA39ACDED8F0C60C83F8873FBBF0302010956C520
+A7F3F8ECD0F177EDF5F4D5522C5984A3678FF32EEEB570B69C142AB89467641F
+917155D646DAF3352E27BF2AA0746E062E48532256AF364EFC0F0AAE3766F68E
+89DF9AEAE43DE6B2E2EBCB666FB344286445FFA4714A341419C7FE51D43CF1B8
+01FC0B0071F73EA4FEB08FEAB64FC98F56EDA5E27B7A71F1F8E350BD94C093D5
+9A86175C46B78C65BD85BA347656778AEEBC81467970F644D32D6F2BF2A3F14A
+6B05DAE8858A02D212177F15DABAFB2961F2746D4C3176FDDB5AB9821C57C417
+0C8E0DC8B069090D8C95DCC3340643C68E5CFA60C3F41326579B869EA5D832D9
+85119A957DE314546187E8C4AD9841F42DCAE231C5FDDB483481FF29FDE695C8
+45FEC01A911F1390E3E3B80D59A30805601366FC0535E62E0CD9EAEBDE4DDEE0
+260B40C3F20D80944ADEBD496A4C82985FA55362CEF5AA91377F3E5E2C3300AA
+C24A28B5DE446EA56CE7173EA3A3983F8A39C1C04DC1117A9AD9EE90A6B0A6B8
+340651456ECDE5360D8CFC8D88EF157B44EA6BD3CEEF3BB89425A716D03A671F
+E2DAC845699F8213DF6BF7EAA0CCE93CFD7557629AFEF755FD9506F006789AD9
+100BAEE1F8DAFB9C55DCD2CF75ABA02841B88EACAEBFBB6A3AE4F145204944B1
+1B7EA32D8730B3E29C5D0CD64AFD23656C6E462ECB6CDF4757F8EFC0CB2DDA8A
+91B79D3F44A59B587DA59DDDFB2BE6AC75606C0A1F15CDCD27C6AD77C38CA62B
+692230D98A504D41F645E9379A8A8B3F95F33E4CC3605A9B44422EAFA939C4E0
+19EB1E3A67FAC6E7E905F92B1E7F35F150F75364B22B71B8DAFA0E995CF30D8D
+119A9EEC79606E9B038E4B4D449653B0537907789B54D8E949BF20BC6AAD3C0E
+53075AFD1F67865A1D42AB0945534D9C59AA91C7C87275E2B3024CECBAE47E64
+9E6190D0E790CE26F88CE6C0F7258FFDEC557C88F5560A756705B2D8B0B2F1FE
+279CF534C2604BB283024ECFB6AA6D1496021FCAEC3390B01DC093F7D04C9D67
+E2D77BB40E9035A1C41632037B5DB63C6302D464ABC9FEE829B742105984C3D3
+3AA836FF446D394DDC7882C3A9FF355340EAA8461CB4AA082F03E11B6034DA2F
+37FB132E23E182E74333E46ADC2CA82A58AC483FBCA5FA6A0B7CC69FE75339E9
+58350D7C0B336626ECF2BC024FB5712BA5B3F7936995FD937A4B1EA5FC4A6BFD
+050B25C5DDD3B64207A90097897FAC7F0D5F8C51ED0CD8F74D9C3C6006118B69
+0A3C80BF08509EC03A7712076C9B789B9AFCBE0848FC16DFE18C9043D2C62CEE
+21422D965A6A398D7E3880C18461D16B0805FB95F5A7429D35F707C9543AF4C3
+6568A1CD13E4D551C4D391390A9FD45D993B0A27A327B9E3E6511B3EF6C14BAA
+F972D98A7596CD6A145603D942F59FD2081EEC6978C7AD5AA04683291CE5CF85
+1CAD87DAAE0FFF00D14AFFEF3472F8413558DCE88E196647ABE2198E401ABE29
+875BBF2E2AE0AFB0C9A262F60DD9CB19F43BD16CD90B199359A01490ACA053B3
+77A76B7FB98A3E096A4C376A9DF69C8B91F76ADC634B4AFB58ED00C9655A0E7E
+A0C55508304363A82C81254D827FA1911C16D49670A63E4402BD78A1F7F4C616
+4910967EF94276B30AFDEB5724EA1F087D572BE403B0CFD786D5397453B44DA4
+A3F91FDF0789626FF3D8178331683B1CD16EBF7F97742AA3A966B8BC92E87D5B
+B529CA5522D31A6EC30BBB4C80023BA8887D87DBB8FBEE8524409A554F5282A7
+F2D389139DBE74563663CE5C839DB39F9390CCFF9AA3AAF8C713A5F60D2FEA06
+E069A8AF06B118EE22926B6AA67AC8D9E8F7B8C95C6884A2816BB1BFA71D86A1
+303B0448D870CB6D41006A017B26617782496EE396E68F8501F6B0ABC13EBB88
+C1AD1BD3C33DF6B013B8CD034F268645A2215713874D66C21EB75E65A2A88AAB
+6E83D74DD9D509F2B0D4355D528F9AD6A7EBF6ADFAF76A9220573F3E6219BD96
+640F535F5F0B154FF77B5D6097C6D13F739E9AEBE8B2E745224EF1AE4570A437
+0086BB3069D29059EEDD760AFF1D448F69669BDD37ED7FD90D5B18B055A9A1DD
+D1237817EEFEB2C4DE9F27BDAEBDC0970587C9AFBCEF71F45CD7E6199EFDCBC0
+0C7FBC2BC922289493C40FA7C624A1AEB18133FC0B5292EA905823937E82A2C2
+00081E0DB58E59DE2D0962765CB54FCF8F9FAE24ED3FC649B1B4C2B1B7A85425
+B637B0431AA42CD8012D6FB016B984DAB93E0794C35EAD838B750DB8D3D5CA79
+E89C09DFFD4FF26D29BE719A1792A868DB70004051C3F801DF00CF356A5F2083
+CEA418DDD9C73F3DE15D1E0B1FB2D3A17CF92321E155AE4940DB50DCB15A333C
+622AB7D7A004348BADDD7ABF5B941463BEF9FBB812186CF17856FE4474DF7C4B
+6261E8D0FC262334A4605F4E6AFFD23F0B91A54C83638FC7A909694A3EFF251D
+16DD6B72F4E90C159EF9E0F2084795E93D4C38606AC68D72E28C5D9AF4FBCEA6
+329E7617D13F8F81B0F91541A53B502EFE17D2776D7286BCA63A6AE78EADE167
+32F3F3929D941516A9AAF2D3D26AA900491CE534BA3FFB14D60FDC6F51D36FD5
+20D2B2C17A8751F02E90BF48B080DAC2BC7601604D97BDC0441D08D31E8DA70A
+528239646607E9AD6708A8E401229DB8DEB508BFE65582CF91506F3F627B24D3
+4D7A8BF6C5CAE1A0BDE435ECC247551935EAB94BBA6BBA5BF1DFA673F4B5060A
+0AA6018F6D67B86E5437D3AF6E9A3A68AD7BF229919881FB6FC3B48FDFA51B1E
+9AABDBC1F9E8D97ED2B1FE2D465F6D7CE514FEF2B62276AA872546A0E27903E2
+F1D0460EE43C3806EBD9EA14C41088AB8AE0DAE60E5CE0FB63A226B232F78A7B
+B6C96617C75BE615A510248A4FF3F09F7AD0EB0B104BB0EE5316496390A0DF28
+BED8A07237800A2FF3D37E3880D3602459C7BD5A92F393595D4FABE161052D34
+EEDF37EA8885564680BEBF27DD504EBDB28413CD242E181C07F2038EEA55D346
+B4431A12F580300AA1D2E12C9CEE10602D63852A26964E5523B1040A86A1B33D
+FE271D325052B0A79F2A736DA669EC660AA60C844F2A08913E04CC92800A9358
+5C0F1A4164140397FBF75672C7366128A2A3DE696901EA882DCA6EDC457D6145
+FC84214EAB132905FC7529E63022CD7E08D828E47B5C7D0BBCD171F0C0788A2D
+BE4FE10CBF36FB8DFCEB0702365B4A58F8DA9F8C24061970B47C39E0153DC714
+9EE93688EB1BB49F171364F1BCFD69B0B38BEEC512841B7B59F48E2BDF0C8232
+3CBEE59A81530987299A450478201B8FB8E98B0F6369F5FE50106C3A0AF03D98
+49B780C7FD6BFCB03677033FA56127E28871494281C0ADB19DB2D777D299FE76
+C262C2E999F56E64284C4533AF281C1936EA6174AC011C38680D10829226B268
+AFF13938517274BD415ABE48CF8928DAD48C10852C257858F2BC616499086BE6
+9D3F0A2F6FEC61CA36A7271549AD623B6AC984DDB50A603D5682718730E7D200
+CBF0518D89F46E91B8580D8E9902018EBC8B1FD4D1A8648EE790A5067A2B2F0F
+AD3A4AD02F0CFA43E612C2AE8E758AA1D80989FCD00E41487E3D2A563B2369F0
+E4DFF0582EAD6552253FDE8FCF3E1DDBA63185E512F41193533E21BC5EAEBD92
+A48DF5F64384719683608F1DE5767882784CC7B5E15B2E296B5303BBBED04074
+9CECCFD4ADF441ABE8F689B4843E9A23D6F49F93A28E8AB4B16ECA7D3FE5F5D0
+2D615E219C92538BFA1B4A69379A138E54E640119E9DB26441D797A337494517
+EFF7DF0429A7F508F8DBE974FCFBC97D9D1380BD012B2C20DC36D2337F259AAE
+691A0705BDB9394DC90A1DF5C180C033A0D139C1B12E62061E05F9A2551B7F9B
+A7A90850ECB9878A9DD62FE08100A77CF9BC4BE11231F190B741741686F48FF5
+A19AE1DBB06323E9A1BB20D1F4EC8A845FD8C702C4E9090BAEAD6CA0E188F1E2
+D26280B587334AA83E36BBF96AC652AB10FDE648B364235582169B5CD5F6E65C
+91D1224171D25026FE6C030C29FEBCC84AC1D4FDB1E027952F00658B3EEDF9C0
+E498969539211F54CEF79EA07E8BE789CB88A7D0DC064C6B138B0A08E78FA517
+A466F534A15C839B94D7643CFB51C8B0D83522479542F044B14A751D5EE125EF
+08539F8A1FE1C0F083747BAB9CEEB7940BE0DED33165DB549D8E91EFD50CB8FE
+C48BF3901D4515FFE1F82CF7155F7A441C00D380EDB2AC81A23114BF7E2CAB46
+2517D67692C1FEBC62EEBA954BCF7407E096D839C9998AAF740B2F6503B4B40E
+A85255E6AAC61D6E83E25D205DD4784EB270CA150F639078DA1AC9B2D2338488
+C0DA863DD9FED4A30C6803CB601883E95C1209D1E3572EDAFAFEB2D5B8F025F6
+84765B31CAD2D66C3AFE6417E2156B039893183C7AC26EBEF0001CECCEFCE180
+511CB2691E429155ACB128EA2E33E38434467F89F9A61CD996921C8B378B72C9
+EE97FF7AA8D2CD8797037892209C10F5947350E7DDC33DC6A01D23374CB1EAAD
+537DEBF3B575143F6BDEF20DE12B2DAC6B522F7048E23F9B22B2EC042DBCB851
+5B392DCE99C783C870EEF9586D731732AF882401E812C2A553D6DBA2D78C324C
+A653B748A155C1AAE475B5B7D416E8E4463AF3CA87146BADBA7DB13412C94949
+317812DD7BD9F9945DCBEFFD7C05BA588714371AFCD0147B0F7A5DC66E0F0F7F
+4B597E49716029FFFAE90EF4A6D633407CD450BB2B831AC6289F449724DCF278
+AEFFDDB0D12BA46B7D39F11888A50BEDAEAC715E4B880E9FC41C635463BD99E1
+4C401E5965405ECCE3AC654A2AFC59E95ED0416C797E5F145724DCD5A293A717
+9A977A438CD5EDB02D1208F8A3CDF4E00E6D6A188DCFEC2CD5BF86CBF61D7C67
+A1A0A7946A35D7E7AC06F71DE671E33EC9A9ECA21E966AB453DEBF483D36F688
+9D03C08AC0B39B8FA47C704E1B7522ACCA02C9DD0A21D47C0A4E007C9C2A6F61
+C0BD63CAAB8FB38E4D9775B42C49C33FC4A10AC96F71D2282E1A5C3CA63AC981
+3F84C84EB68C4225FC169E8BC6F0CFDD7CBD8EB98A49C1F60705E8F3686EED4A
+CF7E7FBB6630537CACB9C8A7F75DAA999BD91F88AA09F399AD41C19ABC746E83
+93CEC3820496D0C0B4EB224AE6286A637DA5DE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMBXTI10
+%!PS-AdobeFont-1.1: CMBXTI10 1.0
+%%CreationDate: 1991 Aug 18 17:46:30
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBXTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBXTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-29 -250 1274 754}readonly def
+/UniqueID 5000771 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D004B836D34E88C20EEB527CE1124209388A2DF
+E27A8DF298A2693A9D529916AA0B2176E6ED237F69D84A8FEEB36861D1847207
+BE2BD61C6A412FFFEDFF13AFEC32AC7735BCCE5965F5966418A62ECB99112AB3
+3BC938EC590FF6922659125EB67E260BF02885E49BA6019E696D33F0B53606A2
+F515E0C45F323311613A94B838491BAB9FE230C5CC79D22925E3D882799F2707
+C32975A494F0F9513E4D8332E7E54470D9721FBD345CDBB48286F2F19CC6D66E
+BB631DD6476A509167A49CA525A72CA50E82C1D08C2B372DB54C5949C753B632
+2009B761EB90492ACD3CBE6A35CE1B66F3BC4D8DC36827CE4261A703328451D1
+879438479917C1647772999171DCCF1491A1C9086E0C6393506768F8757BD81D
+141C46EB9BF507EEC29962A0072B6C5D8C8588F3D68886CD2606DD3BD2FECCEF
+63245494E93EEA12AAFB06110E54ADC444C7E7619627A48A464394E5DE06EB46
+4C76A2FF010318BBE48B3776C826A265C66515717F7F2E943C60EBAB23D96B5B
+FD514A1C4E79BB3D3D2DEB936F90CD3FABF7B09FF7F564AB5CF4AF6A40E869FD
+395885A88F4A138B3CA6943A2D430BBE43D91F7F17621CAF52FB7161DA3B2003
+82244FB6EE792DCA1722C03392C296C029A2DCC5BAAB3EA03F8DEB039DC83AE1
+763AAB84776A2CCFFAE9EAF0BFDAE417E8BE682D237FFEDAF224AC09C9665019
+165CE32F5349E857177D94AD6396570932E1657ADE4D3FF57A3419946CCD210E
+57E5A1D91CF708395942527D127606350924D71BC21C6F969288B1C8CA3404ED
+E6219985F7301A20621368F74747EAD38990A4C9F2B62913B8FDB93657409FF5
+178DAA7C97C35EAFA47778CE03E863303582D8A9900EF4F8DA879DED54BACD7A
+4A50C18AA2ED906FC4DC073B1E6CA1E3855AD5B7698EF4A96B77DBE19A12382A
+CFA8717DE230CB6182F2250885B8E90AC42A66484A7B527061B223A6D1CC72D4
+890359E7E04690BFFA99FAB5CC9999F0873A9DBE49E33F79E483FAD72313DF9A
+7B7D926461988C23CCE9F71AB7BB63BDB2B10B3F78176380AFFC154825C9BDCE
+82303FBFC3B59E070438984C28D12E8655BBBF049125BF56DD2B0DE8C0450E55
+82832DA59EBEB001AAD86F2317460DD7ED264611B9043614221ECF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueID 5000820 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
+5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
+0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
+DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
+71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
+4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
+515DB70A8D4F6146FE068DC1E5DE8BC57033D79919697C81395D5B94C3AAAB11
+52D73937B8F82D3E2E764DA1B3BE273CBB84E4B1919CC1D5586C21F6FC23BF1D
+82DE5A8DFA3E8F5C25622AAB9F7A588532D13C663079C8FB84DA6BD4D2DEDB2F
+84CE30D0F188EEA26BAA650B1AA18C7D241CC179AE82933C45A82BD57808E2D8
+032E1ABA37E4FD8E27AF35326011B8BD7FCA4EA71B5FDB60F7D63D0874B77656
+F289B324BE95E33A9B732669966C96E64C4840A8EDE39410E6F6F0F027063530
+B760AECC1594FED97FDAF84016D6D7CD8358E062040143593FD734B7EBEF810C
+6B1B941E0676910D0A04466C27EB62523967DA65748264D137D8ED841E3D36A8
+06761884C9AC0DE7C88FBA06B933E311EC28B17428C69C796E3F14C6E7CF97E7
+9FF2559E5D1F9EA00554A5995096075ED8901E2F45E76B2C5566E947E41294B5
+9BC17D2F1AB2C577F2710540F7235BB4569D2FEE06C8E45C8A1C0BDCA78A43D5
+7A687297D36E269B9EC59754EDB5DE481018BA228AEC200DD877D3E5DA7159C6
+50F4D7348BA64508F84DAF7FCF01B8C5ABFBE5861D4B32F9E32C7C4B2B6EA064
+F179E8F62E3A59DC65FB475A3DB61C36E43AB3EEF286A50FD5F57277747CB7B7
+78284143B3F0196437A1DEC9E61454F80C6720D8008EB945799236677E7FA331
+E091CD5D924C48EF02DEB2B54D8EE02897C481C815C24F15A7548E2ED908E3DE
+3763983CE2ED0A86B6BB97B4626F1AAFFAFF27CEF18947AF2EB40D7124A122C7
+6A6ED9E0528A29F7A238DB73B95869018D40674CEDB9A993B6C117FADE48A8C5
+C6ADAE4960C0D56F3E30ACB38CA8AA8443166BCFF6A5FC2177C6836859CDE55B
+E0F1E80605C8670AC34DC8E8586ACA6E1CECE99C53A42C5730
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMSL10
+%!PS-AdobeFont-1.1: CMSL10 1.0
+%%CreationDate: 1991 Aug 20 16:40:20
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSL10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-62 -250 1123 750}readonly def
+/UniqueID 5000798 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142
+08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C
+30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF
+C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A
+BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78
+5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D
+43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1
+374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23
+DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4
+B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83
+63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B
+89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A
+5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2
+C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5
+7A5FD1B49560969BF5C44F3749370663A04776F749DDD7B50674D93254426C4B
+EFE264BEE7810EC93784B7C01A7F29EFD92547E13A2C7851A2E709FBD5B87850
+4A44F08F56A542DBE072D2FBC58D9E6468E1AB858DC35240E30D31C7AC13D6C5
+7D2BB634BEE96FA0E10F842B11A789F72A333DD6DDCB1BC23227EBC406E50B40
+30AF0C48E6359AB0C46898CDAF1118E46BFF8B00F54EACBC2AC262AB898C42B9
+2E080C10DE923C195ED0A46BD535972F0A59D3977A0C4E4C413050044C486CCE
+9413D853E3FDF83C84B0A7E5FC5AA859BD382DC2D94780F2B9FACCDD437183AF
+E656EDA4147CB501BC39013529A953D6D78F640BD51EE6D1526D1D27F2538715
+2BFA7F33FC8CE7A1B811D7E4251EE8C0640097D655F9EBB15102F85DAFFAB797
+0E07D701E1BA93C6196EDE47DCF0491F102A3ADD983898E72900D1398033A2C1
+CB464B9EE9A47E7DE97F7D4ED4E99530C9A770F43EA6FFCBA27C41B4668C6047
+FD5DCECE8899E1603D3DEB282DFBEB30C8040E7EAAB83B8E78B2F7F61B7E8A77
+4C544F5ED83E5056EED08C1A29221D05A4949A0AD635D9C930F7FE8601D74FA5
+33B2F4FD4C29FAE4346FE914B123BA9CF5BA732FC430A128EDE270E3C60BD7AF
+CF54674799A0DC1C214E10BA5511B29813AF2E3768AE494D240EC647D9851CB2
+EC38976C6D8763F8C413B8CBFCF8EDD0FAE02F72C6366F5CEC2715BB7C90440F
+2D7BB30CD1F107CB2340075D2A0D9D4114D644A09003403685A7D466CF47362A
+B3187106FB1E2B32D7FE26F9231BE1AA87C8556A5421528BF5FC0478AC567DDF
+EC95E6151FB92C7986631F641E23CA968DBDDC42A5880B89CCC00F09B82ABF41
+F72B2F9F28806308176EA7081DAC3DE89BC389FBC54E60D2C6B666F18562BA0E
+32B5906EF1C2B6A31FE0946E648C73142ADB3136E7D2BE4BCC42E08DE3A5F02C
+4B8575B1A296F04735C0F30C32D3DB7423FBFE682109815234C88BE292C8F313
+F667207D842DE2052A8D3701AE71C44F6C4788AA08A967D66270C5EA7DDB61C7
+56D7BCBD106F1CF4EA7BC3A532CE23E29368899E7DE2175C4EB20802FAD3E840
+FD7B7B9956777195B646FCA2E5F4ABA05940E269858FDF5CBD236269C9FB0621
+C8224C63BC120EC8B8ECB643468C468CECAD06EA59C1CC6131F8091ECDD0D23A
+419DA3F684B229B64CADEF0AD3314C91186EC445B596FD398F41880FECC56453
+6459474EAD902F020B750E99DE425498DB3ABFCEF48305FF9B0C412ACE5363C2
+75EEA02FC8395179DF95E2A257E273F07CB0B899EC5E5AC093C9EEC345F6FA2E
+AF7A6FF8AC2786F25DFA834FDF023B1DA2C4301D807999010C5EFF3DEE1EEBD9
+F4D888F285847810A3DA48BE7B63D23D432231E1C3FD7D7F249A68DB43C0B439
+6EB0ACCE9083508830ED8BA1D9DC575938B07F07D9DAABA164281A09C7D00FDC
+78DB17CF89185DFF736892A6741CAF6B3864E92E7DE32A677E64B10C9765F925
+CFF01D76799957C8E2A4789CF754E9352C4957520A1D5303E4DFC850A5918A9D
+B90735BED913175122AAA4426917ABE09DC19218EABDE6FEF861669F60819DBF
+6A76690FE9C9CD86851FE1D1AAD0219178779037A3C0C66589ACDDB712CD236F
+DDC950DC13E099B747F7892B0B2DAB00161BA35240DD4CAE298B0EEAE5A4A2E5
+4DB38F070F3985205B2391FEDC8AF24256323A68AF8FD7A62BBA1A2F702F5402
+4EDC17889993E0D56817E6D2AE1469180286651F6C6643770D0251C8626A2A6E
+2CC25B87A3A520335B2AB1544807683BD52C3B8C3DAE7AD46077BC08E91D0701
+387312C9481A4CE788A11DF9E94A5700EA62581EC3BC2D0DDC709ADF5ED14CD2
+6B23D4480BFFD15828AA39A5E6A9BD9ED07C03F3B9528FEC1328AC1B35B5A1EA
+C0BBAB5E5ACEDE99FF0099625897168374623C391A76441CCB7ADA5B458D0EFA
+B829328D3A34C297BC605B3979C7110C90FA41295C25F84616A8F79A31B4E6D5
+B6F443022FB9F3AE6A0C23DC97F1811F50E38C254126EC2B9DD3992A6F61DED7
+02C3535B414C33DA24D5F172A6B34AA29336AB5AD10EDE4DBCDF08574BAFCAB2
+25D741156747BA56BF1069EDF0EF8AEF00C0B98860E8928DD5FA7600B2068188
+CF933C1C23DE74BDA86B3680D1E81401FE2FFF2905DDB015ED31F68F57BFF691
+DBBD798632E85A68477BAA42755C34A14D063059F88F411A0FDF0DFADFDC2F7F
+B77353A472CFF8B6C420C535288CB18B0B0CEE480DAB9A767F2F6C7C427310A9
+BB1FCBC48C194E91855E54CA50C1EEF64B1BE0F7C8CEE9E1EB620902FA40DE3E
+96F962F6E38B2C64BB774F45BA51986434C8E25716EC38E320D0914F68645DCF
+67454133BBFDD4AFFF0A8ADB82E9730F94B17964A5E8A4FC1D630D4C7A9CE970
+82C0B79D4E4B98CB3E173175CF1DDBD28A47FB67BAE582F9D072C1EA0B5A2B42
+988B173EFC21F67BE388BD8C9D1D83D4752DD5A6CC8DA57A86BEC2FE2B1E269C
+DBEAED127C4526C27FD349564F988DAF675C80E491162FDD7BCEBD7F3B13153C
+2AFD7F9D5CE941C6FCB0E585FF99D5706B3B90E630CF4985BD5CAE567CE919EB
+2DF4C66A7F366F68009E80373C0A9C386C1D30CE77A112C2BC3C59A2EBE50225
+75B58ADCB776094FCCA56C3892D8FE0911361D3FB581A7F2B2DFCA79042BE3A5
+80AFA160903B86CD46C65BC4BD9487928B06F6E387E8069AFFE9B2F784C0F722
+53E3FAE45E96D993999645621D2633035DF829279F51E25161A7A48317C904EF
+264642205EF3D61840425EDDF9B5B80D5F66D642F7C393CACEBC8DF6838E074F
+FB1FEDE41F42726CFBCC96B5BEF17EC26B27EF29087A163F40E3A1A777D4352E
+7E4E389F0685FDF4A6ACB6C88D997250104A35E879A0C0203BFC3BA7AE49AFCB
+3E8DFE3ACCC3F4A7364514AC94346332EFF06D7199CC29F017D9A21AB8731ECD
+1E01E0CC9B503C58A7093B2FE69282AAAF604849D7B916B477673CEB81C37AD7
+65B3CE3EA27E158868CF723F803409E48EE3B5B68D5116ED1276C95FA12C46F1
+EF8633329220C07A6C5830EF35E5F510F50A762EC69C0C4464175A7F8556860A
+1D8C0CA834721A33CAF6CDAFD6658B8E0FFE72369B355AD2A854D6DF4D5E2922
+EDB5DDB055ED9E349AA71B211A6C07ABD6A9184CAD668AE16F0DE68D7ABDAC6E
+1AD0A61EE9864500045F0F033303BBA2879BE36D4A52AEAF51CC1377A85D326D
+424E03664C527F74CD4466987C232AAA468048E5B517B79E4276EFE4B9B881AC
+E9BEC15016A207F3B270507EA8477A8F97E8E8B108733B4DC48505F14E93B75D
+1AEB210FA5E55F8C6EA04AA441A385E336B9FCB337C53261659A7AE9F69489B0
+E4B38ADE248B90043A6EB0DFA3795DD111931CE6462CACAD0B69B185E627B156
+960F46F9031790770D6A8BD3FC3F535CE85FDA7E27629AA14B3D97DE676EB440
+DE7ABD25EE41CC51BEC18F707D35DAD24662EA4EEAC59FA0A8F8AE09CED2653B
+013226BFFB578ABD5E2341759B229CA9D1882465784D5BCD351E3884620D0A9F
+075F1EA689A99C7F24878E8F79ED2AE6A8536F9D1BA1C07A2DC05807C438CA44
+F3E9708C877AB2BDD3F6467C39419606083598F1BD22DEDE6CDECEA07A838249
+1D289F98A1108574C5F13B25E2545B7146CD9AF5D11BA3DB3140EFCC7365C143
+DE5C87525122EC71BD00E3ABF2939DA6BCE4EE64C4B56271B393F3CB00413620
+B4AB8AA010B38FF264E76A5E74F1EBAD812BF9E7E0188F3308D85434360F124F
+8E9B24133BB853F4E64D973254E304BE6EAD60E2343DD994E61C26C496B4517E
+69F577D13817EB375933FD3FA53C9A1BF02A89CDFC00296E2A2D2689CC850088
+73E181933D90A88078AB76EF5C50598AFC12CEEF15A2BFE3C87B773B7FF1B8DC
+3F9A8D68908615F621BB695C57215308F69C069C24433349DFF17E8CA7273691
+845DE5B2B736CECA05A5BA8B3B61C04305C5CFB5E089FD4A8B9E6BAE31C4C5FF
+A84FBCB040C72A8D453BE0B263B223A8A9D1B74AA175F9AE02F2F4C34BA87263
+830A03CF5D34E060ED148221E3C617D1D4C70003EA05623C4C1F2082DC633E79
+A1E9D57A4AC834BFED02856B32DC13A39F39139D59F9637B8470C944D03A8D97
+DF61859A53954B7DED4738BFB91165EC60A44BB69D607AC6B70F592224121960
+E56BE9A190DFEC3F07EE60AC62AB28678F8DCB6A77CCF44B153789AFDB28CBBE
+BB99798FA478CEBF9C1BEDE10DCC704FC3FA0280EEABB6E909056242B7A2E193
+DCE348EC8587CF15D40C219251DAEA07854234A9EC835190EFD1CC69B3C7EC82
+AE57FEE324AA2F1A45EA3BDE5F60E1A232270C2105D57D3845A48837DFD389E1
+02293DC23B6E76AD95282017E91E7042D9734D82D46E3DBEE0CC790F4052E008
+B3792AD9822B94CC445AA1C9185466DD7D28A0F7D6A33D727A485F24E709DB18
+86AA1A798CC7758BE528C4300BA560FB89AD49AD57961E96799A1B31DEA2C715
+4E804BE9396A1AE54C7549E73B2ED2F548B042D8DED2B7C7BAA049C7D120149A
+A90B7D458D15B8DA6F533CCDF7E82D64A7E0CDEDC2D281D6B7E470D93849CF17
+2A579C3403F6FD16EF49C6F136449EED08BAFC1E0D03CBA37B4765BCA1F26699
+17E542001E2614D83877E37EBAD25029B97B94AC1586BC42A0A0C49066708051
+0DBD7B46D45A02E2FDD9F2FEFC8B1217811A3BE709F392AAA03D2F7EAEC828C3
+3C5EE95A5E273702A176ABB4B2C4BA48EE7F16348F650D426BC71C3EB740323A
+A8BEF22F6EBAADB73AD4C9883557AB33451A89DFBE25CA6C184A3C37F058C3A5
+4C6EFDA4E2B0354845CC6A38293891891FEF286712171E56FBD8B7A9EBFFF47E
+FBD889E1EA7D08F7A06BAF9CD988773FCD4DAE43FC6A9F80F1D6A56E550CF799
+3BBAEE0303933E02D1427A5842C9272D3D0A0ED94ECEAA9B82E81EDC54560F8F
+2A4C0D28B3264EA640491E24D3F7165A17725C28A6F153C742D01C7E95C79C1E
+8229B8183B8C10F00DF68899914534C58E2DFBF7087D7B6A3A4BF875F5A754C3
+B4B8713DC4EB1682B84151887B8461EE05A0C9FFD6F619B83444BA9ECE1D0C7B
+D17E96315220F7C341194994375CEA1AC7C061D9E7700B6B30B5F15A6A2A61E4
+25E6C3D0B1E13BCBE7FB89C24327AF46AC62B2EE332348B55D9E6D599D9FBD79
+E64E8BA6C960A598600EAEB080E08A0D9AF13FBC60218A9FB400D5CF3507DD38
+FE41BFBB0594F43F10EAE9CF159097226DE7706F34871A76661B6CB9EC1127DC
+09651E98E34D3ECA5BA7D695B27645AC8C16364CA380D45524D700A460051B62
+A69ED221BDA45051C1723796A305A3A7C85A62F5DFF7F7ED690DEE4C0BE2571A
+155ADB8BF7DD4E6B31AAD3D884337C1A2F99FAA44BFDA357966C77C35A435411
+2AF36766DC0BBEF0B50B742A9C9E8541C58AD964B26C47BED17B5BDD9C5520F5
+947E4B8017AFFF9FDD3BF15B2DDA6CD750E09222A3DF1D9ECE2AA6E22CC5FCD4
+C6746E58BD628558A7157B72F6370507AB0596FD4F4821A800A358BE7B62C7FD
+92131D308957E99FE4408ECDC0F48F5C747680992721F9D96B41B956C14F8E13
+FB260376C508F88D30355C94D0208D419F81019EE01A114E20EC2438C3894C79
+62096B4A5F6288116308FB98EB0DDADDB259205A11C56C6AC6C5E1C8FF45A25A
+F16596B76397BF54C3DBD0ACA1599AC886415E46EF99FD15C9218125CF0426CC
+B6B5BC60C0A14CFD116DCDCC3CE7DA6962B972AE23BCBDC5F283A807A63C1C8C
+9EDC5D95CBED7A9E1D63876A55C7A8878DBE0C66FAF5E7A680416840156FC63D
+FD8FD7FD12F32245B3084FC3532F3883DEEEFD52325439EDADE56EC1B4845CCB
+282FA0EDBC405ED2FC3B01FC93D1ABF06B64B2EF4D6FE40B6BC91D7540BDC5EB
+F3681BA084FE84FA153E8E11442A7840C6F7FEF98E346601A67885B3B0AE2EF2
+E3703ED14AB786488C48CD937E9DE8B666CD25DFC9AA9351338605D653BA6EC8
+16A18D7181B2DB084BB1D3E75C84D8CD3533EB35F150F006C6047BFCABDE14EA
+32FE9A0C1BACCBBAB3F6595E1D11D279A34CE66D0BDC09764436A23BAFC467E7
+A986D6947DE65B77BC8480B94E6F66F8B4D93FDB517FE1A6C2AE5FF3BDA37919
+6F34C72EDBD09CDA95D751CB5ADD93B422E98560EA03AFE810E1435490C19405
+C534026D001C4E2A86EFA7F342E3967059BE771E728361AA77E8C2F497442E24
+AB938CBA02C5FD0561A601BBA8AE96E8232212DB222C202C1AB4B4EDB4494CA2
+77221C9EE7810640B730DD31FFF60F2A05DB7FB80577A48513BB9A76B262EC6B
+751157FA65B47B7CE97D61DC0161877F89210EF3C9A8CEC5DBC5EDA5B9A8770D
+7643300C9C3A5D00F0FA18BCBED0295833612A57246D8184975ADF14D84C32F4
+BBF15E6BEBDA45A2E8BBA461D53C090C25BF7FD351CBF69CC904EEEF8D7802D5
+D14A4EBE6804075D2F742384749150174603F14519BAC00B220E83F7309D15BF
+12A0DC08230DBE23EF40048A77ED17D9F931C817F780C67E59ECFEA62FD4D8E9
+DEB4D1A8D28643C4E476AFB2F86FE8E5C353F08B9D0F0C10035B1737A7D51F4A
+6141D0000F04113A7FD710DFEAA16CED294E5AFC3856BB243E2A676794DE99EF
+660C4B522E5A4EDAD43C3A0A359B4B34AA9A59A6E2D4E5217553B790ADF45A9A
+7636529EF840879F18A34C3C2D5207B4D14C59E264A6415F142A7C0294597D64
+D02A28F126E774A31604FCC671E1BC0FF681082B2818792A60DAE56FFEDEE3B7
+6EA7A834D088E6D10B1673F3250D229F1BF59CE4D0AE3376E6FD99D883B2ED03
+71B72A3F679A5DBD76BD2FF6C04435D14364C4A61AFBC0D5B31E48BC631C0545
+DD3C1C0FBF3123EC3944C404D37398D05BE3756848E59FA54EE7C34D0D5382D8
+74DB6A6E70C7A5AAEC7B941B4F5D800B226D8976473FDABB34FDBFF2C6016FBC
+5E34BAA392A29B7CA9F667D609EA7A391C6067566631FA910BF17DDC0CE56F37
+A2E6A22228A4A0AE138924F09275921C8DA60D818AAB8C2B06108DCB9A85D6B9
+DF6BF40ED6E86DEC75A2DB917E605C1735D5896F29D762C77AC212994AA2F9D3
+96857C5A2F3E86FBE7E34F34D8E0CAB1024AAF59699844CECB49D7A429F4BD02
+5567416D4D0152C3D0B6B77D7104B20EE19EDB264DF437E51F4BD92D21873FBF
+3D35B2EFCDC5F146491099BCBD3B381AEE555FC25A7B0713FFB082389975552A
+825B8762D630B204B99D97E0F0062B358E1E443D65CD8DF3CF8284CF38066DEF
+3F130A06CCEA592955EA05F416E0F67AEEB690D626728426BA54BC4C4083CBD0
+F3F9A0E7EBF3B1489C019F7A29FA78F77D8A96251B66D73C7C858E2B7AA768C0
+31CCD34792D6D093643502BCB4453C3D5DEA5B577EF92D3EDAA22E90827F3573
+A811FF5C5F6697AB88C42291498BC348F4102BFBE007D68092C0057DD8576A9B
+5BD032CF7196103028156CDFEA122F9A7101F0DFB1C73D3B5605A73C1B335EC8
+7DA6B4CD39E976F7DB91CDA187B1CB4E4338F7C72873F24D5C02934BDFDA019A
+69FAD10C96BD82D12D07A2EF76D86C3082E1D68B0A4462D0635A8F15245EBDA4
+4EDBC69D510B12637F02ACEB3A1DF278C4055B98D77ECFF82BDDBEF4C5AFE2B0
+B88A9EB5333AE842093A80E2064BD36D5D81AAB9D80CAA04B55943FF5A1DDE94
+CF3CA32648BDCFAAC88E72CD3ACE65C880FD8BB75B11A8A6ED351524E1DA35F3
+13466B349A3E4CEEF0C1160B1F95643B500A171B33ADE7D55F4EEE1934952333
+2CBD044D07A12985D93FE51C93EC8F629DC423458C1B631A7364E17B07E89C40
+256DEF8A88897ACA388014A2C6969ACB9B3AE6925B4B4543BC924061EDCF86E7
+F51F447A7FB62E03A05EA6FA2DA1CD76615680FE009621148647C7C74E4BC6E0
+B34B356A3CB8947E0F775AE6079FC4594F39A4B8218E5D27DDA4583D9D5BAF07
+009CA08E3E08E407D0AA9EE80E3B0B049F37DC38FE8F7FD055CE316D72A6993D
+60CAAB09DB8A899E5EBD8AF11BBB8B2EA8E644D2B6CB4D9EED9266EDDC3A7ECC
+FBEBADD9506987DE2945A65D027DE828D5A12FB0D6AEF5D6A2035421DB46313A
+9CB95EEABB6F5A87013C3F3130DB32B3D955D22C9F3095A19715D341FD118259
+C661FC30E9D781B32396A8A2EA06122045D98EC5FCC6CFE11AF9B2A2FBBC99CE
+45925EDE91D6A964B68EE20032B96A71B48DACDBFC145B6F6DEA7F011DD7B246
+D9DBC3CC6B1EB35F471FFC463E8444F1E1CE43D3D41A113D9601C12FDD755E34
+86B8202134691C4DA22717CD3F9F958CC6E7BE20CFAE9F10EB67C0BB58E40F17
+5E3A142AE71E3619B1B61F706F611496EF29DC07111BEAFCF4D2979D39660C0D
+05A8A2BA5D2E0BBE2F522B6BA0A39B27AFB2FD2DD4666A0F895F49F7833C2661
+88D28BFD7522A9CE8EA109E1B8273A1295F4982907109518E82A156A9C4D7F27
+9B7EA2CAD89D22A3D56637D5427AEDEDA98A6D9257B419D761C8AC925B61C93D
+5E4C47DA6EFCC66A6A4D3B7FC1DF27C6F5C7919E34E9E7CA982C0D40C5D53F0D
+0A09C57FF29657A7FA230102C9487A8D68F93F278BFF94E6CFE8E5E3BA38A082
+744F9D018A6D7452D2BF0D06BB61D72F7767A4E9936DDB660C8CA18468262471
+3C81A68BCC375326C935B90D02F80B704F479DD7F030B089685F091B3144E794
+11D284BF2B8502964E4F6C7B79FC2C37197D52166E377D66AD0E7D0325909D46
+E0F8A35807DFB8C8208BA672EC21188149F3155027F16A23AAEFDD2F3AD642F9
+310D631E07655AB6885C6C3882CCC8690D05D96779CC83A117D946E2F9F6521F
+B8F4458B8E01FC30CF59ACDB52DAEAD21F7B7F490D74898F2570C6FA5B4DB522
+C077FF694CBEF398F0207C708D7C3E4F8EF42FAB91ADB4CEACB592E56035DA1D
+E8C44FE37116712D588C873D8C2C51B960E97D07651D611AB133D950258F0A2A
+D8C4557DE5EC6D98E1298B71FF08B5F59C6619AEA88CEA839A16B9C810438B78
+060594A85095D525246CA31DB045C2BEEBC0B1F8262C59F9A687951AD2A1A5E1
+3049E4BC2CF76E90956DC45670A6A7A6A4A07983758BA4887552CB30DDCFDB02
+090E12B56D356EBA8E7AEED14E4EA4C36A528A7F5105A545BD9EA5BDFD1F04E6
+C65428A54A41C5977142EBEB7F49D65F1FAB9FBBC2C283EC7AAB8562047E013D
+369A009127BAE150E7822A278BB3638BDEDE5A1985DD3081F08EDE5E0EC8C4EE
+56AAA592D3EB3BAA1CFFCE3AC23854790D0B648E83E2FE3C2CF7A14ED0601761
+E5A377DD4CFAAAA59D375499CF40DFC355D344AE50DFC65E4E5AEDC0ABB48A2D
+12DCA4C33F9671CBE7CBFF6D302805F433F581B4A6B1E4537EFE9C11F8C808F1
+F9C56321C402BA29DA2BDA3D2468CF3A26276929980D53E3BED09C5D9C2FAED6
+DBF053142E82A04F618CED7F51D09C28A1885DA028F275B85D3BF5DB6D20FCAC
+6202ED88D2DFC36D642FCB236F51B4016D7380CB85FC2306D986345F8A127EB8
+E32C7118C0F77B1B668D54FC2E8A4C70A681535A5117DB2E3D9ECD1B59A476CC
+8BE712591E1135B8E05652849F3A0737EDAA98E160D39A1C83AB9E586DE2524F
+C22C5BAB3075D6198C15F9E6EC9C066B085B532B8B1ACD16EDBA42DDA0C6E2C7
+DA50A742E55A1C4B86332FC7406BEE517373BD0E5A252763DF5886F433E60A64
+7BC6B0E70FB998C448F7C2D431249B581BF20680572405853CFB5CCAA1DE68B9
+D6AB0E0FE7E0C4D9DF2444267C6428C6D5CFAE69D651651FBF84C606282B4F95
+0C81904C77350ECA5B82128A4BD281C9889912ECB461D651652986EFA8B701F1
+4B721AFE6AD536CB1968FE14D0BADCBBDF798D11F4DC6A3EF533B3BB8A236595
+B70C4A03E6E33A6D44F93FB54A63063328305D2193E012D24E4D31E62CAE4DE2
+87D59D842475522204CEBB88D08AB0DD5DF57B6F165C693DD0AD34B87F89AAA4
+9F7B7A880BC3A5DBDFD9FD9C3D3B9DA30B132CA968A216BB52434FD3FE77BA51
+A70210B1ACFD28B81BDB75F97712DF6F7297F34A59A393006A881E2B3CCC3F7B
+B39C8D6E99AAAC39B071B7F383F9E8EC407118C5DC17BEB0D737059ED7DCE758
+83EE43E0514015D490C2271FA5463B93EAEF9B3BD3C88CD74A19D9DC95660C96
+0A38B26D3B023FFDD27FF6E9D98ADDADB54825D2B555206F0E7C889DB55347DA
+9A4C9519C0C8A8D3ACDC06AB3069268BA83984376BFED1CFE3B1417845911CAC
+5428A0800146CF549EE78C263F36DDD8A04A75BFBA4534A78412B7C2B6EC47DC
+49223DB72FCDC5E88839709D704C196133A3032149AD0AE29950C8D6509F877E
+04B849B5AC09421BB33B658D30CE6E04DA1A35862043BDEAB7BC684E1A6DE8E5
+CAF33EFC866D6D075C269693690750D526B801DBAF5099A04BD3E911135B118D
+EF01207599588E25EDE475FA428E67AD93FFF63682A9B1F9ED495C7AD50EB96E
+836A965C2B27CAC71CE79170C4F56E0497F0F6CA9041E92E1D01078FC922DDD7
+3F79147EA667173AB4E64AB4E3664054547AFC2E2E1382FE059C37B352120D69
+6A15BBA8670CAE7E310B03C2A4B12FB33617C17CB9D992AFE2DB2A1BC1DA806B
+1B82DACB2C1157A8D3F5D86353C12F474078418FAE22EB4213FBDFED904F0156
+C17A9C5205DE359694C899E992E40C2B54A565F4777C0147E864F25FD4C487ED
+6CB1C1BDD93702AEBC7278FD7E62A79A28F7E3A16E763F154471E001D21D4FE3
+2FD8ACBBCF301995528042E861A9830ACACB99669EABA851FF2A8609D30B9775
+A048BEA2E1B538D9865A8A646E907407EEBFAB32F76BDF132E905764EAF10891
+907EC36BDB2D8F89CDCF5365D2FDEF131B23A8308E05A696E5FF6EC44066FA26
+9348C4249B64F87D71C552F9CEE2AD126AB9A9B6FBFCC58438C6248A7C0962C5
+6D7622CF440288F906566E4947699270D4E5BB1E9D80E10C17A7147852495892
+707F47DD09B09802B37B1D40F848BB9C732941996EBF595184E4F484BE6561EE
+9BA94C00F1AA76BCBF817C814CDD4ED94F025A31765A118C75E6F3B2C6C2767A
+090D5389DCCB5A0ACCC67CB1B1DA2EB5B4B3EEAF5A4D7F390BC83A0C1B2B0910
+C180698E9E7F9D288C3BDEBD37D74CB5710AAACD2FAA4686A9A750064F6B306B
+F86C9F4BB77ED693419232AF4C1D897A6A5B737B41647A7E37350BC7853FBA31
+C5CA92ED67367D9858919229645A81EC6E30BE97FFF25AE6FE8CB16709D4550C
+DD5B4098ADD0D4D60ECE796384C007203A2B00595CB4608AB8C265C4E67FEAAD
+7B5AEDADDE94CCB6FFC545A9E3C47B8B911110EDCAF2160135492B722879C62A
+6A8FBB02BE4AC067194682264771595601859CDF549C3BD7A3DBF7F681D01F2A
+1FF5329CE52A00E9FB7F76E7F50A2B37AD1DF467A7B63EE8555FCFEC2A8C42CF
+C2297EF18EE8D49B0FAE5FE08857F0E0424FFCC5804D3063715F039C7F87396D
+579C57944840382C2A9524DDA1BB3C87866EF386581F2B1ABC18BD49490EC9DE
+5D184B752A976528892A0401AB4F165BEDA7597236C6A5433D7B8486FB007DF5
+A0A8503322639EA7916CE8D727284E90CD3F657E07C10370B3D8708B26AB933E
+DAF9BC060C2DE8345802CB0A3FF962FCA229295E15A02FB35D15476EFD85EB05
+AB102C504AC86BDFC3613EC7E947D5411CBE0A66AFC012115334ECA15BB0A353
+EAD3C33090046DD5FE981BE10A7EE6FEB747178AB6357EE22F6BE81D0FD617D7
+ABBA0F7ED0CB5E14F213A96854FE0FB0FAD0C3469A9590BCF9E7076BDC8BDF20
+933DE9DD6E99EA0C7DF1D28114B7EAD10367BD28A82314829E4FAB344F3A8882
+080BD2A920FBBD2227D2DA1FD6AF21E538DC10E50648535187EFAE304D0F72E5
+0746BE1853D59A1FC89BC3847BB8A0EB5A1BFD83B6E465D79012A80E27AE7BDA
+590BCDFDAA602DDD8D596F3B57490A564120EAEBCDCE0EA0000C572266CAA363
+536E654DEB595B137CB03701ABF08EC994B2D48622DCF99E137BB27DF2FC85B3
+FFFB9D781ED87B39054756B9B9AE7A13978E8EABD8F30804031CF77E698F8852
+F26626A3D817D3A3234475A80C1768CABAE431CC6E552596818F9B47161B8C67
+CFB0618039025E0B76E95B770BD302F3EE622C5E0898B34027932498345DF0D8
+32C65257F9DB75D158EF0081911CFBFD8E73BCC7F254C17C0B72AB39CE7EEDC8
+8ADD52AEB813C016D982BA5F10268E28466947C765F65C80E2595B2F732D4E68
+D69A757D8230F6ADEB79D31EEAEE284EBEE7E40A99C422050B338A07564BF7CB
+EBDB383FB6E5F632A972450E4F88241F4C7CA492A860822054E41BEEB3A59E7B
+6D6E769894FD8FE20B47D25F43809077696F516DE603D4EF1D683FC9895B9C4F
+00D38E738BC1899C9403F9BD7D861B0FB18AE11BBAF4438303AF6D1942A41DA0
+29FB10183B46BAC9AB9E858D95CD54DE11D3167B94F0642E89BB08082A3E589B
+33797A5B481669A45C76463B69BB4EF884CE76812BA488BD8A32DEE0AD6E9762
+10DE07FF0216F6B88AECD07E5A1DFE60801607FDC4F03D9A5B074E59A2EB23B8
+D85503FA1D12A6717FDC69220E31B04911E249446AF19FF550B09DBE833AE75D
+6BE48EB06866CDFB7999E9FCD923E5CAC8286D638C643AC161A80B1FF87A44AB
+6181929F69A6795591D319879BE5999F200F0556650475472F9863BE3525F6B3
+9DE2D2CD94229A257602F4956A0018A4211324E3ECEABE650EEA36D34A77E5D3
+DCA8AC728A71377A9E7A9B12E58492196C852303B9DD4EAE6983066C6ABD4D9C
+7787C837EFAA2F9D3FDE032665323585D4450A9D3E8C7E8FB2FBC87234CAF228
+B5C1654EB2B36AA06224C22A33C7E0300ABA12825C47D2F20BD71C03D546E4FB
+2FDD37D7069C6A8EE431A45D810E52CF05A478945988DF389AC0DC8C807CD51F
+EB049AC262A09D5355907421A5D3A5903A67C79F2F82BC62EAA06EFF45872229
+1E9AE5A761FBE2BAE8276314A1ABB109FCD681A0E339182720A41099D77C47EE
+7B6586829BC6728C44BA90D2A259130B78EA3648EAADF62B501D8482D7A0955C
+C7972E5C22435AE131CC837EA6481371E79535B455861023D881FFE838FEAAEB
+CA47DDB85DAF8FEBE91A5897CBCFC4E2E49213855ABFE6FBB558A9E27AA46244
+49FD8FABD897417E0008B57675283EFA92780046E5A1D41B3FFB3399518EB86F
+4D110EAA5C0AF45563103B89A9388929E719EF8FE2794B8BD18388DD66F2EF1E
+8C4206510EB7BE863F23D255C45B40CCCFCA951EF67582C00AFFF61C2199B046
+5D7C463F3AD70446A29F899E95EB6898721C737850E4350FD3660BE1FF7B317F
+E2F170120F972AE9923F79D453B5E51845E6264A41E1CD7545C35BC1AAAAA545
+BDF3D419D9D2E6B1F8DC295004689506BDBF6BF47BAC17CFEBB565C41700E784
+70BA1163B66A4FA197EF0D2868B1FC46E0E8695F8C92BBECE917C792442AE284
+A2F859DE93424F51D52D5D1C00DEF99BD1F1160EC2F94F84C3BB59C1EE56CA69
+A6616AD396B9469FBECB6B4986EAF6E439441CCDED87607BDDA10757BD4B439D
+28ABDB82D4CC8D4095831509F1087252BBB1DF0557B2F6275F7CC610E8742C01
+ACD9F985641A3C16A8BE1B172BFDFD36115855AC40A04C6C26060D6D95A10707
+B1F56D0DEDA7A48E25D9281790D3A2FFDDD479F24A3A0E68FD097448CF500597
+B662EF8DD419AE338D4C81859547CB86FABDD162907034D2ED814895115E76F5
+B8BA5DF352CBC93260002C3D72015180067F1A74ACB5A6BC48225E116395EA43
+65C12774423923E4859AF3374456F204E0FDC9460E8EE2E87098B9E7A3977992
+F106D0A8C542DED8B2E4C67527810CD19E03275998684483F33E9A6242ED0330
+EC553A673B1B34C89057D5972BE82AED5E88B5619C748DEBF6EE02489C51D3C5
+6DA3478C65521B8FFCADFA3E569963649019CF46AEA9357B5EDBA74A43A4A199
+A132885B74D5879BD2DDD2E444187737BE8CDEC939500F1CFF538BC8373266F9
+2E91BFCEDF58A2CC1F197EA1A941E85E021AAD4F94AB54986AA42E138BF54E26
+78BC33104EDD4E86565FF8456CD151FA2ECCEFC15943B7F0F23C359608D48D79
+B1BDE2A0308CD359089009E0B39CBC21FA4B337E7F502595D6B22CB92C096709
+EEB2B4D1D8F697EDA69C13EABAC0FAC550C5A15D1018B6DD4D740EDB2F9C700E
+9383D7307D0F6CB98006B0453EEFF884949DE1CDB38A681B412E2A98312C3A8E
+FCDB7080BBCAD61746027D3261389CCC55A6159B18B3B29B36C5071846117431
+C67079CDF2E5DC78EE02F82716E31D6B63AE901E7BFA1EE86F3858FBA107B735
+D42155673489A7714B683D2BC5D630D492F1537823001E70EF18242F06F52F38
+80901A5EF067BE5F2473DBE171E8D85A89796C98074424D384F01DE987F5544F
+118527F4C19427E8338B8CC7050DC48AC4BDB23C160EC2918EDD2AFD17B4DB92
+7B9736676D6AC40AF23A6541AA47141C047D0BFECF7DE8BC917FD34A13F2EB7A
+28A0EA62137A8A1CE7BC5F1439242084A4DF8DFEEF495D308830F04DD7D2286A
+499E3802995BEE8D3236511C1C2F6B5CF4668857386AA2AA42872E5769B49F66
+61F058103691825DCDEF5AA4554F4DA460FACBF69DD8956FE3F1766A72143EEB
+80D4F8D3A109C2277C620322B6B33C62382F4AC88E8A49451914A5FDC69E33FF
+3C65D1FF4A193AEDCA633FC5BAE6D10D63A98E0A2596B6E65456327E59EFBD37
+B5C45EDC86A4BBD9072061856C4FA228250640406F9976645171978F6DFF12B2
+C7946FF5FB10F4532F4A780BA48F5B203B223AF1043646A484CF7B4DB3628B9C
+B06DC7D8847A42F21328BC90A7BD8131B330D9EA2F513C564EB8B4B0EB3E404C
+13069D6ED4599EE4DCCD36A4178007D1AE551FC0863FBDE1CD639F05484598BD
+33325BBE61C5B10EF6A89886D854D6AD643005210262770A6F4D92E7328BB00C
+9E2D4DF7F41D941952F9A08D318EC90A5A6E0EA95DA7F21BBE72DBEA4BBD0002
+C7677F14F2DEFA91794674B4C06696C5D11C1350CFBD4F56FEDB1EFBAF120B6D
+D6CEF9ED27A6BDB215C4D25A0973CDFFDDEE574D4BEFA05AD9EF3BC70129B888
+84B6160AA09A3C2DDF44283511B376658B9985732F27A8B60CB60B87D8BE7383
+6A2EE83043FB5390E0CE89D7CE02E9C0B90183E959CB233AF3754C137962563D
+253B70B07A45DE56E476437DE41DBF7D178A902E899021E822C511CCD4EAA212
+4687E475F6817C093719800AC5E9B6F6F80C7A275DED35E7E8F35D365C070654
+DC5ABEC55536DC085808CE8B657711B9CE5F2347A5F99808EDFC577E587A6878
+DEC190AFFBB5E443EF719E72A8B5541EEE670E90B36042712FBB0AEED585B70F
+4260EC637590AECC2407A7DAB5D789AACC819C3460881FCBD0BDE3DA20E5A62B
+3B021CAC46DC9557559B483AB41ABD4B0EA498F483730454826891EB93523F32
+C07794BE2DEC3A86F0ADE128E9FAAE879A961B04C12F1F0E65CB869DF7C6A79F
+C7CE635163CBE878B3E8723706AB83A9334F4C67F72D28BD1D02F9600BEED3D0
+B4DBC423710CDE7FFD92C96E5B80D79E2142EBF216F4F10A857A744DC7BCFD44
+CA57CC9ACC7726B1A8F09039F77F0B1CD29FD64DFCD6A179961CA869E3AF0A63
+C1D1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueID 5000832 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
+38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
+D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
+EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
+A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
+F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
+4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
+6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
+A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
+E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
+1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
+452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
+8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
+5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
+DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
+BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
+741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
+E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
+E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
+D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE
+C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA
+726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227
+CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B
+7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7
+7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9
+EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6
+DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437
+ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53
+B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A087FD1752DF68F55B52B4DA7
+48030F2AA7E570B3D56C4EAD367B9B73FBC0A7356253233006178B9A6BC19081
+B815B5988AE76FE6FAFD7AC239072B1106A3F509381AAEE79B2F2154CAC4727B
+D199CDC8B4D05DF4BA006982512ABD7539E28D937B0F87FF79A3F84C29ECF943
+A8DCB8BDF8EA9E7A0E7CD60BC2308C96B3E889C797D0FF28FF4847016B3DA141
+E76FC6BE78A6EE9CE07E651FF86E720A1A1F075972D36E5C55162E3FE26BCE3A
+814BFEB12D4C5FD24340CFFED499C7CA183E57EC4F12CFFBE3291D43F7270575
+C6C3306F832EF182ADD0AA14C4D8669A17C09F632406AFA195F90C4DDC39779E
+EC0A77E590211592D6EE19563963225C06C2F13265EBB5A6CFB7C17D9E77650D
+11958305727AF662AE73AD0E3ED5F7E7086C5A0C3548A8129575980B06C715AF
+DD55C8DF869BED0A7883491030B1A7E82C5EB04E5A7D952E716DD8F2EF6275EE
+087614CFAB55FCE2BBECD7E8D9C90FD8359E929D5E0A416A23BD58158318B4FF
+87B095EB63F7F052B3A77F136FD66EB2C52BD46CD7DB3091A4B78A607112B12C
+4D171B2A00B78B0E1C44B0D90C20D9244281F5123DC1F6063F91E9E3E48DE78B
+C862D848BAD073A4FCB5EEC9FF54B5AB8E234CCC3C7439C62ABC4A13EF1B8897
+ABBF21F900C564C9A305FC36FC7224932F766E6E72C2EBB55953DFE2AFC2E3FD
+33A0C6F0FDFF086E9FD796E7242596AE85B877223532667625E371D2156E4C04
+0D7FFCD3337B93DF066CB6FE1E13960719EB7CB409EE805C08ACD2C06303ED9C
+E34C898787A43C1B428B896551C6FEB50A831C6F8CE2073EFC662EC286CB7555
+A3B42E58772E82FEE206948B8C439FEC5E4ECB9E11DC3A4CBC7611E30890E408
+637A01A2118441B4F9467A98BB2A1B03BB2F5D8E3DB7D1D15C188D9E856088EC
+B762F07B1C06024F7EF53A2FBD60C0A1F4C0275D07164545250ECEEF8CB15B04
+A2D8AC44DDE818C4E3CBD2A5FA0FE49750886CD7CFAAF8B780255F89DF7F4F5C
+BB594FE7C1597DA71813C2952AD3E811524459EB71D29696B450C924B6A5C843
+8F36A0F1D7DFE796FB9564333666D74AE614D0D698FAFF20F83C86524C894BB0
+272221C060544F3B653CB0E4E4F82B20D7530B3806E6A5830852C58070177815
+E287C847F19F64E854F1463C23DDD80093D6FEB8BAA22C5F05C21F99FBA7193A
+EB7CD49CFDF4308C6C68CC955A45FCFB54FCADA9A3BFBDE086B057DE88BE335D
+280F5338D7E66AD39FD08F9B55884F1F377FB6869FBABE3EAA4B7ACCD85BE672
+724B4B8F236B0889B6E7049CBA558A89F17863E82DF145DB8C7ED1F36332DE23
+3C0053B74E850FA14F9EC9EFC23AF18E153CC96FB0FFD910347370E57F0D81E9
+4A83E2D189EE5635E85A2BEAB5B1CB974546BFB2FC2ABA1E15DC0EC1BB3AF1DB
+B2F93538B92F504CBD7AAFE36F5F3AD45EB16378F169B17869FE81464CB826CB
+400D2F5441A496B6C60A4F15FD20ECCAC1F8F91015E7E1C1A10B7992A1554E52
+9FBEE905A3005336E49CB04BA7223F1674C0BBDFA06ACA34F7BFDA56906E04A7
+4DD79EC7E79B021A5008F3B1E04712D689366F520B0FA66A558F957011992728
+561BF4B75C2BE07C4024C172085E51CCC5CFA439F570297154CDDBB3AA25CD6A
+3004B936488851BA1E814260C06CD5479DCAB1A6AE21A5F4563024F973D738B4
+0DDB6C6DD2E3AC21B4F6D95CF9AACA782919F5D3E613D61F3224A982AF485C8D
+EA0037410EB70AB7D3EC174C6D5DE5C9C5A1220EF7C2B74499ADCEEFF077D1D3
+50C1124535F88C3C3F66477E42F1932665AD323E06B398D2805B9CEA632F5B1E
+50FA587B102A35E2F15EC22DD66E4DF06A3F4BB717A3ED7FBBE2458EB4D896DD
+AF00D1BC71FE1CCA27890ECBF9F0AF01D3E65CAA29427FAF06B3BE1E640522E0
+73B213D04491B93DB29113EF72211E31F4C5A7FD58451946CFC15FD805112FE2
+547D1131A46710DFB75659A33695FFAF3CDD40AE5260AD6766DA81DAB0A6E96B
+E89D57AAEF32B5EDBBE9F7CC033BB2595CA3FEDA2ABAC8E5395EBC35BC112FE9
+67EAF1F123228538091483050847F8FB5194203609502D3A09CDE811EADC18B9
+F039593782C27EFA7697182D6367E88E326AD5622C5A457FE2644FEADA88615D
+9DE3E483BFD9329667953CDB86F9D2F0D4F02DAB8A98FDEB1D17CAAED9B6E2E6
+0C55C1FEE25AB98FF59FC235876029CE03E4A713B75B3163BE3B2DC0D4472DBC
+473E10400C0F57E627AE97FD0C1CB0F78FD8E2FA831A3D2B1C2BB3F2D4E812A4
+194C8732B0C525361DC8480CB27C30CD4DCFF01318D2EB4F5234B4A42EA8C23E
+7B3EECA41B8E4F54D5458B37EF0FB2F49EB19F4EA8AD2B53820FA36E93DD309E
+48847F5C01B1118ECE7D0186E6B8953344EB775D655AAAD7BCDA642EA2E39A15
+855C027CBC0E3FA752900EEB464E2D39404D1B85072B40834748C6F9C74C5B6C
+3CEDE988343FD984CFE4B856A481E60E2E65D3BB41BAF2FA80AC0BFE381071C4
+573C6ED65C524FF777F34D82E9661E4A75E3878CC77BC59218244612219C5A92
+E95B90EC2C38614665550026F1730D11162F19D841681C04C401E102C047541B
+97B9264D86F47E25A347696AE5EF0FF3ECD9BA32C92901DEDD816F7D73ED1216
+0A98771892472CD625A8F7F19DEFCF5CA2AE57F8AD3898F2C1005B187DEC6F2A
+A31C32720EBC934178E0E9979013B3C9AEDA4051DF63D8C903A399DC88F83DCB
+A73F1B2083819D1BBEA5235F8FE1D098F32A2BA6274424A99A4975FE4BFD59AD
+79B40A8003CC0AA728EA79D6BDCBBD73DF45B7918BC099C5BE4A068BF64A30B1
+C39442CED98AAE1BD495F6CA32D564A72E3BF753B49E4178927E4BBC0F06048F
+96DE7C30AF580B0BFFDB330B3B87D7F6532A24F403680BD9F15E758CDF04EB94
+E83C7E644FDE5BEE7CE73EFAC75669E41BDFB20A5B8ADE1137378DD8102A0DBE
+19499A623770417CBF5211395A6BA9F4490F4707A46F1F9B3FBE642DEA0CA053
+9ABC307B1E71DC2B069DDDBB4EAE378BCC75AD61DA900AF8BA6DF0E27A8D2258
+DC80205305AB6ABFE3726703E60869BFAFF1874F3C0E05FAD9C05D7D89ECECA9
+DD2AF5F777D7514208697E712B52448B364D3ECEFD8127043DDC9D0757B7CC37
+5CDE8001D007A6E961EA24D7FFC92410F3B13A32946F12A50DFFA256249BC8D7
+C1842FB84AD51B41008EC4604F6B70990510EE13E6DA34F864A572D99A13FFC7
+3609EF2BB1FCDEDF37A6018248C545E086EAD1BA1143E74AC60B684E755E59E7
+36557B915F92EF78FC177621D49F777A2AF39F3C2AA6EC74750AAAE08BCC21CA
+A71CCDC91DD45E6050D83ABA49ECE425B55EEE137C55619037F1C30530BD0A6E
+CD2004B6A040405064D7E87C55536680364E09248BFAA3FDF95CDA0708E55F4C
+F7D0A92A93DEE0C7B69638F171B28B7F854CCC6EBC6AEE14864BF5144EA36D46
+A9C297225AB0325E28EF6BD06D7E40E3A724EA1E50C4C6163B195CFFD5DD291D
+D7BBE9AF4324A69394117EFD62F08D6BA6A8F0AC3E2353492999AF28FBA758C3
+A50B6840CC72054355E6CBDBD86F683537A4115049BC1616BA35C2B0B6F5CC32
+3F6831DE4E6029310738DE23D36D2C6E82F04EB675FB89789F74AFE3B8854250
+51812FBEFBCF162947554324FADAB765C74B6DA89F60A734076D44BBE45263B1
+3FEFEEA90EC7948F23F34D4049087AF6563692417DDBCDD5A9552A373C2528F8
+0318D3C0669279F292127CBA40B0ABE08A1476BC9EBFA8BD5D622BC5CE7DBA20
+C689BDAF50D5B1EAA89E296787CC53845DB2BA54FDE363DCC98A7BA256663869
+E9E02E09077884DF1A2A41AA698B7EDE8DAFA621B552DDA91AD1E671D636FB36
+91C62B4D2D4112F2C169E0023EB7521F570CECC54ECA5EBA462049AABBE2ADEF
+E3234BFD71B26DFDD9D34DFA69E5E80FD90406E6505A6798F030A4B5172A7BC2
+C9B765A86ED55C0590E0432719BCD7BDE7CCC7F6B33BD467063D886276C8879D
+E04897A4623111C14A1EDBBF69E2FEDDFEAEB2A785C6D2F0711DF4B93AAA291E
+7F4E0CF9CC3FF0D31953C594DAD014097DA02CBD5AE8828C7E7B5BDA09188B05
+0D7263F164E1E78CC430ACAD1E8FA71001E9BCEFAE47C79846916A5F819CA366
+5734089BCDD458CA1A9E8E17BFF357A91F9A7A8A6E1DEFB121353AA80F1906A5
+AF7CD2E59EE6776FC0DA6574DA0DE522918CAC4E566F13FB9B64EFE79F3A3BC0
+689E3B0676741C90FF3BF85C7A0FA9716F4ED0E329512B66BFB8AEB56C3DD6B2
+24F8D6E23751A8485F7EB46719E9D22618FEE86D5E01ECCF4C6E74368A8E9B49
+245D80E7484DFBC916FB2447852B36EF3F99A82B6C106F786707D7689DCD7AEC
+A0C51AC1A3F67034C16B74994403FAE7743BF02149BEBEF554814BEF31B79184
+3FAB4D2C887E1BEE81B465D12DCDDAD03DE5ABE9E763C440B2CFD42FD16D96EB
+C21FE788C8C2688F79F148AA7090BE64B0EA710D376222FD1590301BA9A2E715
+D33B8C1D95F2589AB0EE476F7046537E27DBBCDADEA1E7357C9D7FA92C2F93A6
+7BDDF58A44966590821023380C97CDE37EF6D449E35EF32BCA6E69DC8458511E
+8DC8AB63171A6018AC9A334829E5978484C4C6E917A5F1C254E6669F4037C691
+36980250A80673E0F18C9E0FBA1E5CCA3BE30B8E7B7188062B25F8E1E16528A2
+F217C18D6A1955482E5463FBF097ABAF7314E449C6FEE56E2695407A8AA9648C
+61AC2BF3B2D9CB6317A9B16CE931D318C8BC9676CD908505568C197D90C2BB46
+06431C999EB68C8216409E4CABACB2BB34A05B697B9DD1E91471A404B4969519
+E25209EF4EDD420944BED17B18DB3566FCB8059699FE416789191EC2B35086AA
+2E10C139E3C9FA0A535DEE9255A867A26656213E85851DE5F51F9780D3A6E572
+F1F5CE64DA176CA810799DC1C60A8FD2A5ED42E613021A19928EC4572059B2C1
+EE441E79CDF7DD4AF7B6E3D3230419ACAED329388044B107DCB4DE91B71EB838
+904B1F969738BBDA064FFE75C6623639BE9924602DDF0C166B433B9D54ACDA5E
+018680477FB8F10621FF32319E58DB672D744959A33E7314A1B3CDE0C038F7D6
+0C8A195AF191E36B0325334A711CD8E25D9C1D257E46A734779E486567481108
+E0281DE96907D460546578DE83A0A01A9ABF64402B48DEF739F4308E14145753
+719CEF720FE5CF8DAD7845E74D502B69DC18D172C3A27411259B8042F3FF82C3
+B157BE242C351830255CF0EDA96577375A70657BD9A2E9FFC54AF0AE563D73F2
+E510279FEF48D79F5F7745DBB492F1D74DA738E6A4FE4364799B5BEC93B4CAF6
+B06B9B8C8D164F8FA1FBBA693204064F2C1806C39910910E02ECA8D092558CB8
+33338B359D56483B7B99A1D8137204EC1AE70ED3D75881FC3B00BB9349AD934C
+81A9F285312FDDC77FA923B18B1873D288C2AAF2E6D0AF90BF25A982B843789D
+5662D6A2DD58E065026885601ABED4B09CAAA3116DEE6B430B15BE0A121FC1BB
+FDEA5A501F0798CFFFFEAB5101E707F1A00C8E014A3561FD39972EA9AB108EBB
+960AEA7FF60C301AD6CBFCAA7D35CBF6F8462A4D76C4FBA6F3DF6BB762DF7900
+9F69529AB4EAF96C2866444B257160E8822533A7A1240C83EC18C364F577407B
+4CB314678D2511735308A1660AD94B8B818CEA4A3DC00C5A1C978F8BB4E0491C
+49328F6CDF95BF620AE53056364423841D84418B23C2A447B0CCF8D8633FE2E8
+4A4AC1C6C74627EECDC994059F1BAE9E6B10FA80D767B3FE97BFFAD413DCB0A8
+495039744B48266278194D60422D6E7C74D0DB45ACF217797D0C0678EEB60759
+6231438CFEFB346553A7A447B50807EBB6E885B5A49CA9A350EC4A8C76EDFBB3
+A4DA1C9E3EFA193CDF08553302998F20055C84420A4C5252F764CC4B7A4BEF6A
+A09170EC417B296DD9E2301CD8EABE4A087E648E0525A9FFAF26374C47FDC123
+82F18C9884843864F418ACB08041E7896FDD395225532460A8194A8DB4DBD824
+1C68C6665F85059E365EC0972EC6465E2D8867449907DA6692A021F026F437BD
+D02654BC11381BB6557663E0B0B8C4F2FF69E4776F4EABA69311BC1AF8155F7D
+6D3A418BDC912CC7CF1A4BBC8A1376D8B4DEEB6585416959BCA4AA08D4520C33
+EB054DE53140992D0707210593BE62B3659E3E493C4562C2E99CECA143791DAC
+679896BCDA0699E405957E17DDBD243E65CDD7C9C8629F29A2078658746A7779
+0F75BE24E2DDBB672B95F26366BAF036B3C23BE4132D7362E76D4183A469E0F7
+29174711ECAF4FD9A923E72FE58DF2854C5537E3626317D471D1E8A922C9BBA4
+CE9163A4086AC4A231C2BF35FBC39A5BBCFE41843CAC7D81A054509D31572BE1
+596E0B0B563DF2BF0E57DB4943DAEE35CA26C8433FEE4FC61145C77F65DADE75
+62DA18DFABC7F4194906F53884E62E77D8AB3E099776AB93B2B4D0C98FA44C71
+597202A2643942795EE8CE098FE26F1AF8134F1E75FAE18D563B1FF43A511C9E
+EAFB9EFCF61490A1A4FD2CF354927B72C5EDD5D62B2F3F5006D6130562A13BCB
+1B988A994A8D68B051A5A821CCD5D0F8D9D49FE7CD04EECCFD7A554CCDFFD77E
+27AC4AB5BF9FE40F90EBD066C483796CE1A364E95C5E0CF2154834760522F128
+B2DBD1F4F73347D42635B2875A23597C35A0823CC6F71E49598125411BC9B2C2
+72470D36DD967C947AFB031BFCF770FE50551A134DF8C5D1AB1F09819569A57E
+E23D4E87C0B52CD02B0A2E3FAA7D27A94359E82AF047756BB769BC5950A75207
+78ABD49D174F2F69810AFFA9336A52D6B93B004DCA5CDE58475C0210E0BA1D20
+FD4FFD6838EC56A0922472D4C4EE0CC481574BC30618179E733EA40A48847E14
+A75BE7717CC5DDCB5B0718074EAB6FF07CFFE794D335B3A13EB968EA8FC5B08A
+13B38AD1C2C964E4B07E90B9732C458216B028E07DD593A5B767A2B415EFE7DA
+951FC07800F11C7E2EF9BDD152BC6815B7F32117F49FE08BD79BEB949003512A
+327F3F8FAE1767E7842348BA4373649F1A21DB2C56C081BCF9FA4EA86C8DFF00
+FF45C4F1386CF8C2C4120F3F6019CEBB639F2D272D08C1763A470D4BF6330DC8
+43C069A6333113C3A0C93471486EFE9BFC02B760C7CBB2E9156087D09EE8A178
+5EF50B34994094C3F0015EA2ADB6C920F4302FDEF128711994875551C4E883E2
+DDEFFAAE11F2234AFDD96400BB69C1B4E6EFD75734C586A10A54A98E7D790F28
+DEF7C7DF61FB23BF91AA700AE585EBDE74E215DA49F4ED466F46129022722086
+8884D8E026F35C4BEE7E866DF8E0846D5EC3534069B713FAB02D4B4EE3B44E1B
+656F30D629D40AA1337786C1FDA08EA1217AFA4A6E2498B334DAB5461A70DFBB
+5AA5686C89FFA4EE82D81CE2B28334DC5C032487CCE998616F48150BA1281911
+076E626E5BFCC56A0A4CDC559F878F14C2BD7A5148C1D8CC303FF9EC473354D2
+D4FB0F0F2AD0CF182A28074ED6552E179222570DE0E0D44E8FF4DB36C3AD6487
+C4BA53C8548714A69FCF8E3E5202F09469D7447C6519AE902C1D611A720BAFB5
+59E27A6DBA73624F44B4ABE0988BA3450F82E03521CCE8EDE8BE7EE1223B575A
+DF9A52650E85545525E6F121FF2D1531F156EA9D5594239AEA2CD09EE28ACB15
+A445E11FD1C031188DB61881F474D49425C084489A88A47D681EA68E7FC4B1F9
+DBB552063A02A0EB51125E9B2CC646B940D46FF457415F9565892DEAC030F08B
+E4C10DC38D825C7597394C844CB863CE6C843F67F2E1C42C4EF86AC7FB727BF0
+224B5E91BAD99CC6638AB2C64469A81D8B1789981872ED037B3A34BDF3130137
+80FE80FDA65EFBC11A08B98A1AE595F980B577E22D3CB7FED1D4016F5290ADF5
+47D7D9BAFE39F294582F2C084003E9C83FDB9EBC87C8B477CB8BB359EDD9BBC9
+9368D6605E1468A20909831BF602EFCEC0D5EBA99A2223E5A269275C8B221B3A
+F9226654185929F794E1979ED18B4CD36152F973433AC67BE24B9D953254FBBD
+B644CDF3BF0E29A2C72113DC486E46DED2CE8F8DFA8B0F8478D1F18C9AA8E054
+A31C3DBE84ECEDD85DF6AF9467AC2990ECAA3384FBCA1BBE598AA0D6813C859E
+1520B88BF30ADA910A6AC3068A5B8CFD76B7F0F6F4AF4C32450D628B5320C384
+F23A2B5E8756895584155226A30F8B0437E028978491DCD00E79C0ED58DF261E
+79B9DA17E57AEE03EE92102EAB2D63E69A88EE0B1E2087ED0C0CF6475EBDC3BE
+0324D1FC8F7B90D8D807533E5436F2C2583B9629EC390403437FDAC908557894
+03054A6DD6A3586043A9C8BFD0C7EDE1229DBB9F69F7A5D20F55664D061F6517
+0051C6B3CD7338241FB403F2AF77DAB1A8EBE1650156D40863EC1957372BFDEA
+BA8D0BB1193CC5BEB5A68C8274802E14FFA3ADCEBE19070325B1BDB960CF2988
+C0F5A9BFD843C515ADEC8B8AB02B2891EDD7502D9F28F4E58D8F67D1ACAFD0C3
+3531E0C7D1554344CCF90AC8696E83A3F968252981CAC09653956F4343B99D3D
+4F17CB8BBE4506B354439B70F2024871D16668F9DECD8EDB872BE5E6ACC406F1
+1DF4E3ADF60EFED57D1C426292970199BB663405236C6A907B6891C6190E87F2
+78D9142220FF295C7BF44AF61470798FB8CFBEE6973C69DA1CC24ECB058AA753
+DDBFD92FBB15560EA19D5D92F0005B74F06F0EA5901D231996E0866389DCA433
+E62BE48479687084C1D67BC592E592939F806FA8BF5F0D3F644B1FA6F056DE0D
+51D3F212C6818CB6166317058C2A0C07AE2E324CD90D4EC83CF4819B10CC348C
+6DBABA024A5FCDAE6E288F82DA060BCD16437F07DCA43BF1E5A1B402F16C78FC
+075BEE900B4021A1019C4A5ADC33230047FF11FDE8FB775DDA267040A22B4E5D
+6012F7E72B8BC8DD3A81369A08FB81C6C4873C2147D03D4181D6D8032DD2B610
+9C44CAB50C5BD8F489EBF01C72D4198B66EEA4E976462F8874143640B82AE57C
+A51EDEDE75A9A55D31587C14F8DEFFE69F75EA7B95BF725CE9991FB2F07AF568
+5AFEB39447B728B99BE0502BF28DE1D92B15926BE4E3DA2E7BB44A24836A97C6
+EE3A2080E01DC6514180DAF9C055F4C94929D34F193920020505E62804461630
+9F42C652F9D5681C91BE23DCB0C634247E739135F925EF3D5424767D5F5C5879
+C46F2E3395E2B49D282622FA4C18475FC52BA7AC4DB7C1AAD65352E66DB9D962
+AB975C01CC6490490F35CB358D77DF26703B356F5C5D80E25091CDE93B39BC22
+AC7F7CC6FBCBD39C39F7F8B41B3286CD39D6DE2E6B2A9AC1D2EE8AD1FF53AA85
+C34B2BB3A2E385B980FB5F35A1BECB5596FC2FB2209828F3C54D01B3D867B391
+033A752F4AA80C91775F9CB9BE939C850B2B322FA948907302D670F2302DAE93
+B5F8D2B835DDE001ECEA3B67BD3D620BC6D1E325C4B355985A129CBD6AFFD2D3
+5147E4CEC0209A8DF23ED77AE818B88A3696257268536CEF2DA90202ADF21C34
+07A0383E17206532F5F71061E625F3199D72E461D04F4AF18AD91B8A09E37E5A
+46D2E5D3634C508197C6CBD81F3E2BB8C759E331AD1CD54FCA815B92207579D5
+B248F2A1BD2B725117C76FE754F5D3CAA9F642D29AFE61DD78ACEB9F1DD67764
+0AE3E795C8016E150C92CC4D2EA682D6808DCCB4F24724541F856C29B3ED24D6
+64F1BFA439DD155E53F06FEBD8DD73C7C2D933CF70D9001707870C2D06EAB2F1
+649B32FFF09C7A1FA4C2E7EC2B3CEAEF12515CD401C582A315906EAE1A0D51B8
+1BF625E07761AC2BF59A28B7840E8833410C7A3CCFA16E32A0E90E0FDFDC46B6
+7E073A5957E59E58B33CDC146394FB7C860EF5CB1CC9871D3783D189B1A5EDB4
+1BD462A5AF1CE8BA67D096CCBA709C49A6EA7C1233C125155D8FC7E9482C8EED
+E15A207196E74C9D2C19CA96CB1B4852C3DB5ACFE88246F0325169DCCC88F4B8
+8BC213413EC95D2E3F39329B2165A0D1E3B4643C8AC58C126AD9E71B02B8A04E
+D5ED3F93B60A7D1D142A4CAEFDE0FD1C0778B3F9E2CEB4E0058D714FED13EFC0
+F4BC2FA09A125652BD936BDFB3B9C83C182DF3C329E060E983D054410928E4E2
+DA66453101A4D23BB5FDF7D67051BC92152A687620C9B653CBE6160929FBC393
+BCDD07F0010CB35BD030CB5E13A4AFEB7DC0DD5D89F9A638509AA2A4DCB83CF5
+DFC0873FCAA432F351D88B35DBC6129A44A35CB2CE4308979F474921590FE9B5
+45A4F50C799BFB555A1674D1E49CD81DD2EFF2A409626569C64B9C80B5341EAE
+50A011D7BC615F2BD6270981E2D66BEBB017EA4B5E9DC2EF8A7D059C94CDD2D1
+2C2C80FE9E086DFF9682C1BBD31EFC52E60625FD854280CB6717225D2FF35582
+CC3B9924635593248420EE48AC47332745597A5E542C2C375E947BB80F463C8D
+54FADB19A7B5993F39D9E07875785DF6342617F718A660F6A27C9642717CEC01
+D9DECD957E3C8CE1C0CFA3F2F02796EDC1CBE35E7F12C3CAF968D8EFB5F09588
+4277CDD2FB8DB2CF43C82980C9CD75599416218D7F88077B6B7CB579B7331D1E
+2ADCFF01EBB0A43FF5C78B5F4CE0F183FA66DD45BD9E950738FC3E78AB286B70
+FC45C628DD2DD70F8C33E99AD2F3A82389FAE546138FD8609EE51BF337C50EDF
+A4666AE87E764F38A99EA91F0CE63D72CBCB7B8EDDFB72AB57270F33599BE69B
+8C7A9F15B6704240A719A1B2B8E662B5F479ED331FDCD7EA86179971E0F193DA
+27DB7DDD61EEB68D5F5ADDF0827E7A961D0F35D943C89E46909EC09B3D02FA88
+10E8D8B85474248CBEE142D33C5CC24CA4923CDED8A4A5028D585392DD1BC8AD
+61CCE83D7D2371A5AA76F87642C10253D00EF336FF8C5B14BCBEA473577333D5
+5A858CCDC4D51A715859FE3DC0B79BEDD3187ED7C579615394354C46AB860C4E
+13D26ADD1D09B3B86FDDEF1D5232B618B6A8636BDBE04E7187F4CC624CF2BC9E
+38D39A393A0A6E42654329BB2F5735AEA951A1642CF093B06BB7656A23B9A9C5
+487947A4419B1AC4EDD7FDAF7FD0DB8FBA10E65AAFCECEEDA53D3CA4C5F381CF
+8A15DE4D52EA901171C5AC8D8D402F6EC75E898E0756BAD7F206311E74101055
+730DA667F74E9AD40BBDA833EA7439EC939381EFE8DE64917CBFC4E4C0A96A2A
+069053049D14A8CA33ACC6900C37CE589DEEC5CDCBC4153C0DEDE51266091DE5
+E417ACF812AC380EFB7523EAECEDC133D2368C3916A92B85EAAE86CE9CE912AC
+94749AF7E040CDFFA2EA2B78875EC3BF0E72C228B2C68ABA783E9EA17663CD76
+70CAD683E416E6863D21FC2A42F1BD447CAA62A66CAB6DE56B193B3D83FB521A
+82A7C3F08190BC10217F7EAB6876354320F1A63885479B1EC91750A247CB51B9
+1D22EF0D19D48C9893E0716A64ABF1A54700DD9BF0BB498EC874B2266B6E86C3
+2D273A2969F184B9023E83CB245FF9F484C9C37E70BFF61AD20EDB3C2DCCBD3C
+38716C5AEA8465E87C3E9F4B9884AC9E213817E102B30691D25D808388A3C4DC
+8894BA463F8E0F5E3406BAEA54BECA95E934C8E019AB014B13A618D68A89CBC8
+3F76AD4C46060C0FF3D0BEE87082294BCEC05BED477BF02BD9F8D62ACF3AB816
+30A0846A3FDCD885E4F310D56C332CED12A279154275A682438ADA6970E18CFF
+F66012252726FC421A3D772DDF7867ACA38E70DDC25255283E72918772DED8AB
+AB05ACA6477F6FB6D2C2A4C35D7CB877C2F07B6A3E113468B53356947B0EC500
+FF3ABA15ADC0466BB9333C6A1E73EBDDE53986FFC8F44ED9A1136BF27A599F28
+414C8A71B2893F248284DD7E0D887A1102357CD8EC4E034C7736469DAD3BBBF3
+45F0231D7C29DC8D0A62CF4ABA718BBD7D985513986B93B599C912408BBB2BA7
+DB96EEAFE84D1C6AD71FC59216FCE27E179BE74FD7007FBAB1AE2A9ECD11F1FF
+4396A13B7EE4FE5727E2142AEEE4E39941F02E54BA6730086B9FCFA6A6D00B7D
+BC6AA1432E129289B05C34A0B68494019D387AC6161B6585B2266DCF37DC63AE
+1CAFE2F3EC9E584981468CB2B1FF77C7FAF3342B72E260E15B558974BCCA35E1
+4D9040394866724F140857AAAB68BB9EE785787A857D17CBDB0F4CB00844FFB4
+2244AAD459ECCA522F5C590976EDDA6900919CDA0FE66DC39DBCF1434FD7EFF9
+194BEDAB53F7580D169909C31D6FD38EB7A79DD4426186235098A9F574E08DF1
+A03F709A1FA398A545331FF9454622B4CF225E95753037BF7620FAB86E06A1CB
+0B5FD5C82C3C2A9E2BDD2AEE6F3547033D5512045506D6DC0946AF56E87DD984
+2BC92D8C6F1494E6A19CEC6E3CC20CC46465AA61DF9A9CB7D9B4ED157E3DC4BF
+FF6B752AFD16943A4CA7B6954AD3C8E115055F0FCCED4A7A9AC3DF6888724A0C
+1AC640EF479E7D502B2F030F2B43D51996429B40841CA139E8EAA87B6AE277AE
+F8A4C55D4555BDBEE4232DFD1A468548DD2BE1193B3E0C7DE64A944973BA61A7
+4EB28DB3AA37C5FA901A9E7DB175DAED17DB95E22EFAC77CF7D4B0885824825C
+9B6C7B83BD0ECEB934797B49BC0F530F7E114C2B46D63DD7C56B89FE4A67EB3B
+6730F3281453F8B12A13967F1FC1428ED836B7B74C88C893407F13CD9FEB37A2
+E63D62D24F0097F41F756E706C376E1F85EA99FD6FA72611A9A92D3E49711516
+42FCDD0AB37B61DC086B7CE1D4FC559E2436D1334B3FC6A45F2FBFAEA7274455
+AC6715983EF884243D21C1FB3B433634A1B100DE7EFEDC96A2375C370F5F6AF7
+88FF97C7F49A8716AC5BE715578FA60394A5AA3ABD91750D3D92EB2C20697852
+A7701DE59D37A8FBE71FB85C8BB31BE3FB05443E7ACBED3CEB33379E088BA46C
+9F00659840057537B0CBBB92106343FE7B22E1EBDF988D2EDDE8454DE5042227
+B71CD978B414CEFD6CD9C3F17F11D325DFB90DACC1EA8D539B258B36A67AC1F4
+A3151BF7CC34F987932C469ADDE1FF880C6AA1638D11D339181C3AB485D9531C
+ECB30F18504BCBD1432123AAF1A20B45DD783C4BDE3D9222B7090F20D3DD0CC4
+46EDBECB37892190C4E3099B2A5599C2969A2772D7BCEAEF5E68C7BF2FA00DE2
+B955FB052E6C030D9077456494ED80A3E06937E0C47B28B92E3EE4E4D287C687
+E65221A1F3D8D61780C7A9199B373087770136C43A8B2A15A288CC4E89B3D298
+6F368BCC97D573BC587A0638FBD3618AB7AE3385BB12277EF891C06F6F618BC1
+5376A53CDDAC8067BE854DE1C5E554DAD1D067B6236E24C71E05DD580AF904BA
+B6085CC5FD0EF91C7A9D99E765C1A0C042508EE88E882121735E5A8FD6AB154F
+9993E0FB801632B535E6855A2E957D1DC342AECCF2E3BB566CD687271DC01C73
+C04F207F8C6294E0EC5C4644C8FC359A7DE5656D49965F7A4AF7D4AAB46BDE80
+7AAE6A0B0A1F737E075FD15984BDE06E06670A676EDDB0FD7BEFACBDD16EFB6D
+78AC731178AF94A77470EFD8F327A15F1A03300CFC19C9A9C90EF1388E9FF702
+5526B6990D2F8AA2DB72A1B19043045121F02D0212F3E892D1B13601E8324493
+BC4FB860EABE27DB73E5828FDE47C2D83E5505DB2C8491612605DC988F84574A
+5152E8F40CF20B26BE241B1036C9BF67942A8664398F43C4A5F1ADE0EB752D34
+1201D0DEC34EA95609A2DD65A7F761A0BE2FAB352F7AB8BFA31D559D39BC356B
+E796188AC31E0C512B37AA9637604C6656B10F0BF5C8F083496E3FBA6F449420
+C05C5371B16BA0B047F450104834C2FF96ED9E66F146D19E807B4C1C78746CF2
+C918DEBFA52C49A4645CCB2F3C5FF2E4588DDD1CC6832A7991CBCF3D3387992E
+4DBE05C65455EFC9D3F88248B27C5B83DBCFB13E72B24B9A13DF66E68CBACA95
+BEC7C0A6E2CBEE404259455688DA4F512A2AEACA619C2CB1FF20546200F164C9
+DAAD09F2CAAD9A9B05FD59790FB8B892B9A72B3A04F9443EB216E762AD9C0695
+B966BC2510652F31A1DD10AECE493329982E3583A7C106E8E4EDF7186574ADC4
+CF2227B520ED9DCEA96D8FDBA7E227219DC13DEEEF8958EA602FCB52DEF6F9A1
+589C659AAA7A4CA5D78176CD27F7328BB71FADE61224866B756C78329BB6557A
+3B003E15B66A6C307023282FFC3EA63467683B1428DCE51B2D5BA418661A4DA4
+BE4E35945C93F22D9B4467B2A20D1B282724A02D9032F48F2829868163989995
+1B866536E43B6AFD8090ECD4AE576A28CE2DC7BAF04111701A71EF4C3B8E8BA8
+8AFF6E096BCFEF20DF3BF29ABFDC2507896D53E3AA48DDCC77BB58D85A3515FF
+BA5BBB0A44D4FE8580838AB91BA337CE461B537EFCB0D4BD968D0CA8F4B808FC
+3ACB08AF1C580C634AE27123E50E7E42A8C861667238A52856A66E9BBBECB160
+DBDB1DD426A2F76CB8C7890320F7DF50C9FE89ED1405A59721D11FDF2FA2B048
+83B77C164248F7BF436E2007AC9BB4F27BD8FF62C4ED9D377F2044D2F5F63420
+1D9935BEC227187942805B7A66342044F54692D71C820729691709CFE6720A1C
+6DCE3E05095351635827C6C03B1E67C9CE546E5D464B6E2F608CFBDF7EBD0280
+04D2C1DD0AB53E75E0C4D2864D793E617477F3A308E95D68E717790B3BA4B4B6
+9CDC5B978CCA0A52FBF14D7FDB5AAEA8AF591CCEF944D9757163370A95394324
+8AE2885C1F9FDC8D5365811D20355BAFCCDA0722057A229D9609D5DBCAB0C3B7
+354B8A0432FF196F4B5DE84BF7B7C799C5772D9B1FE97ABBA646916F7081B98C
+5EE2019F992CD1611956B9C500F89DD6610224371833D0B85319EA50CA5B6797
+DFF2EAAD1A190F32CCC801C06D40DB4978646590FF40A943C419BEF1C1E7C642
+1CC1F33899247BF8B830FE58A2F0B93E5F011BF23A54782CA0EA09A0BDCC10DF
+7B688287D2D0DA736A9194F070DDA4D39248DEC41CB441A4225602C87AC3F7CC
+780120F4F92E65ADD62FEBA9F5D8AD1029AFC86EB4D8AB729B17E1AB21E5A07A
+DA4AF13BB3C02B9CDD7C063741D0E79310D48D7A435D8904F87BAD143BE8E521
+A51D6E7F3D348A3512C2D315BDF1A68D87FE3DE03F5D95E440B691AEE8C7DED7
+92189FC58C20E36FD72932BF07A921DFCB5C444F180D78F7CC5B83848DE155A2
+F3E47F45F576CF59C5D46ADD277B0DE74778F11F999F3C2B6436CDA253033328
+65D0BDBE877B644A4A6685C239921821357CFD228E9BE92C21B3428D693F48EC
+058CD8C02C5EEBE3957A671555703F01E430A5CDAFA3A95155E6750A4CE39D1E
+A89F19195788625B26FE693F312CBA53F08DE5E3A2A8C29FD7312A92DBF79C73
+0BC7A31C9D1945CF8578672F586493132463032964C629E0CCE49647DB95EF33
+CB434C8816E0E3427A0114F795F8A0C51CB2AEAEAA62C98CED7B87024BC16B30
+40D997940650EAE72BE6323F1697205F608091BE8AF08A9C91089C120420B3A6
+68FD09615D986FFD06EEDD39BBAC9C4C166FCB9E3657D88FADEFB2EAD4941591
+4420282BE836A4CCB74476114E2979CA9CDA9845668DC89B04BA0AD91CA46BF5
+F91F8E677815B3D2CACA13A3C7E62BA3FF44B35E957A0BE4A1EDB4DE5EC2B42B
+CC427D4E8B8907C7F0E3B82E960663456C1AEC4C2B275A1EAE6126BB5A802238
+1830D00CCF43963C8CA537D24D7B8A8A767E978DA955613A819AE1F5A0D12BFD
+378B8118EA7ED73D6914DA71C0FD41620151A7CAE1AA36625E98A25F72D0CEAD
+F48F4A822862095EEFA5FEA97A7A72047985E455F326F94F65F9B8ECAC0B2A42
+58396F7F3C4211EE320CBBE9280B08ED54171E44D8973256A286AF41730A9A7E
+A88FC1F92509135434BABCA88CEAAA2ED499E2F3C316529DEE9D024FC1F92FFA
+69D8BF95AE1A5ABAD706442CCA15D352D10A03384B06DB6C31AAE831013B32F7
+53C0D21ECB615D0F08BE01C0E7FB1F23715A10CE32F1E33CB40292CEDF59A4A3
+4BF715EDABE23B4D1FCFF71C40550249A03235D307F948D462944BF685530035
+1269AA516F99D95618B24B07A8D2E56F1DE82C5A2336263C46F329A5AFF5AB23
+FED8E1B05B07935581816B5A3F3412C403DCD207A1F332C79F17B711442DF1CD
+7A54B90653F78C0180FAF33C82BF371D56CCB71CC73B9EB2BB10E3617FB7E0D8
+C8AD510865216E44B6D2D3B2A02178A42766BBE1F738402C6DCE694307C8EA63
+25CCB6D7298A2200C63CEE67739D14270D1898C495361504B38A15F81057B129
+89835CA35A523E2B848DE47F50EEE2062050522B8C6E4EE0C3CDF8EA7E878C1C
+387B5BA7EAED5E890CA1508413CEAE9370286690BDE5A96E89E916A8A81A90CF
+223797B54F0C408044F035D1BCADFE1850DA6EEC5D61211A543741C36CA5A14B
+D5402FE65382DF64CE4072E5A532F009D156287866C0035953B5AC4CBFD33EB6
+AC1123A0D0B8AED978F2D9B7EA1923C104237A97AEE2263163727E98D22CC5FF
+BDC0352C9BC16ADFD1D4DC968882D53DCC5E7ADA2CA2FD67DA972CFF17735833
+D4E0DF395B0F5F8038E4B70D6CBB8DA85AAC12D8C9B63EDA42066977FAA79121
+43AE6F4692A9F7F88DC200D049FBAF35D776BDBB0B89811F2FADB8224690902B
+2A6E146A133A517CA12386AC920A4543A0F6CF05A9071074CD157C133EA7A7BC
+4E6A2874A6699DD65DC25C5859580308316E743B8938ED9DFAEA61E1F836D2D5
+F13DF35A82339269D80A1041651CB4A28B4608D0E2C326F01B698816DD20541A
+5D01822C865109022872230FC18DA7A7B3BD858712AF458F4D17F3286303F837
+954F784FF3CAC74E28C5C633A4581AB32C11B9974BDC0FC47F546A9F81FDC281
+6495A1229CA0B91B63E491842BCBFF262DE9556EFCBAE22881466AA874904438
+A57EE59D023A2D3C6EF7D5478323812CD8719A14AC99D480ACFD5CC9DC5C13B4
+28E43CC9784386169BA06D306E25C8D1BB6C0C325885423DAE98B7B74F477768
+6AC27A297360C8530142BC1E7DEFA726C2A6B191442BD7CA8936EF73087D8ADF
+6C9A1557BCA49C69E33081FD3F4766092F00DB3C7DC71CC151DEF1EBA8D9001C
+4F11AB87091DB2646CCF6D480B6E71E7106581A0509FA55E8326A428F3A2865C
+94B3A88660C35B24559ACC697DE7DB5729F33D1E72719D38CA6BBE24D3E6A0CC
+D291719268709C7AA1B4F00D42A973164E573827773F5D476D5FC2C915937065
+66C6F51D1E9293BE96E0E16AF71E5A26A64FB07D29D5548FEE89DC3A6CB98388
+5505C882BBFE323D4E7483BB1F5F75D9332C8FA1C75628FACC6F6C9CA2065DA3
+A69E213ECFE3B1EC646DAF1422AA8E8734B028314EC6318ADB331E25223E4C1A
+1312A03BC70E0A390F9F07A15E46AF1F39F561BF65790669866A9444D72C4D57
+181AD91B1350573D35122EDC10EF57CB6505EE89148D8750704A036F9B80078A
+D6DE659C19193236E531DEF598D972D826379B9C675A8CF10B3977E7088C717D
+A211BFCADDE1B91C9F79B3DB488C5EEF262F0524E6F82BE7E5D94B58953E72C9
+63F6778919F1F2126404A2E1EF9397773BB32C0C4EAA1B8E02BBE3E9FC75546A
+072611BF1D5DA8360AE0E2B199288F690859D9BA2720878301E6A358D26F04F0
+D93B36441077B89CD9ECC805B87BDD1FF13E6E4426C1CCA3E9F4141B4D268A07
+02ED31E3EE96C6E62DA983E9DDC28796995F452F5F1B9635DF1914140006FA69
+AE2D0C04D504E4B735B8BF7A5CA4ED496D56EF87389EDCD78B6870951F963F17
+A4A9E2378830CFD1B0AFAC64C93203C083D580D0DC575A69E5F2A318C35C4052
+FFFC7F4EC5DD7556DF2CE165A362FD3BD3BEB568C247569F18FD85B5CEBAB263
+9B7F1E9B5886F07E9E3BF192E462659944241030D9375DCC40E1D744CCCD18CB
+5A6595A1976E3767C0F1829F76F220A335A5EC49A6E099F7288FB1A415DE05CE
+F41FE8AF2DB82BE6B53EC82A0AB3FF14ADD98F5AFD9B68B76F5199BABA5436DC
+921C36A6AC8B245BE2702A7C036216C82E81A775D1AD068FF106789CED865D64
+A4FAA7861BF49C52065A1C9E52AFE9A0CC9BBC8863B902FA5DC046A645C3D72E
+E28FA624B18103C9782123D6AEB075E22B0707348C15159D1A3002B2822F3269
+129457B3FBDE1DD4E148B77D75A50A0A063D541DC4D00E1500E5A19BEF09BFCD
+C36D7E0B60BC2A745B50BD7B650536C563AC305C0AB63389BA4E9AB11A171D6E
+36EBB5CCA1A06960173A865B7BE57336C18BA87710092A12C88A4BB739A070B1
+92D1D52A22EA87E84B9D70A0C8764F48076F7C381E2FEA4DD8F9A86FAB2FF56A
+9FCE5A47BCFEBB78F4248513E9F117A50DF41F14379F9D61EE774F109162B87E
+A3F45F36EEAFFBC1EB63D796FE6D4FAF2D16B3807E4BE4E54F9779FA01EB853C
+B6DDCD9773EEDAD35F4795D90D17BE66400B31A2E4C3ECA5B5282E22CD2846AD
+C1D46908A493998F17D13A2416D4671F956398EBFD075FFC676F4BA9B8CD5BCE
+391B45AD842C43F98FF8FA42F6ADAF4C429DAF025AA7383F4CB0195CC514E804
+C47FC3217159F58E174481B4037112F219F4E7CD8816DD332F2596109AC3E46D
+C38E214ACBA5A55ABF5177D53782E2CE38763618ACA0E461B0B735AB5A9DC1AB
+B92F8588E3362F24202F163DB7CBB3D24A06620F0D75F621869A97DFB8678ABC
+EB57767E94672F51154F22FFF68EDC69279603BF5499F58B3BCF5ED32848F42A
+78A029DD1F5950DA3C6C4E7CB911C69A88075E14970EF23ACAB307D52A627EC4
+4359B28C00D05ADB4EB726FC31B0335E7C2942A851870D3520C5C96A4F1F834D
+584D92A454BAE25D79F2984A708C864B853B24A303F4EB132BD9DEAB438BCA65
+78864ECC83C746D63B7CF7B5CF1B9734E102007F9A0954EFB8550C43A9410168
+2D21E28DE211D231EE4A165EE129F47D07186048A152496E4FC9CE844FE45903
+076F6D4FEF780A52BCC56D8435A3949DB75C12F1F62CDFDC521CBCEC2554C460
+F700716A202A10153C800797C00F0162A14B8CB0E9B355938039773407738B57
+6380CAEAC0AA2AD724739796A9485D12ECCC0F3546F46D6040372B6E811212D0
+88758DF06DE11650C52F3C178CBE912B749351F065468DFFDCA9A01E14348D98
+EBBB9A7A168D1C4EEF97AA0C20FE37C3B3CE1CFD53AB00F5C7FA394F2123CFEB
+7A1DC68E7BA6467B2578EA2B00847F6BE6E11F77AD6EDAB10AF837551B81D429
+AB185372A6E567B73C56378A023AC24D83BDEC508CEA954A2609F0BF06389A22
+8F8D4ED71E2C0B202B68C0597DCB2421AA163E77CEEEA6908CD7F08B5DBFDD28
+DA55017714ABD1C98B5D5C8E01EAC1FFB4D4D00D7879B6EA44DFCF7C73EB1AD7
+0F8ACCC9A404496F769F5DC79FA1C28FB86F3C863D3B5961406B630D87270C63
+84FB51C5A8060B7E59211E3953A3FA571008D3677E8CED908A8BA2C7A0FBE6FF
+ADAC7053ECF03073C33A681065B5013F1F39E4D63CB657FC9DF6763440272B45
+0E908CBA727375DCE5D479B7604510D081F452E30AEE9335635BAC3FC4B4516F
+714A5D709BDB673A0E4C4A7CF7833F8011B1632F03B3C5815E4C2BC44502ECFE
+5791A5A92A8EA997530DB13A5BB2C9B8DC2E60D18FF029A88F63103AB54E9B52
+D08F82AFA775AEA9E0354C77F3442019698A08D366E88435A5FE1C388CCBDE65
+94A41A384AA4B4E47CA54D2F37B8B80FC3485EA95B33DF87A4A5CF313325C08A
+76C669C86AE536AE345D7E5A3052BAA92DBB827FB877A1EE8AB6914F672C37A2
+9469AFD84800A913AB4A1F681E7DF81E93B9C34076B32D03BDD8FFB2036A6035
+86E4CBDC20263AC0A990AFAC2EBD451CAB04EB66542AE984D0E610CA79FC3268
+CABBD8F91E8DB1AD7E81C13B5E9C682C679D48E9DC94DEDDC52A68F76DB57242
+1628F8941AF3B433B8A780C209DFA18AF329E93769DDDAABB87EB1FF71CF2401
+F3162EAB20883AE2423E84E05BD0A4D3A4BD1A3627FEBACF14E1245ABC8B378F
+406C6FD1C60F2B02B72DB5449582C0348B4DB66CD1B1800A27FC41DCC0F1B9C4
+E6ED1E83A78C452A4B55AA0A93EBEA6CC4618FEEA937695E6513B7875E4EFCDC
+643A87DE5F11B40ADA5D5A3D0F4245D5F8C8CB8D6E22
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueID 5000793 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
+295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
+409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
+4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
+2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
+0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
+B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
+24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
+43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
+D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
+5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
+96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
+7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
+0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
+B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
+AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
+97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
+FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
+20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
+0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
+F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
+3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122
+A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379
+5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA77428025D4059BA
+2988AC2E3D7246BAAAFB89745F0E38580546045527C8779A254DB08DCC6FB9B9
+0E172209FBE3857AF495A7F2B34BC895A39A30F903DC6E3202D29AC110D868F4
+7184CB78407B8B9D42F6375F67FD4B828592E4A977B9E71854D143CD1A9EDCD1
+767CC2929E071FBA4C3D17500E28A23F697B5D5CC68D5F56EAD14BD504E07182
+3FDC12F5404E74EC1C02AF00C1A6A17F958770ED4A024F5B3644DEFB61F2578E
+56013D0B4E7CA3AD255E23DD63369A921D427EEE0E098E8148B16E8A5613A8F8
+A5F1099E15AD16EC554B644DF306F0CF3571055A81F1B464529DB49E919F88E7
+581066BEC4765E31BBE28C245BBF0B74610DBA30C63A71A4F3B60593A6B41C6C
+636C980828CFE9A3362FBC02F1967F0F770A4790F90DEF9D56E0A76B0703FC58
+2841E6E8D984FB476D4FEB960FFB6B386EC6CBB9EB83704B0AF63F38C77090A8
+DAA165E6C6BC86601B14F8E9F504A9D578AF05128D8C1BCEA9D21057958D5DCF
+63459352EAD6B4A2A666CC5D85855641CB31507F9E30405977B74356FE985A6D
+541884CB65A4F5A8D4C82CB9D82846CC510CBD243E98A0011AD37A81047021DF
+46F69D7C3DFAF2F10F1F0CCEFBE12EB70420BE90C450975434E223C67D24226E
+8B62BCA6BF93B0B1373AF55E4ADD92775B2DF199B6599CB02DB64B2D6160BEBE
+449C057B5B2D226E0F5D7CFB5C9A4A7184FB29A595E91252AE787861A6331FC2
+6605C995D55120121CB463473A7CBD22F270D56CA8E0DA99832A468D399CB9F5
+A1CBCF0031D99F3C4F4B78A0944BED5A7B1AE23E3A66EED453917F9296077306
+06CFA772BE60854A30885DC5FB8417E0D3F7AB45ABFE186D877A377F5D17DD35
+0FAB81745294E35A5DCAB20321C6ECAE276B63BB17366867F346CAD53E06AD96
+091CAC75465BCDDFDE9C4364B2A8EF496C4CDF76B058E4BC1F616F6CF62FB60A
+64F81BABA7A729B8CF679CEE01B1C985558E8D1493C03B834F3696E5511A1917
+2AE7E16AA8FC516CD2CEDE020BC5777598165B6EF2310F4DBD54FE14071101EB
+47F4B2B59778B1EA7DE13ADF46393E07DBE2082C2487944A71CEDD4ED7D3D877
+749D2500636C3996A34EE0CBA770F6B6A655DCB9840AA8236EF3F6182E1C8997
+395077D9DB15B9D0A2DF9A3F6042C94E6E492C965E4E8542AC4AF5B21906B6E8
+4AE2B01C0810E38BFAE99DD83EBFF8E145D09F763B6B134A25A1CC067C6DC1D0
+7286045CE90BA968598D83E5602ED96C72A424848E211C028CB344D95DA04ADE
+4C5DADCE9009A72B6EC01E7B5CF8C52BDFD2B416F5E1833F514659D94BB2F452
+EC4F2E65CE71AAF79106A0468D76D283ADD44D7DB5760AA429D61C1DC2E912C7
+9446C19557A1D12E7116B765BE522EA166E8F0B604807215323DC5C2DB1F2E05
+246873CE189E03FA291A961E4AD90563A8F7B0E08A67DE4CB3607C6ECA114DD0
+DCE97976E208615F3CA13FC44041360086A4A173D5441D9C33A38013099F73E9
+0FBC96808F7442FD4D56DF7C4F2D4C9B2301F7CE626B4C6C1617B8F1584DF195
+F92FC6385070EB02BF2541307E4EA34C131815FB9028C118F4B792C5E74EAF2B
+2FEAAA4F5CE91829ABEEAD9B4DC623A08AE0D8049DC1FB98349FFBABD1D2B5F7
+B2D58CF489C1116C69B0E39BA3E669B3858004BCD4518C3E0718DC4A64B2EB60
+6502E783FA4B6EBD1A7D112670467B74F8A04DA69311381DC4C26044B4696BEF
+EFB07B0BFEB7E3F7713B61706F348EF1AC277E6C43A8DAD97241D9A7C0B97D44
+1032D8AE53999D179CF8D749E383D14DFBD6AD57C6808ECD8BC8A3A14ADD112D
+77874CA9C03F752F15DC94D2839AA4638F0F842CA5D8D1617BBDD108CA950AF1
+23A235EC6CF12B1D3F4741AC28C4B2906383A1A5492AC1BAB91FC6C7182DA522
+7098CCF89A5D5093AC0BB825E1D135847F5A710DC831D4FC712C41ED765502D1
+BC4B74CA6F65B776BF110862316382644EA5C79A6E0C49BCB44DD88A536E25B4
+BEBB9CB3A583E579E775BC22B1FB3C1848A7E3B6665942E9AAB756B0522005F1
+BCD665F977B85C37FA97B5FF19D2558A874611364B4318FD659D018498E2C994
+ACB091EFDAA211F3AD8F720489753816FCD5097334D12B02F6C5CD060AB925F8
+E61FA171FC57353144D2946B33E8001D3AB8CEE91F02945934BAD0C06B4757B7
+7CDC8EC97B4FF04B3470D1D4AF486589BA1B55ED9DB471877784FC57398AA686
+E7E220D04C06AAB74E7EBF3103ED1248CB7C9F49643CC27E21F3270E096FA915
+486BD1D3B7CE89DBB225AA0F9D75B951817D41472C7B791CACAC2B36BE2005F2
+04AD42AF90A2EC433F70C085DF6589C50744017EB9BEAD58FC26B1B56C285910
+2B2DBA4870802BA859F275815A7AC1032B05028D3044CE118DE5DCF048713250
+BDFEF7B95E8CE4DD75EC4B97CFA5C5ED5B8F9191E7D2D2313357230E0629C41F
+474B1B9F5F6FC94266621F0D2A50CAEBC60AAF6F24D7062FF4FA0948E12A74F7
+238663776C8A8031577FC30FE095DA64C90E29F51807DCA8F4F83780624DDB14
+556472128263E12E16736088DBFEC7085D3628FFB8A35DF8DF5E400E5C18086B
+352680C7575B4DD9063CD9BD7372DF56D39061F6A5A5B1FC98FF6DF7E00978C7
+26220733B9D40E4A97EE56A8FF28BA37EF3ADA813230C43F33A7A84041757A27
+2156176B2F668CC4D76516E4E3C356A9EF414D51FD0549A70647AC86B6456A43
+84056088E5119AA4594F6487B75946BE84C510200BBD779D70E8B61C700A939E
+3217C49E69985AD039CC7BE4C730732FE2FE01CBE34CB774B16CEE0358BBB56F
+C8115E3555D2AA629AA2EEFFD19D729A18ADE2F91B3364818670905186B9B029
+D25C642313375FDFA4D6A3BCF349865E7EDDEE435C61FB30B04B8FBB1378D0D2
+694162AD5E4B4A79C234F469DABA61EB15EF3C3D20D8AB5C01BBB4E724FAE144
+E9A8470BB2699F3ED8E6F7DD946A0879123459B44E642452C64620F18C7B04D0
+AC4296DC67D8FB0B13F180FE00E82FEBEDD7319FC6CBA642489FF2ACF91793F6
+6AB7C3ADC0D0F09A02F42099CEB111C097D73FCFC007422F4EAEBEC99EF05732
+09AAF021324F0B190D026CB0A21838C494A00E4DB00E362A29AA54E05F987D51
+F50E98795962DA5A3D7DE59C89E60554AC31E04AC7DE6FB46C5264FF771987AE
+12F9E5DCDB3365BB2AE18CEAA43246845CEB68E938AD726BBDDEDB561CF1D260
+AF3B9787B7B491F1169E118850886319D2F8A5600AF06675862367BCD68C6D2D
+27C5DCE0D733566DDD430FB83A4900B131475116B6D123374463B22148CBD831
+4C524195BADDEB0105C6911770FB4875E94ABDDA49E4AC41D8BA10FC28CC2807
+706AEFFE3B12D4FDAEBA50B255FE2213FB623ECBE1A2BF57355768F12B022AE7
+3F18DBBFCE10279DE13A0633737C7794073255DE5E424DF633C700324C8C795B
+0037E819A252770267E46B2307CF4791CF6CBC4D857A18B9DC2B5C493F389AB7
+5A859765342A8F71088A9BF7C94A26FF5EA240B798AA3888FD0D3AB7E696D693
+551D3E2678A451027C4BC4A2A774A3335CA803D85A1D205225E9DD2E219B0849
+AAD18F56F7FF65DA30B21DEC14047039178652040A5B3BB9514FE1EDF202660A
+24546B62117862181469C192D74F2D5E24483BFDB8173EFA1B62CC8E96553B74
+7BA2A2C763A7DC9E78818FDD67B5C4B13E893A99068383D6A5644DAE0177CA5F
+BD2B00031ED86DD51E7DF343539233BC6A8B7D75D8A47CB16E1819E8C749EE07
+4053F56BE02CC04A67B73D25365C1BF41AD384749BA989866D54B8A4F69AA1F9
+C9752774E8C0C917318567EC7AF0B847EAADB75FDC46BC48FCC80D9F5AB0D56F
+762404B5190A07AA02C3F8278BC3058CB57A51D338754BD152E956D42158208C
+AC56715B72570E91D0F0CE72EAD1E3A9C5895513DA0599AE2B6F2DB678E732A3
+4CC0918D27A93EE94CEBD3A2A2D350A6C116DDF6BF5CBADCBBD83FE3A2CE888E
+58F1B8EE470EE81F8EB0E87F30E228616190F4847AA95A77E4D1D85CB463D7EF
+A33F63AEAAD1822B739AFA770AFBD394B5745ED510C84A9F2B226AC67A9BC0BA
+254B6A69F1A3CDD616DD72DEB93677AC1E2FA973B53DA945BAE7FF61B8677A34
+9B53BCD8D20DB78159BF76ABF5708DD847F97A875F1184EDDB3CB7B8086D8568
+36A6557D675CBD5EA77137336E805BC7886CF89651EE2DA8B7FD3D7FD5944361
+42272408AD91353519F895A302A419DB8533730A51BB40BAEB512029B8817E69
+0B8B130DD9E3EF42C32AC8FDB022D55576EA671EE98D484C268953B3D95E8EAF
+3524231212ED7116534D26BFC2D69E621FC08EA38C00BA7EEEA53BD71792276D
+20630F4F2CE9C444FDB3F0F03C32F419FAD16C05B80CC74FB0187472A78A019F
+2E38BBE6E0D62655A4E09F40980217EB56DDF74F42A52459D261B91A240581EC
+EBFD52810A1FA41EF65D2785484B80F1D728597D8669C0D5C09D2816AF24F752
+EA846D2B028077EC6D9830B8CA4ECA7DB77AE637750528395754CC531C905FFF
+182B160C780C6EA7AE8F8F42FC07E8B0CB5F9B6AF842C728FAF7F7FC8CB5EFCA
+2161C8E0BCDA9B3F100F2FEE71F9BA941DFC5C1A4ACBB3177D2D0A60C7BB23B5
+C8304153EC1DC5A4EDE951FBA3CE223B57CAB15E7AEA03104975990DBA44B971
+F7D52112B6309798DB7ABF51383CB091225A7BB1721ED1A03DB2684F3754A706
+750B6BF629136CE3353DB97BAF71D6CCC5E857A2ABFE104A6445E3392045DD66
+ECD4A5479C18038B5375A0DF3586187ADD6A8F61A51EA1E41FB67FD9D728F3F9
+DB8B04772112E69382A34FB7B2DAAF5E7E653B6BB300D8EE284FB49FFEE69A5D
+8ADC239268E0612EED7F08E8A9E2995F10856866A7E739FCF376664B92EFDB91
+F2633033398A215918D9DA74A4F0F09692FDEFD1BC7FC1899580E6C08D8AF26D
+6F720E25241E76A87205A65DC8871D32F92056B5BE9438F3D1225FBAE577ABD7
+952C75DDF86C433F1AADD9798344C62BD300663662E35DF041F143DCD6A4248D
+094D9727DB6389CB05BAAA752323280E10C99A8A1717D811C8030DD97DF3D98B
+9759CB26CC003F574BDDDB8FE1FC1C8197F8B071FD1E7F4BC3E2212471AC384C
+8770AFF104742B88F8158EBBB3467B4ACF504F4A3C4EED87245F0811D936B2F4
+5904EBCA5C1224736F5DFA8934DFF8F6AE0DA84DF6B43CDB6A491F36525CA7AA
+221CE05922DC7C0ADEDA5D7A992EDD52CBC4CF82580CE15D953A9658B2EC71D9
+E8DC5B3FA8C9534451D457F745DD18C44438A70C7FE457745CDED39FB6F7223D
+CC4D063B2940B6FA6645E1D68BBB62A440BAF0341B883B1DA34F340B21703E3F
+D9DE3965E40EB9E61ED42EA03455F25BC25112B11E81A917F02866013E77E47E
+3F6F92BB76F2EFA8F7B4BCC20772A78345BA34A074CB4B7AE7988563E402872F
+B1310D0CB7EBFDF05EAD32944BDC70953DACBAD16E6C72590E403FEDE9A8AEC6
+4520334FB4C53202EA19C5825CE0E8784696AC16C23FCB2A7E8C88417A898594
+7B0A4BAC3B46F6174C9821B3B169E49FB340AB07BB3383868CF6C542A384D610
+6DC6E0C10C26F6FFF27BE7D82936A15A3555AD6B19E84D548D9D58D54998E459
+12CC0C89325E7373588449DAB292DBFECF9872F2C4601B731334B86CAC488F2B
+D399EBCE0A084B90FF3F41169E124E6777A0DDD635FB31A2572A19C516451978
+717368FD0E14D446AF7382D424F6750E0D61536D574373B42838E4BDAA34FE52
+625EDFDDCAA6E32952115D7FC1B22229AB7BFA0D31E3F19604A79F0EE9529287
+2498C49610A099F76B0A736AA0B887CB0344CB3F32D9654C3607B6373F053233
+02D960850D39EE00007F83ACA09FDBF3E70EE39A24FC57FD0A3AE046DF02A8C4
+8F2432E78BD517E179DFB16AE0FCA608606C8E4F6BD81FE20C168FB3C3625C42
+64CF2BA9CA83298AECD584157576ADF528832AF12415129BF324A3813C324D89
+D13EB101F6ECCCDA77AFB15AF36F7B48B34D57D7DE23328D8A97CAD0C5A2461D
+6535407EF0F907BA3274B4A87D8BCDC9838398EC738949532BC511FEDCA9772E
+E7423BEAEECB19FFFDBE73F89138157C87D7726EDCAFAFFE237E3CD466CB668F
+D2329976D5BA24E298ED057940C2E87A48D65DE79B4F986A4105289776A137F6
+FEE20222F3F5F049C7F14B330D4627B15BD48EBC734C8F568755515127A7A8F1
+471CF2ACFA2DBA613834DD7E0B2DDD59ABB2382C2B3D1905C39719EAF1EC04F2
+7F731D084DF76B6948D8F2A0571D66E84DD9626785929DEF390982B9A324BC3E
+D6D1C5D5FB41F147ADA0BD282387B9DBBD1576E6E128405A4AC575F2F2B83954
+B42E52781AE341371167763940506B4EA4A8B243FA32403020498A12D350CDD4
+E05A59605665A337B38D8F3F34FFCEA5C16CEAEB4C34E670852C80FFF4E3C624
+6220F65BEE999AA487A2D24C58C4CE684B74A3C5E49C01C4CE274B9C4A442CA8
+50973A35ECD40B85E048B1C0FACF78964D60C026C2E2DFB8941A36E0B7B28CE0
+DB5F5A58260716DAB92E187A4E518CD9A93AB5F97CE6ECB8E7523D7B932C99E0
+7A40A73ACCF22F0139925B76E388789F252CCA699209D23B8D341C9C5FF81F0F
+A2A10C7F159C45896A244B7EFED4CAFE35FDA8C3D4DDD28F336B09DC2CB8F56B
+A7378D2F3D13CCBCE823A81FB84D051734AAE8395EEA9F9CC35E10B3770BF2B7
+827CEC011B2B125A21B9D923152983DF7196F6B54588C258372D5EF51827B2A6
+23934358274D7ED265EC913C596E9545B357606A2CE0F644A38052B6B9BFE3F0
+C973035A7F11BFDF17CB5B3547485C8088551F0A8B739C9E798C15853317FF98
+599A65934B447EB6844727F740985FBB16BC77FBB89622F950B9ECA9F4CF215F
+4584CB8C3FABD1F45CE7CFA3123BCFEF5D427E37290DD7E8F5FABF2C1FE63BD3
+8FDE1816F9DCAF432789679CCAA4AC856F8E06A63040CA81FB90E37F3804C7DA
+C82A0B8C4B9AB803FF5B5494586955608D9B6472583B38203B18BE0943CF6B67
+3EB41329EE7EB0E7B5ABF722F9E855821BB63EA32FA5D4284D3D0F365B2030C4
+5E855F51A64EFD5827BA4AA5865731C1FBFED2F75BDC40D5448A66F1B0EA7CFB
+F893034C42386B15E22A255A218926E1C4001F499C7127FB7DE4AD11B6FF8E53
+BDECEDD7E59F13F614C849FE407F653FF6A4D7F3DC6C260D728B36A7EAD4453C
+934B3A6CE00C42F3B5093B9A6783C36F989278C3B2BE8A5909589F0F95937F2D
+D2AD01B3C289E9BCBC07CFEB2B0668678CCBEF25C2F939CBE4E332870E705946
+35FDFE97E45D356B6C0AA8164A05D6FFBFEAC2990937E9024861DF345B485B83
+21A1B21A779EED3EE73A7ECDC0C464D1653D76B611A8C76CBC9D2C280EE59347
+71331132D76F5E0D2B3277958B49C7E36E9ADE80E7C9654A68413519E4FF29C8
+A05534C8C1E12A228F022C7AB1B5523FFED08986443074CB7C029D2F535A972F
+6E9414811636A915F95B7264505C2DC4531C9C6D8B8399FF96D46A358796EF7C
+AB643E601824CFC87692AFF952DA1103AC8C396579F6C3D345263B9C09560DA4
+8369CFD7DD502C3116B270BD74219B39B368EDCE1BA32DF8976850ED46480612
+D069C3731337BB9232F2D641A5ED8611C97716597D6C7FFCF6A42D00432935B0
+95A56030C4CDF19EFB5FDBEE9806744332A18873711076E6EC4FABE9588D1D4C
+1771FFCF701E6FDC9CB9BE14C7E91D8FFC898C9A4483FB67176B65E4B517131A
+6420B2C2B92C6AF4E3DF7C16F1FCD5041FDA0DB071C902204A219064E00D3829
+94BB53E1468F984777F412A8205DD06F7B9F7CCB61963411B69E39A6B0969684
+0F04A5D4CFE09D9448B91033E8E0DF40BFC7A2C26B391982328FE357D811A7F7
+31DCE0991BC63F286C63072503E3BE5A4FA023FD0C90B60AD076D879D5142C60
+33E9A2F6BECA8FA37EAB6F6AD1C007AD8458CFF7062C0D59FBE2F464CC5F819C
+0100DC5B1F492C994C21DB335E31F9028A8405BD2C7C9E6B4E6B1664DB0924C6
+C4C3421D5DBD24AB2364A4FF49301E18CEAAE951D58874020EC0FA0CCC8F38CD
+28718F2B31F98160BD68187256DA6E01B5D3CD36BE526EB02090DFC6AFD89C4A
+D03F115EDC247B41211A4E289CDE67B424CD665B4D2DD457874D160400F0255B
+ADF7EF681C6C52DD9FD13D2780CD10D11D1136A72CA8072CF43CCCCFD4E54FFB
+B36EBE90605C4E273D7BD418958EB0B170312CC10B1BF7BC0D8F94BC4FD984DB
+937891E06C7F3AC2FBD3C4F916A7D7CCF96C38168A9662326C4AC8860F1CC17D
+0A02AA42C73D0D974B3B61A0D81B93DE2641D71272B9F2BCA4B5A1F2AF440BD1
+9DC246A79AEEC9CF26DC34572C5F0FD0433E6684859C9D43F06DC15594298A9C
+47D3DD335FE4D21B2B26BA0ABBA0A8DAAFC4FBED4E107C2E680DCDCFA0659E53
+66319DF3D69924E79D9B3123A085245208E712A4F86D023CE0A3BFD16C4F5890
+69DFB64E9E48E4F0AA062AA392F0224511DABF7FEC63B94FA3E5B1D74816257A
+3A4DA3AA4A8575DEDEE71B854E004FC2784D7BAB4C84A7DEF212AFE275C29A85
+00BD8F311E3687EB95C20E3FD328A904117E71CFEDD68780A1F595B1BF5755D0
+6CC3C174A3D4D9C4BD0ADB763898043607ADFE2F62DCD913433E02C1C1D1363C
+CE328B6C1466839E3C22F30D9353EA0611D68EF070235F731EEE2950C6CFE0C1
+09563F9B9C39EA4526E8CE38FFCB9FDCC762B25AD3189ED8FFA914E59D8DF563
+441C51C304D6587D5B543C25AF3673E532AEFE0C1D2BFFA04C9450E55B223CD7
+446F777B5E52154E6F980E1E7380E5DCB12AA7B1905ECB92E3E7DD250D64C7EC
+E2A1FE667B328277A33177655C3E453E10CBB5DE3630E633887E39BC92B29B82
+14ADDC605199C950BCD18C28F2CD834BBCC37ADEAA6139C6765ED40C08FCB1D9
+24CB537F0F0F14F9C89FA111CD84E5A417BF282A65C22F1AF43F7A00CFF754D0
+4CD244FEB1B7299FD69BEE63C0E4899EFA527367CFC4C920C20085483EECC059
+2F66C368808DA656B1C092CB53A9B3E5A5250889BAD55E241EAB6004ACE3431E
+BEFCB9BE94C25E1CEF0B3632D3D72279CE5E2F05F75A343CB7658BDC2C120C26
+685800504B05A938C56FC91627652B0D8FAB94F4F57DF2702C85AB021E640DC9
+013F7EC636AD0770A6D90F7289946CF03951E6D92F8066F68F23842E70C0008E
+BA986F9DF7A78C0EB30350DD52EAF82D32053C3C8182C51BE3171F9094952C13
+628403CABE67EF308B2492419D94F93E7C0453873A7C6141D12ED6B482A70AD0
+33C572EFC7431EC51A388D0A7FFB1122F6DE4DE70BDC8597B7F7FF220275A8C6
+AA05147874727458E624A5338EBE95A99D1529E7FAF981F4E5B7158D2F6DB7D7
+057756D3E0146EEA649108E6EB17B186FD2314ABB0DEF5A02C75542C3EDF11DC
+E5660CAEE7A102627B110ECABEF1F0457E619F429EED4B4D4F2ED19D276B50ED
+C53A515750A44A139CE3AF0F54EC7E4D2E9A95E7C5560C37AE2CE8C2069C69B9
+49D82C48629D21CB7976CAF638EDEBB48BCF928211909F9FC6F1EC53557C3CDE
+B536D5C2397681C2EEC7B1B45AA6330336C5A1A603B117B328FBF1DCE5DD4984
+CF2EA6BE5AE975AC530AD0AEAA68C6854452A8E152B01CE21A3EF3FBBF814808
+041F415F88F4C0D1B138C6794396D6384BB3B1940D8541072D0E0EF3B072C84F
+175E90E9BE167D3623BAA68BAE16EB8D3A37B01EFA248C99BC387EC50FC1FCAE
+81F2059B29868ED55DFB5EA982942766466C2912A51B9B245E26704767B05377
+EE575D2723260CF9443EE83D48AF5311D19F3AB2E0B9EA99EE33A9DAA08E6884
+4885BA35B092C033C52547F35CC840FBD7ADE26AB8E5791930A80ED7EBC17F96
+40C4E1F142253C8BEAEB88061D486C8BA3776DF2598C6EE4D22A371B02D2FD20
+402A7F2278DC774236E57CC2E43BAD027D695D04AF02A9668E7092E21FB3F268
+1453AD9C2158B231E5CDCDA5A37A4EA0B408C61EBD2AC7A669270999BB7C3D4A
+9590E4DDAC50350CC929557EE6B694EE13BCBF3A8889ED59AB36505F238106E4
+908C678110AFF73227B0C1F6C1B622C76C242DFA0213AA7ADD5C98F344AE0530
+C97EB6B4FD044C1752977AE8577E22DBC0B183711E47A410D9DA539121932A36
+313F9B79F48DBFCA5F6700D89DC9469DEF3C5D0E8A36FCD60A3C2B00748F53A2
+C928B80420610C7FFE1C141C226BAD4468C9439954692DC5BCC7F01562C902C8
+6BA19D25BF6993DADDDE6EFCA7564DBBD28B37D8A3262A08EAF397A48BDF547D
+E2B3B20B3AA1F105F092A2189AECE726EF0F7F25D497CEEE57CAE48576453CA3
+369222BF23760E85A714E33821B4B08B3C1159B766BBFC8B87BDC64A3FB8096A
+695FB27F7625D20A822A731887F119E45255348442BC5F8C08BEE83B37951225
+70C65307C98895BA0FCFA9DAFC464BAD78A182BEA1DE19B34CE77CC4A14B78F6
+E11C085DE14039B61084E9E83E074722DA3D4772C239E51606648B866874D40D
+9B445DB50B497725E2373C268ABE838CFA5FF2DFACD643539A6A9F86C25F0CEB
+51429E91FE1AC28B04D9E8FD5E440F59B0FF11BCFC1CC834E42E19C202986947
+08A7FE14B616C5C105C400B88151231E0303D22E1426DF7D586598D1378AF870
+6F590BDB68110428D0561C5E1AE7400BEC60AA1FDB9A189A0BFFEB2312414C95
+187F70F0B327F09B83FCBDCBA8CCCC0E41ECB9AEC489ECAB26666BE8A8AB10FE
+5A95F2A0EE3EAAF21D40D5CB3B155A2B9CEC7615D6F267121CBEB3D85C283E9B
+36D9B0940DE48B5687FF8E5364C8D7B851AF3F8502B288AF7570965E62029803
+153080441CA754CFF0951056ECAC2C1C58D0EA87B93D3B09A0423E3FDFE1E44B
+97550E8AF88B65E672E8B309F526590A438E38E48A14E01530BAAB755721AED7
+00BE9A1AD476F61170D4A1FEBC0FCB1486F75F68F5E8809F735F7C7EE0398BAD
+6670E1A678A99F2AE33D639FDB6E504AA9F02B3D875DADCDC965993A86112BB1
+4E06541C8D658E64B26A7B4F38C0BD161D25AD0B0E815C4CAA65D85C998D7DFE
+DFE69331D0447ADEAE5E24A9896BFEF8493CEA0FDFB81209DD068EBF24D3E9DB
+A91FFAB381BA9B169595C1171F986820E9BB9AF52726340C8A256411D89A777B
+2B804FE94DA7D9E9FD0832F22BC354D4D31198712BD3D2A3FA433B0C2C8EC0D9
+B8A0A852C2106A040658AFDA6ACF672F02D432FA4CEF0ED148A6F08645D0C73B
+268AD4AAC25EF9DACCD53E4FCF07E2DCD9A32210340D7F4295A187365A4A904D
+68960C4E644A40B9F4E3C6EB2154B8456A7F8200CAC41F87A5936D1B230E0431
+F4D65028EAD48BA22CF41815D8CFFAEF0BC411E100A401CCF25AA630782D9C0C
+4DCC6834877FF4A0330C2C7EE37C58AEE4A53AC28F0AE02ABF2ED7E65D80061F
+905E38EACCB58390375DADD554C98CA2B005579F8E724C97B88F6AE8289EF21C
+F351267D586922AFDD20892BF3263F5FBAA4A3E7C16024187FBBED81B557196B
+D2EACC985930C0E97539EFA52BE652EC950212E156F8DF4B88D1AF2992B79C5F
+D25DCD8099CD2AF75FCDEC084AC81B94D4B09488B6A8DB446741774E11AF113D
+DE79BCDE46F1D30EAFADA8401EB76FFF0613F54C508076AC8CE62773DC44DC65
+194083F0305D174A25E9CAB354019D1DD787DCBFC00079AF126E5C75CB4CB10B
+CCE3BCBFCFF8470658E234CE47CE610A064C90CEEE64BF4E94CBFF0769EDA6CB
+3F60B4F4A12236BD273ADC174DA360C7A302B7154D610C2EBD0439EC2A0AC1BF
+708F327C709AC551F72F93318C61E227B2C04BA2F5BEC6913A7D14E684831B80
+F625FD2526552FC2A952112EA17BD97C28C4D5C4A985703206EA7599C7CE5543
+9F06D89FAE65483C61CC99C1B479062F514156462B010FB0C130FC44BCC8B1F3
+6437FEFC5682B9619235BDE023C7FCD389848BB255BA164FCC11B298E6FF81F0
+198FBAE98AAE5094380AEF9C9EBDF7D9DC8E063E01D20CFF3318C0BE4539B03D
+454FEE6C426FB9B50EFC5A5D90993C2ABE542ABB07540EFD18DEF8BA9C649452
+0BAAAEE1BA0AA0174616980A1FAA41DBF6045F6D71911826BCBBB85A29C50DFE
+81D474562C33133AFA8BCE730A347B7225928AC3393FF04080DD74B685D83C71
+C79974FF1BD93EB1483B4115633F8D22F5740EDDF7C0AB00EA0E5C0E33BB9AB2
+6B25E4783B47E129BBF5315249BAADD06EE754442F58F803F50FDFC3B90E33A1
+F15D292ADA6C5A562474E339A0EDE2AE8C5225E182C0AA5986E34AF85CA30185
+73FDA3B97EA7AC64E1834E4B7BAC07C4404B41D7D327E4A6D11E672AF6B0FD5B
+B16BC5C05C3A6021030129C7970EA1B6255E57AEB5DFAE77951667C85E9C7912
+D626DD5EBE8080FAF71916E21E3908CF1187C239AE7F99BAFA6AF6FA9BB8F6FA
+10548EDF22519AA6C065B6F36B362FF63AB22C28EB9A2C096AB5C3B3ABF9F0E4
+230B111051268A91099FD425298224BBBF3D82773E80661F46A2108E434E950E
+0667FFC199BBDF202A02760561FA2C938D633141C2567A71769553DDBB977E62
+487AE5F58F405E2DF065A1082C64230EF6988F371875E7455AE359D413FC19E1
+618E13423380CF7101C1E5786E437697BCD3AFFDFAD0E2F4988B59AFD74CCA7F
+C0849B717EC76D1CDADAE754FF3E2888100F6F8AA5A407565CBAE2519FCAC7A3
+6BA7D2804B55277A96785BAA7007840ABA7097BF029A42F09BBABDA7F618B009
+02B20D0C5166170E49F927ECEA486DBF60D4545C406288BEA9185D29419AF9B1
+DC5B2426047444D704D1C8284DB6C8916028CB559A1A1D993C372432A8FEF201
+8B15EBDF1839FBCC99AF4B2CC70184227739FEEA44F71B17C066BC6E8281BE57
+FA43B781CD0B22DCBB4D45FE5D043F7F77FEBBBD6E901021405E21F369075CC1
+A5EFAE8B1223DA341CDBA4422051DAD575D85B8F21D3D0A23AEF706E6C7889E8
+90BD5507B77214FEC20248907D9CC76F06261EDB9C1872B58D5B24EC75A12637
+46B326DA1CB035F5101A0D61423E929D1492857D8D3472CA79CF864B75E8C884
+CBC59B3F398D2AC1E72EDD7712EB9C771E151DA8F345F49CA9184D793531AC0E
+6C61BBF5374CC131D7D132CD9DE327A6466ADBA8ED66CAF4C3619CCCF439036A
+C79828F7F6CA8FA0E6BF1156589D5FCA0180A8E40B9BD937C20A3759C4A5D2CD
+AF6065B9B04660DA644AC7812348F005614E3E68F34FFD9CE2A8D4BD457EF076
+B53F1AD0855916BB95532FA2191B5AFF57E34028A2438363A281D4A8A17C7271
+73C772DC4E1E13214B8C8FDEE2535C68728AB24D9D1A966B745FF6DB0347B907
+92EAFEF9B76EEDF4A9D21D77E48DA53AE70D4B82C2F170D746667AA7560481D9
+953DC48BD52240ABC2CCA770150E0766F6D2CD68D3C6C98A216CFDAC5F7AA074
+439A23338CCBE958C09B80A1114492669E06A8B59F11E09A06D5CA95F5079CE7
+1F05A6C757F2E7E77063BE425D4F9C231774326C5F474662DA165929D06DC06E
+5EB521CCD55445C0D8D309CD4E86DCC01BCBED2461536DD64C8EFABAE3113080
+33756075E86C360F5172C2AE9751E166E095C2768C6F78D2F034D7B8AAEB4AF1
+5AF5455B393ABDA883E40430EADF998233BCFF3FEB60BE426FA32BBF703087D5
+162A205F35C5EE5B495C818576E0A0D0185C46B2261D0A3AE5581AFC867F0421
+33EFA2AAD59FF5F4B28B4237BE6EA30F411C480A5419E88FFFF6F71CFBF524B7
+3373C8779F3D38348202046FF56A9AA81DE74452FB2B4D74FF664484128E9773
+3828C9CBC64ED407B4D249DFD88E4C6059E3A0EF0F78C477D9173A8AAAF3C2C0
+4442D24EE56A41796E1F022625F147350D01A2941005D7D76466C09F72B4C6EC
+2ABEC87DCB93686A9490D123996F2E0233A4D5789606C1DF88FA1E2346334FBE
+8C2F1D0604EFB1480D7D92C60EF352B98D40E529D1FA9BFC08E65ABE99E9A3A7
+ECBD6640D103D25F7CA7C3746DDE20F8872E34CE5CE1A5D705F26505607B534B
+D1E2EFF16A88B21785BCF5C0C7C94EF71D7F5B70C1CD648F79A0D62E8DD798AF
+78A6BE13AF22426C6A3F84E74AEDF294FBC6CECC7DA03263BA8D3BECEB51E07E
+5183C9714D421273EEA1786FCF2136FB35200F39403247204A93D8DD0E061A70
+FD3FAC8DE2941B0790D1286E70BB164B608F663157B36B92D9FBF4806AC5C85C
+83D3AADDA9B5ADC8801F54DFACBD443D0671EFCC98638D5AA83640991C468B02
+050576A22700A7D253C080847012A5D12AFE1F64E9CEB0A8BD9D9835BE9DFD73
+C08F415F9FAC16E7335CFAAD30916DA2208A1A1D92D94CC43FFE83536320607A
+AE216F2423F1C44F3EEAE597C614DE23A4F5AD0E0EEC702DDB0B681518AC2661
+83D85D58BA9351FDFAEDCEE6A657F3013D10FB108BEC655DDDD2B292A0DBA305
+76E08D8776153981BD805B191643C49FE7F112ECCF33887E05208CFDA3035E7C
+53DE8F2DC368F3EFD64A5FF94EB46372FFC5C3600A5EB79F6D55F0F5EE536255
+564E3D4605CD5513812E00C02E68AE770FC74B5D2B474EB11257CE60B2EE5385
+8D79B59B8E57FEA51662D012044EB1E759424B00D6E3C9B60F760629AA6B3C71
+AE02C0D5E8EEF62B316E200F2A65DFEA797673AB9DBDB269675F4EBE0AEE8A56
+938B7ECFB5D0818831CD99DA461145B2A7733400650880C582B5FE0A7F65373B
+9F06931E17B0E338C9749913C4416B1A2948672B5920AC7394BD49B512A96788
+EA25AEB8111D7B1010F78A6F0568BCC2A92E3E13569EDEAE5E6AA4BD2DB61687
+C271F6FA05A7374E156C580483B5AB1C352BB2FF2FA68BFA681E8C4FDEE4D8D2
+A794254B3340FA82B3A4D373D2780C7404F3E1C58EBF35C235D47A67094E2982
+2D2CEFC9D4546127FE445ADDBA25BCEE039D86874BE5D3A8B35C8E6DE6D7C751
+F91DD71BA744782C422C2A4410CCDE106C17BE390D58480565FB9C382AD36D2B
+674DC1AD7A72D3E61AC694509ACE0D0CD0BD0DDB3E4C54B026A803A82973D875
+13DCD6A5D33A89893C0E1B03EF1BA703753969925B835D1EA598ED1C464CBBDC
+DE0048DF3B5597B9A8B69620721016D72F217EFE031C690E78F55AB9F25D50FF
+0A9313DBF049CC299B66741668FB6602A8FDA41791BD90D61C039D8181CF9CDF
+E0E400EA339267C6DE2B6787385714C53DBFD8A3B11FA8ACDFD1D9E1DCFB9F00
+823AA131B63CBC3CA7838A410BB79A777E7AFF2E94539E6CC4F644558FAF742A
+7D96591496EF10E5B4D9197B6B8A1DF530DE579F6198EAAC693E8E4342283898
+D809C1EEC0EAA25D8F9D2483255F3EABC9FB4E9EE501077C2611A4A9C37304D5
+9DA262A5A272E1FAA9A4691C5A2D095042C4A0E81003B4A3D9C3D53A88DEA774
+1880BEE754D33DFAF8058A7919DB3F3EDC3B565F8E86E231557A4D48FF9722B9
+905631EEE5331EB628B68553279CF12D3B124FDA6C82CC741E45456A5152685D
+7656D0373F3BE63445DAE733E6271FF786DC1CEB0F76286F8B1BB3E4EF745C7D
+D64916DFD010A1754C6BF0F1545E865924F6FC60B8B36901C9984A2123144EF5
+DF3ED789DFE1C2A9C8C4165771BE0475238D78BC3C4B89E1281B842C9484BCED
+9C04781D867F142E4CD8870ABED25BD99CACC7E16762CB89D83C32DAE0BB4A43
+BA2CD338F47DAA89524529F276664C563C23EBED3A46A3A1837BE45FA0D92C74
+7D2F624AC5379325AAD79C73AD35C55952BEB47D938E1E069530AD71A19CC017
+6F215945A8299281E8D603884F30D948F583BDF3D0634511D24EF5F81CB639DB
+EF876929DBD5882BE184D9FD1DAEDE8CE9BBBF0650B820B94F8FB1DE9C72317D
+A3CB6D4018B5DD3F15658121816266243E5576A9593F6CEB97A3DA96EE7A0913
+C67E9C7E67EA60618250E53A4922B087DCEB67A6FD88A38B95F2905878074EC7
+2EEE2E47986F5B4DE3E734CB12C635435D1F3CB9FB73AB976B4B62B50029D650
+BCCB5CB2C16912C7798DBA5A10E05BE321E0D8141760CD4A71A58615503624CA
+D18653A8051F18BDA8530020883188513B44ACB06C51761A69A9454264B4353E
+3C691FD15BC6490AACD307018B211C444A3BA2DFBE64B4554589C3EE03985ED6
+19964D980CBF18EF329C905B1562D07A476592161431BB9C13DD616C324856B1
+D99367903981A959D6544C668FF56A11A4E6A8F137CCF811C08760C335EACD7A
+896DEB339070364757DA87D674AEC3CF2B73A907972111AD235E3E687BEBEFC4
+1B9E0244FE67A10C1F1F483C25A077440357190D8C23086A468DF5F204C4E77D
+A99E44D25F84F187759F801DB1E823042391062DC6CDB515AD7468A21E67BD8D
+531DDA55A4484C5737393AC599F7142DCF408D39E6F21FEEA1E255ECAB4880CB
+BD30235F6A06D8B85BB96C496BB4945B5D869D03AE23CD53592B1CC9E603D198
+9636D1EEF8CC323D05A4D115DF2050D0336EB847FD254C6DD87DB1C16F957637
+1328D89FD3E824277B47F4D184292023F7164FC817402915AD18EA5FDDC0E568
+484B69C1BD707EE0F17E99F841A003ADA952DA003D7E3015F7CD6671C99866C0
+38AA0004C4EC22083FC499B2D54426D73F355FC40CE9FF0F4FF898D3ACF54CE9
+F5C35329EA8C3D8342C375E94D76746321EC3C2C41CBC5C99111D35BDA763A95
+F3E087E544B8FF99442822D00C64519AFF28A4567239251D7F857CB66C411A92
+3EB1A627B5DF96AE5186F2A2C6DC3599EAE470E9D5E4DD51AA51DB6CE0DF132C
+C49E2267E3AE73A37974CAF206FAA471502CA50DD99A02D23E0BD2ADA02DB11A
+FAA4F1CC935ED0CC09366A347B5C102485247803980B88F87068DADC477EA546
+BED59BAB0DD6C146EE76891DC7AF56D87C5128C6B026ACFDDD40F9311848F1B0
+3745D94A521C53F96169EB060AA88AC19762B7BA18298A7E6783CFCE246A8162
+EFF4A3FF1D589C7B4F24C60E04F073882A3B7AEE9517DB1673E86353F8C7A2DC
+C7450175350658583C38546D7171A7D9A2F95961622E5DE16BE57FDC37FCBEF3
+17D5EFFB641A127B76B0E210782DCB7A6D9C8FF97727B7CB885E77DE90BB77B7
+93E59B9B05EFAD7EA49396A590F926F0E3EED3C3D00B3469C45234E48E5A3C70
+95F6B06783446665A1FF599209988DF2E14C8A4EB6B4DDA0C919A73FBC5DD48F
+278AADF0F2DC3B1AD4D5177A751B206455B2B8180A7D0A6CA16A2CFD6F042800
+0A51B62EDF48A50FC30534DE393F56298C446FDA0E2688619D25DDA39512E5C3
+07DBD0AFA890DEF8377901E3D083FD5E041DE516800D366760CF2F60EA788F38
+E31229C576DC3C2ACE277621BF3E1945A8AEE7F64F590C6E9BD7B8182F0E7052
+0B04E382A9D021E2959A4A7B7F0B8153D1815FE44491EFEB187C484CFF9470AB
+9760044720C74C13499D52860603439FE20AAFBC968A7085BF7903715A103390
+408DF7BF7F5AABD26E640BC4ACC9AD5A5420EAAE93C01C54D4774ECE5AD5DAC0
+A375696AE02782C54006A6C5E7AB2376DD3CF580DC319BD8AF07556B3198F678
+4690576921D1DA4E8CA6E8D2AB24144BE55C0CAAA29FE540DBEDE0FA19CE4915
+F7FDC6F3D415C163159AA840EDDBF61A32DA2282BB6F7BE3C0B25B97D6F33B9D
+ADB359E7FE393FD07F66A90F24CBDF65ACA58991D236BF55E70F0F83EEEFFA7B
+BD9280C77836ACA05F62087D87FC851BA3FAA9B4828C1C04DF4874B08134AAC0
+D7375DFE924480A118551247A787F46701484F13B78CBF53C4E2505E9BDB4A6D
+46EB367B6C592BEF0C4F0435F6AA1AB16EFE3CFFF2E0EF873878EAEFD8F7BC46
+91442950C720410F21132F1CC1072DD9AA0732E7A808A4B4DB0EF4C0FC4075B5
+3E05559438311C575D06FFE434832932457F14A3B344822DB9251781B4AE7130
+C6BD78F20AE92800782012B65AA2F50E5F586481E2B2555F9E220636BD042219
+6D0ED63BC5A1C9745AEAA322848605D0A21BFF7063668D4424603C3B7BBA7E77
+1A487FDBA58C679B6EC246740FDC50E965504B13EE43757B8D7021C6DEFD5D89
+A6F0CCA97767C20D1B8A3AE2603A32DCAB67CDB24563811976850786CE6555A3
+C4E05C5144F6BB540C67C6AAAB1549C698E67953F6C723072D000128F5972331
+FAF75692D9C468365C2D314617C1A9ED01621C246202A838A5C090722A93C946
+39FE88C132E81ADB3057B068E5AAB73388F11281B4464C70FA539E5DB5600431
+46F3B5F9708F0A702C59D022A3E490BD13F1163841408D5FE0296E3787DC7824
+D7DF4D1F51DD1D691B9116EBD597A15E991686B587C34B99D48DE220E4DE678F
+70C18D63A8A928EAF6D4020BB86ED766CED705064CA178108F824E69D23948B3
+918D8990A9DA0D5BC6BB6BFAB120C4116C4E3748BAFC59774D2E2B1E54E28356
+1223B92E55DD1C38C7992EAE97499342C34205EA9D78962228312BC8544C4C35
+64A7B9F0995EF130FCDF4A6AC271B238CCF2F14ACFAF2C52CF5E88D94427B59D
+3CA2192E072E60AE68635AA43B4CCD84818F8BA3BE6E7C3A12141B051EC066CE
+F22B72F32F7DB4C2DE9641473F2E7DD67B3016360293C495AACB39D0D09EE8A5
+829EA662A480655AF4372BC006D9000553BF51BCD2820759776AF30A58A4CD01
+F909C84B66320F657E59932B16CBB4660F30003F8D537358C07F0534C0EA2E9A
+93632315A142C322159D6E8C243767FCD9A6AE5E44608F1C546D6F14988C289E
+F724AD9706E1AC8B8B69525F1D9A1EF2123C1E226F34D8CD54B0A5831EFFAC4E
+824F342E25FDD64C8095CB7E0B077CAB654DD5CD8410B2B776C750F4A03198C3
+60D50F2091D26CA50C3D1EADD19A4474152013C0A7C4395C43A67DE232D21B96
+44F30F6A33B7A6E515705F50730FAE828CB828A83C6245F29BA4BDB0F2DED3D9
+4D1247CC5844DB55A42D11BD6D5D2A36FE316C0287789955B81B32B2C7BC490F
+78021F2667D4F0C866F5FE119A416CC10AD5E0E66BA57EDA546299E6FEC3D74B
+C1A0144D3759CE48361B442546425E1A5BADCB653F888EA9005B1BCBBE61F117
+F7DB7003CEB38EC717D97CB107E8C36D5C9CBDA7A64CBA9DCA6F4D37C72A754C
+54D7E98B45EAEBF36FEA9617EE21BE9302AE83F8D63ACCC2ED2A930A9A506823
+8D402F62664DCFF4A30AD57E7CCD617EE8D65EA164C3A6258937E76BF1CF6F9E
+DE29CC5CC415DA1CAC77E47EA11F0581403207A4BA16C060AF0B7EBBAB4CB949
+EB01F91C29151CDC84940BFF14BB524DEB28A0BC04D3435B9BC2ADCB20FDB237
+4719C73156BFD458ED3203A03C7E2672D96D77D3392455E51664AC15EBCA25A0
+700BB1D41AB6787C8B5B8247445B02394EFADBEEAC50950266C8B5D412590C1F
+CE473FBC668B9E34BFB993AEC72FFA4C0404D845AB9A7015617E314CF30EA7FE
+D55ABB0566CF07BF9EE798FAA2DAC7DB46AF29BAF4336BA55380CA606784ADBC
+1557AA647220FF1545D4932A5F1DC343AA1CEBE547EAF0CBFB3073614D0D9529
+499884742FC1564657BF85E7CDF0B4A808CF72E7795628DC27FB352A88E9EEF9
+A1F87518E565B56ACE1B38268E1A145B3D337DC708E43C5531E392BEE0C88675
+29A7A7F0AF6C8463036B9F0BB3F13EE9D80E7FEEC301136C6B9B8127B0796A56
+7A649DF11FA433BACC73C9119055962D0B4B9D8357E7D85F0AD462E498F492B0
+56A39629217CCFBA0A2D64E614E49CF82D2A07264069FC97A9D3CB23AEA7AF41
+276B91EFBC9D29996E78C35F5C5E2D55F8EF74743CBF70B30F99152C4CCF3B89
+7E63CF273D8A7A144DD378E349057DAC564A504C779F2302CAD97D3DDE96F547
+3C825E38DF9D5B8B7AA92992EC0DA0435C45F5B11A25E8AB8EF8686644046B5D
+5EE08DCCB9F0C63C2BBD9F86F9EA6A1A75F430393DBD276D89A46632B5F4806F
+E2AC2AF6FA72EB3B63CD97E10A41D74C861DF50B269E9ACFF80AB7103E6FDA0D
+221D90E26BE737901DD5360000F4C66930DCAA8F564DEEB7D9B33DEB663A3F0D
+B19EEB5F2F137DA03DAA25547C56CAF187C3877C1E272D126D7AF5185C7E4590
+108BD19DB3BA70888E7E24DD0AF9723598E5722716BAAAC7CEC44B42FA3EACD6
+7AC8F81A9EE1551AC9D67A8BC2FC07B40B61CFB0375DF2554B69AF994DC56255
+E7288CC7264487DF62510042005EA32B0152DE4B6DDB72C4C5C5FB8D4C6E0B99
+9583A88B94EBE302AC43874B57D903535068B731E18FD1097B43A18097D19373
+C7BEDCC310BBF683C7A7ED3DF6248219AD63E6A064FF9300CDDC6689213415E8
+2B65787B1D62B3194A64F2B9F4BC98C6F1D0090647288965E5A3AD841A88ED68
+1A0A7C27E6A17FF9AF31881F9A6EAD18688A473D74D9382688938BC9806DCB42
+2537E5897E6E3AC020325942FA482C9EFB6C1BA346C8B0FC3A5E8B8A5B66C8BC
+4589DA12816201A2BD7FADC77B30B992CFCA4FEBD70834E20A00F557C2EEDC1F
+3A66D6B459C763B39E2C6E5858E4DAC6CFF97C5775B5590C621755ABE64EFCC8
+A3C6B093EEA54ADE8943D533000DA3AA06A0CE15AC5EF05E1892E7AE5A0819FF
+C01D58C56F99B67588BC1D35181998C99F13D0B931B3A059D42F6501DF04888E
+00BDCC4515D4C10986ABF47697808223FD2D5653BCDEEF74179237BE8E90E832
+F98302AE9F1926A90BD6A7BF826FEBFF898CFDDDDDDDCDBEB8366B95780DF205
+42766E31290F09775D684B4F3102C6F17B8798DD03A07893720F8DAC799001BB
+E53E6E249420D739B686CC979EADFE335A71517B505E4088640FB2365FEC3A3A
+536EBD10C64F6472F46E6789A9022F61FD39E99A34FEF7F8A77AD8B4277C20E9
+21F6ECF7C0272DF3E8EB1282D80CDA9A7ABBF4553787EDA5D87772DF5F17ABAE
+BE0F4485121EF3CA4C2E484F56EBDEC8445FB13BEBC70E427428C746E979C8BE
+BA1409FD47C8A8CCAECBD762A2A9EC4DBED06320782CE1D516ECF8A4B4C0F515
+68257E14FDA7CFFC8B2EEE670C3F0867A9D0F2AE01DF1B2E99FAFB707D0C7752
+96E05956C8D4E1FB350EEEF51D557ECF9406DF03DAC8F475389B447BAC94AB39
+1AF3F3EC487506CFCEC37945FBC56226E98BF406AFDD02A0713F7B089D3E7EBC
+F11E5ADF5C2953873F8DFAA42AF78360B3D9D03238291736006506D31C121145
+DA6CB0AC8C11B02CD04E1A4C01E4C1B5EF7467BD42160DF83515640D6B0D9BA3
+E8C9F9D3A1010C2AC7F50BD2329AD2BE095525964B1FD4B317A747C91674990C
+A0FE282E204A58A3C08AE386CAA8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+TeXDict begin 40258431 52099146 1000 600 600 (bashref.dvi)
+@start /Fa 130[62 1[62 123[{ TeX09fbbfacEncoding ReEncodeFont }2
+119.552 /CMTT12 rf /Fb 133[34 41 41 55 41 43 30 30 30
+41 43 38 43 64 21 41 23 21 43 38 23 34 43 34 43 38 8[58
+2[58 1[43 57 1[52 60 58 70 48 2[28 58 60 50 1[59 1[54
+58 7[38 38 38 38 38 38 38 38 38 38 3[21 31[43 12[{
+ TeXf7b6d320Encoding ReEncodeFont }54 74.7198 /CMR9 rf
+/Fc 209[24 46[{ TeX74afc74cEncoding ReEncodeFont }1 74.7198
+/CMTI9 rf /Fd 134[39 39 2[39 39 39 39 2[39 39 39 39 2[39
+39 2[39 3[39 19[39 27[39 39 2[39 45[{ TeX09fbbfacEncoding ReEncodeFont }
+18 74.7198 /CMSLTT10 rf /Fe 129[39 39 1[39 39 39 39 39
+39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+39 39 39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39
+39 1[39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39
+39 39 1[39 39 39 5[39 39 39 39 39 39 39 39 39 1[39 39
+39 39 39 1[39 39 1[39 33[{ TeX09fbbfacEncoding ReEncodeFont }81
+74.7198 /CMTT9 rf /Ff 138[39 27 28 28 1[39 1[39 2[37
+22 4[31 1[31 1[35 5[20 6[51 39 52 1[48 3[44 5[46 48 54
+51 50 53 15[35 3[24 5[20 39[{ TeXf7b6d320Encoding ReEncodeFont }26
+66.4176 /CMR8 rf /Fg 150[30 30 104[{ TeXbbad153fEncoding ReEncodeFont }
+2 74.7198 /CMSY9 rf /Fh 135[61 2[61 1[46 2[56 63 5[30
+1[64 2[62 52[55 47[{ TeX0ef0afcaEncoding ReEncodeFont }9
+99.6264 /CMCSC10 rf /Fi 140[56 3[56 56 1[56 2[56 56 56
+57[56 45[{ TeX09fbbfacEncoding ReEncodeFont }8 109.091
+/CMTT12 rf /Fj 134[48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 2[48 3[48
+3[48 1[48 1[48 1[48 48 48 1[48 48 48 1[48 48 48 48 1[48
+6[48 6[48 48 48 48 2[48 2[48 2[48 39[{
+ TeX09fbbfacEncoding ReEncodeFont }50 90.9091 /CMSLTT10
+rf /Fk 134[65 65 89 65 68 48 48 50 65 68 61 68 102 34
+65 1[34 68 61 37 56 68 55 68 60 34 6[93 1[127 1[94 85
+68 92 92 84 92 96 116 74 96 1[46 96 96 77 81 94 89 87
+93 1[58 4[34 61 61 61 61 61 61 61 61 61 2[34 41 34 4[34
+26[68 72 11[{ TeXf7b6d320Encoding ReEncodeFont }64 109.091
+/CMBX12 rf /Fl 135[56 2[56 54 42 55 1[51 58 56 68 47
+1[39 27 56 58 49 51 57 54 53 56 46[50 2[50 1[34 45[{
+ TeX0ef0afcaEncoding ReEncodeFont }23 90.9091 /CMCSC10
+rf /Fm 135[42 1[42 1[30 37 38 1[46 46 51 74 23 2[28 1[42
+1[42 46 42 1[46 50[28 33[51 12[{ TeX74afc74cEncoding ReEncodeFont }18
+90.9091 /CMTI10 rf /Fn 209[43 46[{ TeX74afc74cEncoding ReEncodeFont }1
+119.552 /CMBXTI10 rf /Fo 134[85 85 1[85 90 63 64 66 1[90
+81 90 134 45 1[49 45 90 81 49 74 90 72 90 78 9[167 122
+124 112 90 120 1[110 2[153 97 1[83 60 126 1[101 106 124
+117 115 122 7[81 81 81 81 81 81 81 81 81 81 35[90 94
+11[{ TeXf7b6d320Encoding ReEncodeFont }52 143.462 /CMBX12
+rf /Fp 200[0 21[91 17[45 1[91 12[71{ TeXbbad153fEncoding ReEncodeFont }
+5 90.9091 /CMSY10 rf /Fq 134[48 48 66 48 51 35 36 36
+48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 8[68
+93 1[68 66 51 67 1[62 71 68 83 57 71 1[33 68 71 59 62
+69 66 64 68 13[45 45 45 3[30 2[45 27[76 1[51 53 11[{
+ TeXf7b6d320Encoding ReEncodeFont }54 90.9091 /CMSL10
+rf /Fr 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37
+71 41 37 75 67 41 61 75 60 75 65 3[37 1[37 1[102 102
+139 102 103 94 75 100 101 92 101 105 128 81 105 69 50
+105 106 85 88 103 97 96 102 105 64 4[37 67 67 67 67 67
+67 67 67 67 67 1[37 45 37 1[67 5[67 112 1[41 20[75 78
+11[{ TeXf7b6d320Encoding ReEncodeFont }73 119.552 /CMBX12
+rf /Fs 129[48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 33[{ TeX09fbbfacEncoding ReEncodeFont }93
+90.9091 /CMTT10 rf /Ft 131[91 1[40 48 48 66 48 51 35
+36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51
+45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71
+68 83 57 71 47 33 68 71 59 62 69 66 64 68 1[43 1[71 1[25
+25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 2[35 35
+25 1[76 45 1[45 25 18[76 51 51 53 11[{
+ TeXf7b6d320Encoding ReEncodeFont }86 90.9091 /CMR10
+rf /Fu 138[108 1[76 79 3[108 1[54 3[108 1[59 88 1[86
+1[94 14[144 4[184 10[138 66[{ TeXf7b6d320Encoding ReEncodeFont }13
+172.154 /CMBX12 rf end
 %%EndProlog
 %%BeginSetup
 %%Feature: *Resolution 600dpi
@@ -2534,63 +4220,63 @@ TeXDict begin
 %%BeginPaperSize: Letter
 letter
 %%EndPaperSize
-
+ end
 %%EndSetup
 %%Page: 1 1
-1 0 bop 150 1318 a Fu(Bash)64 b(Reference)j(Man)-5 b(ual)p
-150 1385 3600 34 v 2361 1481 a Ft(Reference)31 b(Do)s(cumen)m(tation)h
-(for)e(Bash)2276 1589 y(Edition)f(3.0,)i(for)g Fs(Bash)e
-Ft(V)-8 b(ersion)30 b(3.0-rc1.)3350 1697 y(June)f(2004)150
+TeXDict begin 1 0 bop 150 1318 a Fu(Bash)64 b(Reference)j(Man)-5
+b(ual)p 150 1385 3600 34 v 2361 1481 a Ft(Reference)31
+b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(3.0,)g(for)f
+Fs(Bash)g Ft(V)-8 b(ersion)31 b(3.0.)3367 1697 y(July)f(2004)150
 4935 y Fr(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
+b(oundation)p 150 5141 3600 17 v eop end
 %%Page: 2 2
-2 1 bop 150 2889 a Ft(This)34 b(text)i(is)f(a)h(brief)e(description)g
-(of)h(the)h(features)g(that)g(are)g(presen)m(t)g(in)e(the)i(Bash)f
-(shell)f(\(v)m(ersion)150 2999 y(3.0-rc1,)e(26)g(June)d(2004\).)150
-3133 y(This)k(is)h(Edition)f(3.0,)k(last)d(up)s(dated)g(26)h(June)f
-(2004,)k(of)d Fq(The)f(GNU)i(Bash)f(Reference)g(Man)m(ual)p
-Ft(,)h(for)150 3243 y Fs(Bash)p Ft(,)29 b(V)-8 b(ersion)30
-b(3.0-rc1.)150 3377 y(Cop)m(yrigh)m(t)602 3374 y(c)577
-3377 y Fp(\015)g Ft(1988-2004)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8
-b(oundation,)31 b(Inc.)150 3512 y(P)m(ermission)f(is)i(gran)m(ted)h(to)
-f(mak)m(e)i(and)d(distribute)f(v)m(erbatim)i(copies)g(of)g(this)f(man)m
-(ual)h(pro)m(vided)f(the)150 3621 y(cop)m(yrigh)m(t)g(notice)f(and)g
-(this)f(p)s(ermission)f(notice)i(are)h(preserv)m(ed)f(on)h(all)e
-(copies.)390 3756 y(P)m(ermission)k(is)i(gran)m(ted)g(to)h(cop)m(y)-8
-b(,)38 b(distribute)33 b(and/or)i(mo)s(dify)e(this)h(do)s(cumen)m(t)h
+TeXDict begin 2 1 bop 150 2889 a Ft(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 2999 y(3.0,)c(27)f(July)f
+(2004\).)150 3133 y(This)35 b(is)h(Edition)g(3.0,)j(last)d(up)s(dated)f
+(27)i(July)e(2004,)k(of)d Fq(The)g(GNU)g(Bash)g(Reference)h(Man)m(ual)p
+Ft(,)h(for)150 3243 y Fs(Bash)p Ft(,)29 b(V)-8 b(ersion)31
+b(3.0.)150 3377 y(Cop)m(yrigh)m(t)602 3374 y(c)577 3377
+y Fp(\015)f Ft(1988-2004)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8
+b(oundation,)32 b(Inc.)150 3512 y(P)m(ermission)g(is)h(gran)m(ted)g(to)
+f(mak)m(e)i(and)d(distribute)h(v)m(erbatim)h(copies)g(of)f(this)g(man)m
+(ual)h(pro)m(vided)f(the)150 3621 y(cop)m(yrigh)m(t)g(notice)f(and)f
+(this)g(p)s(ermission)g(notice)h(are)g(preserv)m(ed)f(on)h(all)g
+(copies.)390 3756 y(P)m(ermission)k(is)h(gran)m(ted)f(to)h(cop)m(y)-8
+b(,)38 b(distribute)d(and/or)g(mo)s(dify)f(this)h(do)s(cumen)m(t)g
 (under)390 3866 y(the)j(terms)g(of)g(the)g(GNU)h(F)-8
-b(ree)39 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)38
-b(1.1)h(or)f(an)m(y)g(later)390 3975 y(v)m(ersion)27
-b(published)c(b)m(y)28 b(the)f(F)-8 b(ree)29 b(Soft)m(w)m(are)f(F)-8
-b(oundation;)29 b(with)d(no)h(In)m(v)-5 b(arian)m(t)27
-b(Sections,)390 4085 y(with)i(the)i(F)-8 b(ron)m(t-Co)m(v)m(er)33
-b(texts)e(b)s(eing)f(\\A)h(GNU)g(Man)m(ual,")g(and)f(with)f(the)i(Bac)m
-(k-Co)m(v)m(er)390 4194 y(T)-8 b(exts)33 b(as)g(in)e(\(a\))i(b)s(elo)m
-(w.)46 b(A)33 b(cop)m(y)g(of)f(the)h(license)e(is)h(included)d(in)i
-(the)i(section)f(en)m(titled)390 4304 y(\\GNU)f(F)-8
-b(ree)32 b(Do)s(cumen)m(tation)f(License.")390 4438 y(\(a\))39
-b(The)f(FSF's)g(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext)39 b(is:)55
+b(ree)39 b(Do)s(cumen)m(tation)h(License,)g(V)-8 b(ersion)39
+b(1.1)g(or)f(an)m(y)g(later)390 3975 y(v)m(ersion)28
+b(published)d(b)m(y)j(the)f(F)-8 b(ree)29 b(Soft)m(w)m(are)f(F)-8
+b(oundation;)30 b(with)d(no)g(In)m(v)-5 b(arian)m(t)28
+b(Sections,)390 4085 y(with)i(the)h(F)-8 b(ron)m(t-Co)m(v)m(er)33
+b(texts)e(b)s(eing)g(\\A)g(GNU)g(Man)m(ual,")h(and)e(with)g(the)h(Bac)m
+(k-Co)m(v)m(er)390 4194 y(T)-8 b(exts)33 b(as)g(in)f(\(a\))h(b)s(elo)m
+(w.)47 b(A)33 b(cop)m(y)g(of)f(the)h(license)g(is)g(included)e(in)h
+(the)h(section)g(en)m(titled)390 4304 y(\\GNU)e(F)-8
+b(ree)32 b(Do)s(cumen)m(tation)g(License.")390 4438 y(\(a\))39
+b(The)f(FSF's)g(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext)39 b(is:)56
 b(\\Y)-8 b(ou)39 b(ha)m(v)m(e)g(freedom)f(to)h(cop)m(y)f(and)g(mo)s
-(dify)390 4548 y(this)31 b(GNU)j(Man)m(ual,)f(lik)m(e)f(GNU)h(soft)m(w)
-m(are.)49 b(Copies)31 b(published)e(b)m(y)j(the)h(F)-8
-b(ree)34 b(Soft)m(w)m(are)390 4658 y(F)-8 b(oundation)30
-b(raise)g(funds)e(for)j(GNU)g(dev)m(elopmen)m(t.")150
-4902 y(Published)c(b)m(y)j(the)h(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8
-b(oundation)150 5011 y(59)31 b(T)-8 b(emple)30 b(Place,)h(Suite)e(330,)
-150 5121 y(Boston,)j(MA)e(02111-1307)150 5230 y(USA)p
-eop
+(dify)390 4548 y(this)32 b(GNU)i(Man)m(ual,)g(lik)m(e)g(GNU)f(soft)m(w)
+m(are.)49 b(Copies)32 b(published)f(b)m(y)h(the)h(F)-8
+b(ree)34 b(Soft)m(w)m(are)390 4658 y(F)-8 b(oundation)31
+b(raise)g(funds)d(for)j(GNU)g(dev)m(elopmen)m(t.")150
+4902 y(Published)e(b)m(y)h(the)h(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8
+b(oundation)150 5011 y(59)31 b(T)-8 b(emple)31 b(Place,)h(Suite)e(330,)
+150 5121 y(Boston,)i(MA)e(02111-1307)150 5230 y(USA)p
+eop end
 %%Page: -1 3
--1 2 bop 3725 -116 a Ft(i)150 299 y Fo(T)-13 b(able)54
-b(of)g(Con)l(ten)l(ts)150 641 y Fr(1)135 b(In)l(tro)t(duction)15
-b Fn(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
-(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)60
-b Fr(1)449 778 y Ft(1.1)92 b(What)31 b(is)e(Bash?)21
+TeXDict begin -1 2 bop 3725 -116 a Ft(i)150 299 y Fo(T)-13
+b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fr(1)135 b(In)l(tro)t
+(duction)15 b Fn(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h
+(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)
+60 b Fr(1)449 778 y Ft(1.1)92 b(What)31 b(is)f(Bash?)21
 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51 b Ft(1)449 888 y(1.2)92
-b(What)31 b(is)e(a)i(shell?)14 b Fm(.)f(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+b(What)31 b(is)f(a)h(shell?)14 b Fm(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44
 b Ft(1)150 1130 y Fr(2)135 b(De\014nitions)37 b Fn(.)19
@@ -2599,202 +4285,203 @@ b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h
 b Fr(3)150 1400 y(3)135 b(Basic)45 b(Shell)g(F)-11 b(eatures)12
 b Fn(.)20 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f
 (.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)57 b Fr(5)449 1537 y Ft(3.1)92
-b(Shell)28 b(Syn)m(tax)22 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+b(Shell)30 b(Syn)m(tax)22 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52
-b Ft(5)748 1646 y(3.1.1)93 b(Shell)28 b(Op)s(eration)10
-b Fm(.)k(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
-b Ft(5)748 1756 y(3.1.2)93 b(Quoting)10 b Fm(.)k(.)h(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
+b Ft(5)748 1646 y(3.1.1)93 b(Shell)30 b(Op)s(eration)10
+b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
+b Ft(5)748 1756 y(3.1.2)93 b(Quoting)10 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
 b Ft(5)1047 1866 y(3.1.2.1)93 b(Escap)s(e)30 b(Character)24
 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)53 b Ft(6)1047 1975 y(3.1.2.2)93
-b(Single)29 b(Quotes)15 b Fm(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+b(Single)31 b(Quotes)15 b Fm(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45
-b Ft(6)1047 2085 y(3.1.2.3)93 b(Double)30 b(Quotes)15
+b Ft(6)1047 2085 y(3.1.2.3)93 b(Double)31 b(Quotes)15
 b Fm(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)44 b Ft(6)1047 2194 y(3.1.2.4)93
-b(ANSI-C)30 b(Quoting)18 b Fm(.)c(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+b(ANSI-C)30 b(Quoting)18 b Fm(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48
-b Ft(6)1047 2304 y(3.1.2.5)93 b(Lo)s(cale-Sp)s(eci\014c)30
-b(T)-8 b(ranslation)11 b Fm(.)j(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)41 b Ft(7)748 2413 y(3.1.3)93 b(Commen)m(ts)25
+b Ft(6)1047 2304 y(3.1.2.5)93 b(Lo)s(cale-Sp)s(eci\014c)32
+b(T)-8 b(ranslation)11 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)41 b Ft(7)748 2413 y(3.1.3)93 b(Commen)m(ts)25
 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)55 b Ft(7)449 2523 y(3.2)92 b(Shell)28 b(Commands)23
+g(.)g(.)g(.)55 b Ft(7)449 2523 y(3.2)92 b(Shell)30 b(Commands)23
 b Fm(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)53 b Ft(7)748 2633 y(3.2.1)93
-b(Simple)28 b(Commands)15 b Fm(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+b(Simple)30 b(Commands)15 b Fm(.)f(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)45 b Ft(8)748 2742 y(3.2.2)93 b(Pip)s(elines)14
-b Fm(.)e(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+b Fm(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)44 b Ft(8)748 2852 y(3.2.3)93 b(Lists)29
-b(of)i(Commands)23 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)44 b Ft(8)748 2852 y(3.2.3)93 b(Lists)30
+b(of)h(Commands)23 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 54 b Ft(8)748 2961 y(3.2.4)93 b(Comp)s(ound)28 b(Commands)17
 b Fm(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47 b Ft(9)1047 3071
-y(3.2.4.1)93 b(Lo)s(oping)29 b(Constructs)d Fm(.)15 b(.)g(.)g(.)g(.)g
+y(3.2.4.1)93 b(Lo)s(oping)30 b(Constructs)c Fm(.)15 b(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56
-b Ft(9)1047 3181 y(3.2.4.2)93 b(Conditional)28 b(Constructs)18
+b Ft(9)1047 3181 y(3.2.4.2)93 b(Conditional)31 b(Constructs)18
 b Fm(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47
-b Ft(10)1047 3290 y(3.2.4.3)93 b(Grouping)29 b(Commands)13
+b Ft(10)1047 3290 y(3.2.4.3)93 b(Grouping)30 b(Commands)13
 b Fm(.)h(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)42 b Ft(13)449 3400 y(3.3)92 b(Shell)28 b(F)-8 b(unctions)8
-b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+g(.)42 b Ft(13)449 3400 y(3.3)92 b(Shell)30 b(F)-8 b(unctions)8
+b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)38 b Ft(13)449 3509 y(3.4)92
-b(Shell)28 b(P)m(arameters)20 b Fm(.)c(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+b(Shell)30 b(P)m(arameters)20 b Fm(.)c(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 b
-Ft(14)748 3619 y(3.4.1)93 b(P)m(ositional)29 b(P)m(arameters)14
+Ft(14)748 3619 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)14
 b Fm(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)43 b Ft(15)748 3729
-y(3.4.2)93 b(Sp)s(ecial)28 b(P)m(arameters)h Fm(.)15
+y(3.4.2)93 b(Sp)s(ecial)30 b(P)m(arameters)f Fm(.)15
 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Ft(15)449
-3838 y(3.5)92 b(Shell)28 b(Expansions)20 b Fm(.)13 b(.)i(.)g(.)g(.)g(.)
+3838 y(3.5)92 b(Shell)30 b(Expansions)20 b Fm(.)14 b(.)h(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49
-b Ft(16)748 3948 y(3.5.1)93 b(Brace)31 b(Expansion)d
+b Ft(16)748 3948 y(3.5.1)93 b(Brace)31 b(Expansion)e
 Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)58
-b Ft(17)748 4057 y(3.5.2)93 b(Tilde)28 b(Expansion)17
-b Fm(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+b Ft(17)748 4057 y(3.5.2)93 b(Tilde)30 b(Expansion)17
+b Fm(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47
-b Ft(17)748 4167 y(3.5.3)93 b(Shell)28 b(P)m(arameter)j(Expansion)18
-b Fm(.)c(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+b Ft(17)748 4167 y(3.5.3)93 b(Shell)30 b(P)m(arameter)h(Expansion)18
+b Fm(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)47 b Ft(18)748 4276 y(3.5.4)93 b(Command)29
-b(Substitution)d Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+b(Substitution)f Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Ft(21)748
-4386 y(3.5.5)93 b(Arithmetic)29 b(Expansion)12 b Fm(.)i(.)h(.)g(.)g(.)g
+4386 y(3.5.5)93 b(Arithmetic)31 b(Expansion)12 b Fm(.)j(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)42 b Ft(21)748 4496 y(3.5.6)93 b(Pro)s(cess)30
-b(Substitution)19 b Fm(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49
-b Ft(21)748 4605 y(3.5.7)93 b(W)-8 b(ord)30 b(Splitting)23
-Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+b(Substitution)19 b Fm(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49
+b Ft(21)748 4605 y(3.5.7)93 b(W)-8 b(ord)30 b(Splitting)c
+Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55
-b Ft(22)748 4715 y(3.5.8)93 b(Filename)29 b(Expansion)24
+b Ft(22)748 4715 y(3.5.8)93 b(Filename)31 b(Expansion)25
 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Ft(22)1047
 4824 y(3.5.8.1)93 b(P)m(attern)31 b(Matc)m(hing)20 b
-Fm(.)c(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+Fm(.)d(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)49 b Ft(23)748 4934 y(3.5.9)93 b(Quote)30
-b(Remo)m(v)-5 b(al)15 b Fm(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+b(Remo)m(v)-5 b(al)15 b Fm(.)i(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)44 b Ft(24)449 5044 y(3.6)92 b(Redirections)22
+g(.)g(.)g(.)44 b Ft(24)449 5044 y(3.6)92 b(Redirections)24
 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 b Ft(24)748 5153
-y(3.6.1)93 b(Redirecting)29 b(Input)11 b Fm(.)j(.)h(.)g(.)g(.)g(.)g(.)g
+y(3.6.1)93 b(Redirecting)31 b(Input)11 b Fm(.)j(.)h(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)40 b Ft(25)748 5263 y(3.6.2)93 b(Redirecting)29
+g(.)h(.)f(.)g(.)g(.)40 b Ft(25)748 5263 y(3.6.2)93 b(Redirecting)31
 b(Output)18 b Fm(.)13 b(.)i(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47
-b Ft(25)p eop
+b Ft(25)p eop end
 %%Page: -2 4
--2 3 bop 150 -116 a Ft(ii)2610 b(Bash)31 b(Reference)g(Man)m(ual)748
-83 y(3.6.3)93 b(App)s(ending)27 b(Redirected)j(Output)16
-b Fm(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)45 b Ft(26)748 193 y(3.6.4)93 b(Redirecting)29 b(Standard)g(Output)
-g(and)h(Standard)f(Error)954 302 y Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)54 b Ft(26)748 412 y(3.6.5)93 b(Here)30
-b(Do)s(cumen)m(ts)13 b Fm(.)k(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+TeXDict begin -2 3 bop 150 -116 a Ft(ii)2612 b(Bash)31
+b(Reference)g(Man)m(ual)748 83 y(3.6.3)93 b(App)s(ending)28
+b(Redirected)j(Output)16 b Fm(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45 b Ft(26)748 193 y(3.6.4)93
+b(Redirecting)31 b(Standard)e(Output)g(and)h(Standard)f(Error)954
+302 y Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)43 b Ft(26)748 521 y(3.6.6)93 b(Here)30 b(Strings)10
-b Fm(.)k(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)39 b Ft(26)748 631 y(3.6.7)93 b(Duplicating)28 b(File)i(Descriptors)
-17 b Fm(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)47 b Ft(27)748 741 y(3.6.8)93 b(Mo)m(ving)30
-b(File)g(Descriptors)15 b Fm(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54
+b Ft(26)748 412 y(3.6.5)93 b(Here)30 b(Do)s(cumen)m(ts)13
+b Fm(.)k(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)43
+b Ft(26)748 521 y(3.6.6)93 b(Here)30 b(Strings)10 b Fm(.)15
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)39
+b Ft(26)748 631 y(3.6.7)93 b(Duplicating)31 b(File)h(Descriptors)17
+b Fm(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)47 b Ft(27)748 741 y(3.6.8)93 b(Mo)m(ving)31
+b(File)h(Descriptors)15 b Fm(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)44
-b Ft(27)748 850 y(3.6.9)93 b(Op)s(ening)28 b(File)h(Descriptors)h(for)g
-(Reading)g(and)g(W)-8 b(riting)954 960 y Fm(.)16 b(.)f(.)g(.)g(.)g(.)g
+b Ft(27)748 850 y(3.6.9)93 b(Op)s(ening)29 b(File)i(Descriptors)g(for)f
+(Reading)h(and)f(W)-8 b(riting)954 960 y Fm(.)16 b(.)f(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Ft(27)449 1069 y(3.7)92
-b(Executing)30 b(Commands)25 b Fm(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+b(Executing)31 b(Commands)25 b Fm(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Ft(27)748 1179 y(3.7.1)93
-b(Simple)28 b(Command)h(Expansion)24 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b
-Ft(27)748 1289 y(3.7.2)93 b(Command)29 b(Searc)m(h)i(and)e(Execution)13
-b Fm(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)42
-b Ft(28)748 1398 y(3.7.3)93 b(Command)29 b(Execution)h(En)m(vironmen)m
-(t)18 b Fm(.)c(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47
+b(Simple)30 b(Command)f(Expansion)c Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Ft(27)748
+1289 y(3.7.2)93 b(Command)29 b(Searc)m(h)i(and)e(Execution)13
+b Fm(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)42
+b Ft(28)748 1398 y(3.7.3)93 b(Command)29 b(Execution)i(En)m(vironmen)m
+(t)18 b Fm(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47
 b Ft(29)748 1508 y(3.7.4)93 b(En)m(vironmen)m(t)21 b
-Fm(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-50 b Ft(30)748 1617 y(3.7.5)93 b(Exit)29 b(Status)8 b
+50 b Ft(30)748 1617 y(3.7.5)93 b(Exit)30 b(Status)8 b
 Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)37 b Ft(30)748 1727 y(3.7.6)93 b(Signals)10 b
-Fm(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)39 b Ft(31)449 1836 y(3.8)92 b(Shell)28
-b(Scripts)21 b Fm(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51
+Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)39 b Ft(31)449 1836 y(3.8)92
+b(Shell)30 b(Scripts)21 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51
 b Ft(31)150 2079 y Fr(4)135 b(Shell)45 b(Builtin)g(Commands)38
 b Fn(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h
-(.)f(.)82 b Fr(33)449 2216 y Ft(4.1)92 b(Bourne)30 b(Shell)e(Builtins)
-16 b Fm(.)c(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)f(.)82 b Fr(33)449 2216 y Ft(4.1)92 b(Bourne)30 b(Shell)g(Builtins)
+16 b Fm(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)45 b Ft(33)449 2325 y(4.2)92 b(Bash)30 b(Builtin)e(Commands)17
+g(.)45 b Ft(33)449 2325 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)17
 b Fm(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46
-b Ft(39)449 2435 y(4.3)92 b(The)30 b(Set)g(Builtin)22
+b Ft(39)449 2435 y(4.3)92 b(The)30 b(Set)g(Builtin)25
 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)53 b Ft(50)449 2545 y(4.4)92
-b(Sp)s(ecial)29 b(Builtins)22 b Fm(.)12 b(.)j(.)g(.)g(.)g(.)g(.)g(.)h
+b(Sp)s(ecial)31 b(Builtins)22 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52
 b Ft(53)150 2787 y Fr(5)135 b(Shell)45 b(V)-11 b(ariables)10
 b Fn(.)21 b(.)e(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
 (.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)55 b Fr(55)449
-2924 y Ft(5.1)92 b(Bourne)30 b(Shell)e(V)-8 b(ariables)11
-b Fm(.)k(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
-b Ft(55)449 3034 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)17
-b Fm(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+2924 y Ft(5.1)92 b(Bourne)30 b(Shell)g(V)-8 b(ariables)11
+b Fm(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+40 b Ft(55)449 3034 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)17
+b Fm(.)g(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Ft(55)150 3276 y Fr(6)135
 b(Bash)44 b(F)-11 b(eatures)31 b Fn(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h
 (.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)
-g(.)h(.)75 b Fr(63)449 3413 y Ft(6.1)92 b(In)m(v)m(oking)30
-b(Bash)f Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+g(.)h(.)75 b Fr(63)449 3413 y Ft(6.1)92 b(In)m(v)m(oking)31
+b(Bash)e Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Ft(63)449 3523
-y(6.2)92 b(Bash)30 b(Startup)g(Files)24 b Fm(.)15 b(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55
-b Ft(65)449 3632 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)14
-b Fm(.)f(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+y(6.2)92 b(Bash)30 b(Startup)g(Files)c Fm(.)15 b(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55
+b Ft(65)449 3632 y(6.3)92 b(In)m(teractiv)m(e)33 b(Shells)14
+b Fm(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)g(.)43 b Ft(67)748 3742 y(6.3.1)93 b(What)31
-b(is)e(an)h(In)m(teractiv)m(e)i(Shell?)20 b Fm(.)13 b(.)i(.)g(.)g(.)g
+b(is)f(an)g(In)m(teractiv)m(e)j(Shell?)20 b Fm(.)15 b(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49
-b Ft(67)748 3851 y(6.3.2)93 b(Is)30 b(this)f(Shell)f(In)m(teractiv)m
-(e?)10 b Fm(.)17 b(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+b Ft(67)748 3851 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m
+(e?)10 b Fm(.)18 b(.)d(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Ft(67)748
-3961 y(6.3.3)93 b(In)m(teractiv)m(e)31 b(Shell)e(Beha)m(vior)22
-b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+3961 y(6.3.3)93 b(In)m(teractiv)m(e)32 b(Shell)f(Beha)m(vior)22
+b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)51 b Ft(67)449 4071 y(6.4)92 b(Bash)30
-b(Conditional)e(Expressions)20 b Fm(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g
+b(Conditional)h(Expressions)20 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)49 b Ft(68)449 4180 y(6.5)92 b(Shell)28 b(Arithmetic)f
+f(.)49 b Ft(68)449 4180 y(6.5)92 b(Shell)30 b(Arithmetic)f
 Fm(.)15 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)57 b Ft(70)449 4290 y(6.6)92 b(Aliases)23
+g(.)g(.)h(.)f(.)g(.)57 b Ft(70)449 4290 y(6.6)92 b(Aliases)25
 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53
@@ -2802,169 +4489,169 @@ b Ft(71)449 4399 y(6.7)92 b(Arra)m(ys)29 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Ft(72)449 4509 y(6.8)92
-b(The)30 b(Directory)h(Stac)m(k)15 b Fm(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+b(The)30 b(Directory)i(Stac)m(k)15 b Fm(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 b Ft(73)748
-4619 y(6.8.1)93 b(Directory)30 b(Stac)m(k)i(Builtins)10
-b Fm(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Ft(73)449 4728 y(6.9)92
-b(Con)m(trolling)28 b(the)j(Prompt)15 b Fm(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+4619 y(6.8.1)93 b(Directory)31 b(Stac)m(k)h(Builtins)10
+b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Ft(73)449 4728 y(6.9)92
+b(Con)m(trolling)31 b(the)g(Prompt)15 b Fm(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44 b Ft(74)449 4838 y(6.10)92
-b(The)30 b(Restricted)h(Shell)11 b Fm(.)i(.)i(.)g(.)g(.)g(.)g(.)g(.)g
+b(The)30 b(Restricted)i(Shell)11 b Fm(.)k(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)40 b Ft(76)449 4947
 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)16 b Fm(.)f(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45 b
-Ft(76)p eop
+Ft(76)p eop end
 %%Page: -3 5
--3 4 bop 3674 -116 a Ft(iii)150 83 y Fr(7)135 b(Job)45
-b(Con)l(trol)32 b Fn(.)20 b(.)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(.)
-76 b Fr(79)449 220 y Ft(7.1)92 b(Job)30 b(Con)m(trol)g(Basics)23
-b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)52 b Ft(79)449 330 y(7.2)92 b(Job)30 b(Con)m(trol)g
-(Builtins)12 b Fm(.)g(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)41 b Ft(80)449 439 y(7.3)92 b(Job)30
-b(Con)m(trol)g(V)-8 b(ariables)28 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Ft(81)150 682
-y Fr(8)135 b(Command)45 b(Line)g(Editing)38 b Fn(.)19
-b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)81 b Fr(83)449 819 y Ft(8.1)92 b(In)m(tro)s(duction)29
-b(to)i(Line)e(Editing)22 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+TeXDict begin -3 4 bop 3674 -116 a Ft(iii)150 83 y Fr(7)135
+b(Job)45 b(Con)l(trol)32 b Fn(.)20 b(.)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(.)76 b Fr(79)449 220 y Ft(7.1)92 b(Job)30 b(Con)m(trol)h
+(Basics)23 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)52 b Ft(79)449 330 y(7.2)92 b(Job)30
+b(Con)m(trol)h(Builtins)12 b Fm(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Ft(80)449 439 y(7.3)92
+b(Job)30 b(Con)m(trol)h(V)-8 b(ariables)30 b Fm(.)15
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58
+b Ft(81)150 682 y Fr(8)135 b(Command)45 b(Line)g(Editing)38
+b Fn(.)19 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)81 b Fr(83)449 819 y Ft(8.1)92 b(In)m(tro)s(duction)30
+b(to)h(Line)f(Editing)24 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)53 b Ft(83)449 928 y(8.2)92 b(Readline)29 b(In)m(teraction)15
-b Fm(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+(.)53 b Ft(83)449 928 y(8.2)92 b(Readline)31 b(In)m(teraction)15
+b Fm(.)i(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)44 b Ft(83)748 1038 y(8.2.1)93 b(Readline)29 b(Bare)i(Essen)m
-(tials)23 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)44 b Ft(83)748 1038 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m
+(tials)25 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Ft(83)748
-1147 y(8.2.2)93 b(Readline)29 b(Mo)m(v)m(emen)m(t)j(Commands)13
+1147 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)h(Commands)13
 b Fm(.)h(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-42 b Ft(84)748 1257 y(8.2.3)93 b(Readline)29 b(Killing)e(Commands)20
+42 b Ft(84)748 1257 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)20
 b Fm(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)50 b Ft(84)748 1367 y(8.2.4)93 b(Readline)29
+(.)g(.)g(.)g(.)50 b Ft(84)748 1367 y(8.2.4)93 b(Readline)31
 b(Argumen)m(ts)23 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53
-b Ft(85)748 1476 y(8.2.5)93 b(Searc)m(hing)29 b(for)i(Commands)e(in)g
-(the)h(History)25 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54
-b Ft(85)449 1586 y(8.3)92 b(Readline)29 b(Init)g(File)e
+b Ft(85)748 1476 y(8.2.5)93 b(Searc)m(hing)30 b(for)h(Commands)e(in)h
+(the)g(History)c Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54
+b Ft(85)449 1586 y(8.3)92 b(Readline)31 b(Init)f(File)f
 Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)56 b Ft(86)748 1695 y(8.3.1)93 b(Readline)29
-b(Init)g(File)g(Syn)m(tax)12 b Fm(.)k(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+g(.)g(.)g(.)g(.)56 b Ft(86)748 1695 y(8.3.1)93 b(Readline)31
+b(Init)f(File)h(Syn)m(tax)12 b Fm(.)k(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)41
-b Ft(86)748 1805 y(8.3.2)93 b(Conditional)27 b(Init)j(Constructs)f
+b Ft(86)748 1805 y(8.3.2)93 b(Conditional)30 b(Init)h(Constructs)e
 Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)59 b Ft(91)748 1914 y(8.3.3)93 b(Sample)29
-b(Init)g(File)21 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)51 b Ft(92)449 2024 y(8.4)92 b(Bindable)29 b(Readline)g
-(Commands)12 b Fm(.)i(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)41
-b Ft(95)748 2134 y(8.4.1)93 b(Commands)29 b(F)-8 b(or)31
-b(Mo)m(ving)c Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Ft(95)748
-2243 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)d(The)i
-(History)18 b Fm(.)d(.)g(.)g(.)g(.)g(.)g(.)47 b Ft(95)748
-2353 y(8.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)e(T)-8
-b(ext)30 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)58 b Ft(96)748 2462 y(8.4.4)93 b(Killing)27
-b(And)i(Y)-8 b(anking)17 b Fm(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)46
-b Ft(98)748 2572 y(8.4.5)93 b(Sp)s(ecifying)27 b(Numeric)j(Argumen)m
+(.)g(.)g(.)g(.)59 b Ft(91)748 1914 y(8.3.3)93 b(Sample)30
+b(Init)g(File)21 b Fm(.)c(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)51 b Ft(92)449 2024 y(8.4)92 b(Bindable)31 b(Readline)g(Commands)12
+b Fm(.)i(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)41 b Ft(95)748
+2134 y(8.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)d
+Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Ft(95)748 2243 y(8.4.2)93
+b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f(History)18
+b Fm(.)e(.)f(.)g(.)g(.)g(.)g(.)47 b Ft(95)748 2353 y(8.4.3)93
+b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 b(ext)30
+b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)58 b Ft(96)748 2462 y(8.4.4)93 b(Killing)31 b(And)e(Y)-8
+b(anking)17 b Fm(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)46
+b Ft(98)748 2572 y(8.4.5)93 b(Sp)s(ecifying)29 b(Numeric)i(Argumen)m
 (ts)25 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)54 b Ft(99)748 2682 y(8.4.6)93 b(Letting)30
-b(Readline)f(T)m(yp)s(e)h(F)-8 b(or)31 b(Y)-8 b(ou)19
+(.)g(.)g(.)54 b Ft(99)748 2682 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)19
 b Fm(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 49 b Ft(99)748 2791 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)10
 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
-b Ft(100)748 2901 y(8.4.8)93 b(Some)30 b(Miscellaneous)f(Commands)12
+b Ft(100)748 2901 y(8.4.8)93 b(Some)30 b(Miscellaneous)i(Commands)12
 b Fm(.)i(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42
-b Ft(101)449 3010 y(8.5)92 b(Readline)29 b(vi)g(Mo)s(de)d
+b Ft(101)449 3010 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)c
 Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)55 b Ft(103)449 3120 y(8.6)92 b(Programmable)30
-b(Completion)12 b Fm(.)h(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)55 b Ft(103)449 3120 y(8.6)92 b(Programmable)31
+b(Completion)12 b Fm(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41
-b Ft(103)449 3230 y(8.7)92 b(Programmable)30 b(Completion)f(Builtins)12
-b Fm(.)g(.)j(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+b Ft(103)449 3230 y(8.7)92 b(Programmable)31 b(Completion)g(Builtins)12
+b Fm(.)j(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)42 b Ft(105)150 3472 y Fr(9)135 b(Using)45
 b(History)h(In)l(teractiv)l(ely)14 b Fn(.)22 b(.)d(.)h(.)f(.)g(.)h(.)f
 (.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)58 b Fr(109)449 3609 y
-Ft(9.1)92 b(Bash)30 b(History)g(F)-8 b(acilities)11 b
-Fm(.)k(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41
-b Ft(109)449 3719 y(9.2)92 b(Bash)30 b(History)g(Builtins)9
-b Fm(.)k(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)38
-b Ft(109)449 3828 y(9.3)92 b(History)30 b(Expansion)d
+Ft(9.1)92 b(Bash)30 b(History)h(F)-8 b(acilities)11 b
+Fm(.)19 b(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41
+b Ft(109)449 3719 y(9.2)92 b(Bash)30 b(History)h(Builtins)9
+b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+38 b Ft(109)449 3828 y(9.3)92 b(History)31 b(Expansion)d
 Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)58 b Ft(111)748 3938 y(9.3.1)93 b(Ev)m(en)m(t)31
-b(Designators)21 b Fm(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51
-b Ft(111)748 4047 y(9.3.2)93 b(W)-8 b(ord)30 b(Designators)f
+b(Designators)21 b Fm(.)c(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51
+b Ft(111)748 4047 y(9.3.2)93 b(W)-8 b(ord)30 b(Designators)g
 Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 b Ft(112)748
-4157 y(9.3.3)93 b(Mo)s(di\014ers)26 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
+4157 y(9.3.3)93 b(Mo)s(di\014ers)27 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)57 b Ft(113)150
 4399 y Fr(10)135 b(Installing)46 b(Bash)30 b Fn(.)20
 b(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
 (.)h(.)f(.)g(.)h(.)f(.)h(.)74 b Fr(115)449 4536 y Ft(10.1)92
-b(Basic)31 b(Installation)26 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Ft(115)449
-4646 y(10.2)92 b(Compilers)28 b(and)i(Options)22 b Fm(.)14
-b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+b(Basic)32 b(Installation)d Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57 b Ft(115)449 4646
+y(10.2)92 b(Compilers)30 b(and)g(Options)22 b Fm(.)15
+b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)51
-b Ft(115)449 4755 y(10.3)92 b(Compiling)28 b(F)-8 b(or)31
-b(Multiple)d(Arc)m(hitectures)12 b Fm(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+b Ft(115)449 4755 y(10.3)92 b(Compiling)31 b(F)-8 b(or)31
+b(Multiple)g(Arc)m(hitectures)12 b Fm(.)k(.)f(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)41 b Ft(116)449
-4865 y(10.4)92 b(Installation)29 b(Names)22 b Fm(.)16
+4865 y(10.4)92 b(Installation)32 b(Names)22 b Fm(.)16
 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)51
-b Ft(116)449 4975 y(10.5)92 b(Sp)s(ecifying)28 b(the)j(System)f(T)m(yp)
+b Ft(116)449 4975 y(10.5)92 b(Sp)s(ecifying)30 b(the)h(System)f(T)m(yp)
 s(e)11 b Fm(.)k(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Ft(116)449
-5084 y(10.6)92 b(Sharing)29 b(Defaults)21 b Fm(.)15 b(.)g(.)g(.)g(.)g
+5084 y(10.6)92 b(Sharing)30 b(Defaults)21 b Fm(.)16 b(.)f(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51
-b Ft(117)449 5194 y(10.7)92 b(Op)s(eration)29 b(Con)m(trols)12
-b Fm(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+b Ft(117)449 5194 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)12
+b Fm(.)k(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)41 b Ft(117)449 5303 y(10.8)92 b(Optional)29 b(F)-8
+(.)41 b Ft(117)449 5303 y(10.8)92 b(Optional)31 b(F)-8
 b(eatures)17 b Fm(.)g(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)47 b Ft(117)p eop
+g(.)g(.)g(.)g(.)g(.)47 b Ft(117)p eop end
 %%Page: -4 6
--4 5 bop 150 -116 a Ft(iv)2588 b(Bash)31 b(Reference)g(Man)m(ual)150
-83 y Fr(App)t(endix)44 b(A)99 b(Rep)t(orting)46 b(Bugs)12
-b Fn(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)
-56 b Fr(123)150 353 y(App)t(endix)44 b(B)105 b(Ma)7 b(jor)46
-b(Di\013erences)g(F)-11 b(rom)45 b(The)f(Bourne)419 486
-y(Shell)17 b Fn(.)j(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)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(.)f(.)61 b Fr(125)449 623 y Ft(B.1)92 b(Implemen)m(tation)29
-b(Di\013erences)i(F)-8 b(rom)31 b(The)f(SVR4.2)h(Shell)21
-b Fm(.)13 b(.)i(.)g(.)g(.)50 b Ft(129)150 865 y Fr(App)t(endix)44
-b(C)104 b(Cop)l(ying)46 b(This)e(Man)l(ual)27 b Fn(.)20
-b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)71 b Fr(131)449 1002
-y Ft(C.1)91 b(GNU)31 b(F)-8 b(ree)32 b(Do)s(cumen)m(tation)f(License)26
-b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)56 b Ft(131)748 1112 y(C.1.1)92 b(ADDENDUM:)32
-b(Ho)m(w)f(to)h(use)e(this)f(License)h(for)g(y)m(our)930
-1221 y(do)s(cumen)m(ts)c Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Ft(137)150 1464
-y Fr(Index)45 b(of)g(Shell)g(Builtin)h(Commands)27 b
-Fn(.)19 b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)71
+TeXDict begin -4 5 bop 150 -116 a Ft(iv)2589 b(Bash)31
+b(Reference)g(Man)m(ual)150 83 y Fr(App)t(endix)44 b(A)99
+b(Rep)t(orting)46 b(Bugs)12 b Fn(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)g(.)h(.)f(.)h(.)56 b Fr(123)150 353 y(App)t(endix)44
+b(B)105 b(Ma)7 b(jor)46 b(Di\013erences)g(F)-11 b(rom)45
+b(The)f(Bourne)419 486 y(Shell)17 b Fn(.)j(.)f(.)h(.)f(.)h(.)f(.)g(.)h
+(.)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(.)f(.)61 b Fr(125)449 623
+y Ft(B.1)92 b(Implemen)m(tation)31 b(Di\013erences)h(F)-8
+b(rom)31 b(The)f(SVR4.2)h(Shell)21 b Fm(.)15 b(.)g(.)g(.)g(.)50
+b Ft(129)150 865 y Fr(App)t(endix)44 b(C)104 b(Cop)l(ying)46
+b(This)e(Man)l(ual)27 b Fn(.)20 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)71
+b Fr(131)449 1002 y Ft(C.1)91 b(GNU)31 b(F)-8 b(ree)32
+b(Do)s(cumen)m(tation)g(License)27 b Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)56
+b Ft(131)748 1112 y(C.1.1)92 b(ADDENDUM:)32 b(Ho)m(w)f(to)h(use)e(this)
+g(License)h(for)f(y)m(our)930 1221 y(do)s(cumen)m(ts)c
+Fm(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
+g(.)g(.)g(.)56 b Ft(137)150 1464 y Fr(Index)45 b(of)g(Shell)g(Builtin)h
+(Commands)27 b Fn(.)19 b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)71
 b Fr(139)150 1733 y(Index)45 b(of)g(Shell)g(Reserv)l(ed)h(W)-11
 b(ords)41 b Fn(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h
 (.)85 b Fr(141)150 2003 y(P)l(arameter)47 b(and)d(V)-11
@@ -2974,582 +4661,583 @@ b(Index)36 b Fn(.)19 b(.)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(.)80
 b Fr(145)150 2543 y(Concept)45 b(Index)18 b Fn(.)i(.)f(.)h(.)f(.)g(.)h
 (.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)
-h(.)f(.)g(.)h(.)f(.)h(.)62 b Fr(147)p eop
+h(.)f(.)g(.)h(.)f(.)h(.)62 b Fr(147)p eop end
 %%Page: 1 7
-1 6 bop 150 -116 a Ft(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2591
-b(1)150 299 y Fo(1)80 b(In)l(tro)t(duction)150 675 y
-Fr(1.1)68 b(What)45 b(is)g(Bash?)275 923 y Ft(Bash)29
-b(is)g(the)g(shell,)g(or)g(command)g(language)h(in)m(terpreter,)g(for)f
-(the)h Fl(gnu)f Ft(op)s(erating)g(system.)40 b(The)150
-1033 y(name)33 b(is)f(an)h(acron)m(ym)g(for)g(the)g(`)p
+TeXDict begin 1 6 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(In)m(tro)s(duction)2592 b(1)150 299 y Fo(1)80 b(In)l(tro)t(duction)
+150 675 y Fr(1.1)68 b(What)45 b(is)g(Bash?)275 923 y
+Ft(Bash)29 b(is)h(the)f(shell,)i(or)e(command)g(language)i(in)m
+(terpreter,)g(for)e(the)h Fl(gnu)f Ft(op)s(erating)h(system.)40
+b(The)150 1033 y(name)33 b(is)g(an)g(acron)m(ym)g(for)g(the)g(`)p
 Fs(Bourne-Again)27 b(SHell)p Ft(',)32 b(a)i(pun)d(on)i(Stephen)f
-(Bourne,)h(the)g(author)150 1142 y(of)f(the)f(direct)g(ancestor)i(of)e
-(the)h(curren)m(t)f(Unix)f(shell)g Fs(sh)p Ft(,)h(whic)m(h)f(app)s
-(eared)h(in)f(the)i(Sev)m(en)m(th)g(Edition)150 1252
-y(Bell)e(Labs)g(Researc)m(h)h(v)m(ersion)f(of)g(Unix.)275
-1391 y(Bash)f(is)f(largely)h(compatible)f(with)g Fs(sh)h
-Ft(and)g(incorp)s(orates)f(useful)g(features)h(from)g(the)g(Korn)g
-(shell)150 1500 y Fs(ksh)37 b Ft(and)h(the)g(C)g(shell)e
-Fs(csh)p Ft(.)64 b(It)38 b(is)f(in)m(tended)g(to)i(b)s(e)f(a)g
-(conforman)m(t)h(implemen)m(tation)e(of)h(the)g Fl(ieee)150
-1610 y(posix)44 b Ft(Shell)f(and)i(T)-8 b(o)s(ols)45
-b(sp)s(eci\014cation)e(\()p Fl(ieee)i Ft(W)-8 b(orking)46
-b(Group)e(1003.2\).)88 b(It)45 b(o\013ers)h(functional)150
-1719 y(impro)m(v)m(emen)m(ts)31 b(o)m(v)m(er)g Fs(sh)f
-Ft(for)g(b)s(oth)g(in)m(teractiv)m(e)h(and)f(programming)f(use.)275
-1858 y(While)g(the)i Fl(gnu)f Ft(op)s(erating)g(system)h(pro)m(vides)e
-(other)i(shells,)e(including)e(a)k(v)m(ersion)f(of)h
-Fs(csh)p Ft(,)f(Bash)150 1968 y(is)i(the)i(default)e(shell.)47
-b(Lik)m(e)33 b(other)h Fl(gnu)f Ft(soft)m(w)m(are,)i(Bash)f(is)e(quite)
-h(p)s(ortable.)48 b(It)33 b(curren)m(tly)f(runs)g(on)150
-2077 y(nearly)27 b(ev)m(ery)h(v)m(ersion)f(of)g(Unix)g(and)f(a)i(few)f
-(other)h(op)s(erating)f(systems)g Fp(\000)g Ft(indep)s(enden)m
-(tly-supp)s(orted)150 2187 y(p)s(orts)j(exist)g(for)g
-Fl(ms-dos)p Ft(,)f Fl(os/2)p Ft(,)i(and)f(Windo)m(ws)f(platforms.)150
+(Bourne,)h(the)g(author)150 1142 y(of)f(the)f(direct)h(ancestor)h(of)e
+(the)h(curren)m(t)f(Unix)g(shell)h Fs(sh)p Ft(,)f(whic)m(h)g(app)s
+(eared)g(in)g(the)h(Sev)m(en)m(th)g(Edition)150 1252
+y(Bell)g(Labs)e(Researc)m(h)h(v)m(ersion)g(of)f(Unix.)275
+1391 y(Bash)f(is)g(largely)i(compatible)f(with)f Fs(sh)g
+Ft(and)g(incorp)s(orates)g(useful)g(features)g(from)g(the)g(Korn)g
+(shell)150 1500 y Fs(ksh)37 b Ft(and)h(the)g(C)g(shell)g
+Fs(csh)p Ft(.)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 Fl(ieee)150
+1610 y(posix)44 b Ft(Shell)h(and)g(T)-8 b(o)s(ols)46
+b(sp)s(eci\014cation)f(\()p Fl(ieee)g Ft(W)-8 b(orking)47
+b(Group)d(1003.2\).)88 b(It)45 b(o\013ers)h(functional)150
+1719 y(impro)m(v)m(emen)m(ts)32 b(o)m(v)m(er)f Fs(sh)f
+Ft(for)g(b)s(oth)g(in)m(teractiv)m(e)j(and)d(programming)g(use.)275
+1858 y(While)h(the)g Fl(gnu)f Ft(op)s(erating)h(system)g(pro)m(vides)f
+(other)h(shells,)g(including)f(a)h(v)m(ersion)g(of)g
+Fs(csh)p Ft(,)f(Bash)150 1968 y(is)j(the)h(default)f(shell.)49
+b(Lik)m(e)34 b(other)g Fl(gnu)f Ft(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
+2077 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 Fp(\000)g Ft(indep)s(enden)m
+(tly-supp)s(orted)150 2187 y(p)s(orts)j(exist)h(for)f
+Fl(ms-dos)p Ft(,)f Fl(os/2)p Ft(,)i(and)f(Windo)m(ws)g(platforms.)150
 2455 y Fr(1.2)68 b(What)45 b(is)g(a)h(shell?)275 2703
-y Ft(A)m(t)41 b(its)e(base,)k(a)e(shell)d(is)h(simply)f(a)j(macro)f
+y Ft(A)m(t)41 b(its)f(base,)j(a)e(shell)f(is)g(simply)g(a)h(macro)f
 (pro)s(cessor)g(that)h(executes)g(commands.)70 b(The)40
-b(term)150 2813 y(macro)29 b(pro)s(cessor)f(means)g(functionalit)m(y)f
-(where)h(text)i(and)e(sym)m(b)s(ols)f(are)h(expanded)g(to)h(create)h
-(larger)150 2922 y(expressions.)275 3061 y(A)k(Unix)g(shell)f(is)g(b)s
-(oth)h(a)h(command)g(in)m(terpreter)f(and)g(a)h(programming)e
-(language.)54 b(As)35 b(a)g(com-)150 3170 y(mand)30 b(in)m(terpreter,)h
-(the)h(shell)d(pro)m(vides)h(the)i(user)e(in)m(terface)i(to)g(the)f
-(ric)m(h)g(set)h(of)f Fl(gnu)g Ft(utilities.)40 b(The)150
-3280 y(programming)25 b(language)i(features)g(allo)m(w)f(these)h
-(utilitites)d(to)j(b)s(e)f(com)m(bined.)39 b(Files)25
-b(con)m(taining)h(com-)150 3390 y(mands)j(can)i(b)s(e)e(created,)j(and)
-d(b)s(ecome)i(commands)f(themselv)m(es.)41 b(These)30
+b(term)150 2813 y(macro)29 b(pro)s(cessor)f(means)g(functionalit)m(y)i
+(where)e(text)i(and)e(sym)m(b)s(ols)g(are)g(expanded)g(to)h(create)h
+(larger)150 2922 y(expressions.)275 3061 y(A)k(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 3170 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 Fl(gnu)g Ft(utilities.)44 b(The)150
+3280 y(programming)26 b(language)i(features)f(allo)m(w)h(these)f
+(utilitites)h(to)f(b)s(e)f(com)m(bined.)40 b(Files)27
+b(con)m(taining)h(com-)150 3390 y(mands)h(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 3499 y(same)f(status)h(as)f
-(system)g(commands)g(in)f(directories)g(suc)m(h)h(as)g(`)p
-Fs(/bin)p Ft(',)g(allo)m(wing)f(users)g(or)h(groups)f(to)150
-3609 y(establish)f(custom)h(en)m(vironmen)m(ts)g(to)h(automate)h(their)
-e(common)g(tasks.)275 3748 y(Shells)h(ma)m(y)j(b)s(e)f(used)g(in)m
-(teractiv)m(ely)h(or)g(non-in)m(teractiv)m(ely)-8 b(.)51
-b(In)33 b(in)m(teractiv)m(e)h(mo)s(de,)h(they)e(accept)150
-3857 y(input)20 b(t)m(yp)s(ed)i(from)g(the)h(k)m(eyb)s(oard.)37
-b(When)22 b(executing)h(non-in)m(teractiv)m(ely)-8 b(,)24
-b(shells)d(execute)i(commands)150 3967 y(read)30 b(from)g(a)h(\014le.)
-275 4105 y(A)41 b(shell)e(allo)m(ws)h(execution)i(of)f
-Fl(gnu)g Ft(commands,)i(b)s(oth)e(sync)m(hronously)e(and)i(async)m
-(hronously)-8 b(.)150 4215 y(The)29 b(shell)e(w)m(aits)j(for)f(sync)m
-(hronous)f(commands)h(to)h(complete)g(b)s(efore)f(accepting)g(more)h
-(input;)e(asyn-)150 4325 y(c)m(hronous)22 b(commands)h(con)m(tin)m(ue)g
-(to)g(execute)h(in)d(parallel)g(with)h(the)g(shell)f(while)g(it)h
-(reads)h(and)f(executes)150 4434 y(additional)32 b(commands.)50
-b(The)33 b Fq(redirection)f Ft(constructs)i(p)s(ermit)e(\014ne-grained)
-g(con)m(trol)i(of)g(the)g(input)150 4544 y(and)40 b(output)f(of)i
-(those)f(commands.)70 b(Moreo)m(v)m(er,)45 b(the)c(shell)d(allo)m(ws)h
-(con)m(trol)i(o)m(v)m(er)h(the)e(con)m(ten)m(ts)i(of)150
-4653 y(commands')30 b(en)m(vironmen)m(ts.)275 4792 y(Shells)i(also)j
-(pro)m(vide)g(a)g(small)f(set)h(of)g(built-in)d(commands)j(\()p
-Fq(builtins)t Ft(\))d(implemen)m(ting)h(function-)150
-4902 y(alit)m(y)j(imp)s(ossible)d(or)j(incon)m(v)m(enien)m(t)h(to)g
-(obtain)f(via)g(separate)h(utilities.)57 b(F)-8 b(or)37
-b(example,)h Fs(cd)p Ft(,)f Fs(break)p Ft(,)150 5011
+(system)g(commands)g(in)g(directories)h(suc)m(h)f(as)g(`)p
+Fs(/bin)p Ft(',)g(allo)m(wing)i(users)d(or)h(groups)f(to)150
+3609 y(establish)h(custom)f(en)m(vironmen)m(ts)h(to)g(automate)h(their)
+f(common)f(tasks.)275 3748 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
+3857 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 3967 y(read)30 b(from)g(a)h(\014le.)
+275 4105 y(A)41 b(shell)g(allo)m(ws)h(execution)h(of)e
+Fl(gnu)g Ft(commands,)i(b)s(oth)e(sync)m(hronously)f(and)h(async)m
+(hronously)-8 b(.)150 4215 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)h(more)g
+(input;)f(asyn-)150 4325 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 4434 y(additional)35 b(commands.)50
+b(The)33 b Fq(redirection)h Ft(constructs)g(p)s(ermit)f(\014ne-grained)
+g(con)m(trol)i(of)f(the)g(input)150 4544 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
+4653 y(commands')30 b(en)m(vironmen)m(ts.)275 4792 y(Shells)k(also)i
+(pro)m(vide)g(a)f(small)h(set)f(of)g(built-in)g(commands)g(\()p
+Fq(builtins)t Ft(\))g(implemen)m(ting)h(function-)150
+4902 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 Fs(cd)p Ft(,)e Fs(break)p Ft(,)150 5011
 y Fs(continue)p Ft(,)43 b(and)f Fs(exec)p Ft(\))g(cannot)h(b)s(e)e
-(implemen)m(ted)g(outside)h(of)g(the)h(shell)d(b)s(ecause)j(they)f
-(directly)150 5121 y(manipulate)35 b(the)i(shell)d(itself.)59
+(implemen)m(ted)i(outside)g(of)f(the)h(shell)f(b)s(ecause)h(they)f
+(directly)150 5121 y(manipulate)37 b(the)g(shell)f(itself.)61
 b(The)36 b Fs(history)p Ft(,)g Fs(getopts)p Ft(,)g Fs(kill)p
-Ft(,)h(or)g Fs(pwd)f Ft(builtins,)e(among)k(others,)150
-5230 y(could)32 b(b)s(e)g(implemen)m(ted)f(in)h(separate)h(utilities,)e
-(but)h(they)h(are)h(more)f(con)m(v)m(enien)m(t)g(to)h(use)e(as)h
-(builtin)150 5340 y(commands.)40 b(All)29 b(of)i(the)f(shell)f
-(builtins)e(are)k(describ)s(ed)d(in)h(subsequen)m(t)h(sections.)p
-eop
+Ft(,)h(or)g Fs(pwd)f Ft(builtins,)h(among)h(others,)150
+5230 y(could)33 b(b)s(e)f(implemen)m(ted)h(in)g(separate)g(utilities,)i
+(but)d(they)h(are)h(more)f(con)m(v)m(enien)m(t)h(to)g(use)e(as)h
+(builtin)150 5340 y(commands.)40 b(All)31 b(of)g(the)f(shell)h
+(builtins)f(are)h(describ)s(ed)e(in)h(subsequen)m(t)g(sections.)p
+eop end
 %%Page: 2 8
-2 7 bop 150 -116 a Ft(2)2617 b(Bash)31 b(Reference)g(Man)m(ual)275
-299 y(While)37 b(executing)i(commands)f(is)f(essen)m(tial,)k(most)e(of)
-g(the)g(p)s(o)m(w)m(er)f(\(and)g(complexit)m(y\))h(of)g(shells)150
-408 y(is)33 b(due)g(to)i(their)e(em)m(b)s(edded)g(programming)g
-(languages.)51 b(Lik)m(e)34 b(an)m(y)g(high-lev)m(el)f(language,)j(the)
-e(shell)150 518 y(pro)m(vides)29 b(v)-5 b(ariables,)30
-b(\015o)m(w)g(con)m(trol)h(constructs,)g(quoting,)f(and)g(functions.)
-275 653 y(Shells)19 b(o\013er)k(features)f(geared)h(sp)s(eci\014cally)d
-(for)i(in)m(teractiv)m(e)h(use)f(rather)g(than)g(to)h(augmen)m(t)g(the)
-f(pro-)150 762 y(gramming)31 b(language.)47 b(These)32
-b(in)m(teractiv)m(e)h(features)f(include)e(job)i(con)m(trol,)i(command)
-d(line)g(editing,)150 872 y(command)f(history)f(and)h(aliases.)40
-b(Eac)m(h)31 b(of)g(these)g(features)f(is)g(describ)s(ed)e(in)h(this)g
-(man)m(ual.)p eop
+TeXDict begin 2 7 bop 150 -116 a Ft(2)2617 b(Bash)31
+b(Reference)g(Man)m(ual)275 299 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(shells)150 408 y(is)34 b(due)f(to)i(their)f(em)
+m(b)s(edded)f(programming)h(languages.)52 b(Lik)m(e)35
+b(an)m(y)f(high-lev)m(el)i(language,)h(the)d(shell)150
+518 y(pro)m(vides)c(v)-5 b(ariables,)32 b(\015o)m(w)e(con)m(trol)i
+(constructs,)f(quoting,)g(and)f(functions.)275 653 y(Shells)21
+b(o\013er)i(features)f(geared)h(sp)s(eci\014cally)g(for)f(in)m
+(teractiv)m(e)j(use)d(rather)g(than)g(to)h(augmen)m(t)g(the)f(pro-)150
+762 y(gramming)32 b(language.)48 b(These)32 b(in)m(teractiv)m(e)j
+(features)d(include)g(job)g(con)m(trol,)j(command)c(line)i(editing,)150
+872 y(command)d(history)g(and)g(aliases.)42 b(Eac)m(h)31
+b(of)g(these)g(features)f(is)h(describ)s(ed)e(in)h(this)g(man)m(ual.)p
+eop end
 %%Page: 3 9
-3 8 bop 150 -116 a Ft(Chapter)30 b(2:)41 b(De\014nitions)2660
-b(3)150 299 y Fo(2)80 b(De\014nitions)275 527 y Ft(These)30
-b(de\014nitions)e(are)i(used)g(throughout)g(the)g(remainder)f(of)i
-(this)e(man)m(ual.)150 684 y Fs(POSIX)240 b Ft(A)41 b(family)e(of)i(op)
-s(en)g(system)g(standards)f(based)g(on)h(Unix.)71 b(Bash)41
-b(is)f(concerned)h(with)630 794 y Fl(posix)30 b Ft(1003.2,)j(the)d
-(Shell)f(and)g(T)-8 b(o)s(ols)30 b(Standard.)150 950
-y Fs(blank)240 b Ft(A)30 b(space)h(or)g(tab)f(c)m(haracter.)150
-1107 y Fs(builtin)144 b Ft(A)35 b(command)g(that)g(is)f(implemen)m(ted)
-f(in)m(ternally)g(b)m(y)i(the)g(shell)e(itself,)i(rather)f(than)h(b)m
-(y)630 1217 y(an)30 b(executable)h(program)f(somewhere)h(in)e(the)h
-(\014le)g(system.)150 1374 y Fs(control)e(operator)630
-1484 y Ft(A)c Fs(word)e Ft(that)i(p)s(erforms)f(a)h(con)m(trol)g
-(function.)37 b(It)24 b(is)e(a)i Fs(newline)e Ft(or)i(one)g(of)f(the)h
-(follo)m(wing:)630 1593 y(`)p Fs(||)p Ft(',)31 b(`)p
-Fs(&&)p Ft(',)f(`)p Fs(&)p Ft(',)h(`)p Fs(;)p Ft(',)g(`)p
-Fs(;;)p Ft(',)f(`)p Fs(|)p Ft(',)h(`)p Fs(\()p Ft(',)g(or)f(`)p
-Fs(\))p Ft('.)150 1750 y Fs(exit)f(status)630 1860 y
-Ft(The)f(v)-5 b(alue)28 b(returned)f(b)m(y)h(a)h(command)f(to)h(its)f
-(caller.)39 b(The)28 b(v)-5 b(alue)28 b(is)f(restricted)h(to)i(eigh)m
-(t)630 1969 y(bits,)g(so)g(the)h(maxim)m(um)e(v)-5 b(alue)30
-b(is)f(255.)150 2126 y Fs(field)240 b Ft(A)27 b(unit)f(of)h(text)h
-(that)g(is)e(the)h(result)f(of)h(one)h(of)f(the)g(shell)e(expansions.)
-39 b(After)27 b(expansion,)630 2236 y(when)e(executing)g(a)h(command,)h
-(the)f(resulting)d(\014elds)h(are)i(used)f(as)h(the)g(command)f(name)
-630 2346 y(and)30 b(argumen)m(ts.)150 2503 y Fs(filename)96
-b Ft(A)30 b(string)g(of)g(c)m(haracters)i(used)e(to)h(iden)m(tify)e(a)h
-(\014le.)150 2659 y Fs(job)336 b Ft(A)31 b(set)h(of)f(pro)s(cesses)g
-(comprising)e(a)i(pip)s(eline,)d(and)j(an)m(y)g(pro)s(cesses)g
-(descended)g(from)f(it,)630 2769 y(that)h(are)g(all)e(in)g(the)i(same)f
-(pro)s(cess)g(group.)150 2926 y Fs(job)f(control)630
-3036 y Ft(A)22 b(mec)m(hanism)f(b)m(y)g(whic)m(h)g(users)g(can)h
-(selectiv)m(ely)f(stop)h(\(susp)s(end\))e(and)h(restart)i(\(resume\))
-630 3145 y(execution)31 b(of)f(pro)s(cesses.)150 3302
-y Fs(metacharacter)630 3412 y Ft(A)25 b(c)m(haracter)i(that,)g(when)d
-(unquoted,)i(separates)g(w)m(ords.)38 b(A)26 b(metac)m(haracter)i(is)c
-(a)h Fs(blank)630 3521 y Ft(or)30 b(one)h(of)g(the)f(follo)m(wing)f(c)m
-(haracters:)42 b(`)p Fs(|)p Ft(',)31 b(`)p Fs(&)p Ft(',)g(`)p
-Fs(;)p Ft(',)g(`)p Fs(\()p Ft(',)f(`)p Fs(\))p Ft(',)h(`)p
-Fs(<)p Ft(',)g(or)f(`)p Fs(>)p Ft('.)150 3678 y Fs(name)288
-b Ft(A)37 b Fs(word)f Ft(consisting)g(solely)h(of)g(letters,)i(n)m(um)m
-(b)s(ers,)f(and)f(underscores,)h(and)f(b)s(eginning)630
-3788 y(with)22 b(a)h(letter)g(or)g(underscore.)38 b Fs(Name)p
-Ft(s)22 b(are)h(used)f(as)i(shell)d(v)-5 b(ariable)22
-b(and)g(function)g(names.)630 3898 y(Also)30 b(referred)g(to)h(as)f(an)
-h Fs(identifier)p Ft(.)150 4055 y Fs(operator)96 b Ft(A)38
-b Fs(control)28 b(operator)36 b Ft(or)h(a)i Fs(redirection)27
-b(operator)p Ft(.)61 b(See)38 b(Section)f(3.6)i([Redirec-)630
-4164 y(tions],)30 b(page)h(24,)h(for)e(a)h(list)e(of)h(redirection)f
-(op)s(erators.)150 4321 y Fs(process)f(group)630 4431
-y Ft(A)i(collection)h(of)f(related)g(pro)s(cesses)h(eac)m(h)g(ha)m
-(ving)f(the)h(same)f(pro)s(cess)g(group)g Fl(id)p Ft(.)150
-4588 y Fs(process)e(group)h(ID)630 4697 y Ft(A)h(unique)f(iden)m(tifer)
-g(that)i(represen)m(ts)f(a)h Fs(process)d(group)h Ft(during)f(its)i
-(lifetime.)150 4854 y Fs(reserved)e(word)630 4964 y Ft(A)h
-Fs(word)e Ft(that)i(has)f(a)h(sp)s(ecial)e(meaning)g(to)i(the)g(shell.)
-38 b(Most)30 b(reserv)m(ed)e(w)m(ords)g(in)m(tro)s(duce)630
-5073 y(shell)h(\015o)m(w)h(con)m(trol)h(constructs,)g(suc)m(h)f(as)g
+TeXDict begin 3 8 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(De\014nitions)2662 b(3)150 299 y Fo(2)80 b(De\014nitions)275
+527 y Ft(These)30 b(de\014nitions)g(are)g(used)g(throughout)g(the)g
+(remainder)g(of)h(this)f(man)m(ual.)150 684 y Fs(POSIX)240
+b Ft(A)41 b(family)g(of)g(op)s(en)g(system)g(standards)f(based)g(on)h
+(Unix.)72 b(Bash)41 b(is)g(concerned)g(with)630 794 y
+Fl(posix)30 b Ft(1003.2,)j(the)d(Shell)h(and)e(T)-8 b(o)s(ols)31
+b(Standard.)150 950 y Fs(blank)240 b Ft(A)30 b(space)h(or)g(tab)f(c)m
+(haracter.)150 1107 y Fs(builtin)144 b Ft(A)35 b(command)g(that)g(is)g
+(implemen)m(ted)g(in)m(ternally)h(b)m(y)f(the)g(shell)g(itself,)i
+(rather)d(than)h(b)m(y)630 1217 y(an)30 b(executable)i(program)e
+(somewhere)h(in)f(the)g(\014le)h(system.)150 1374 y Fs(control)d
+(operator)630 1484 y Ft(A)c Fs(word)e Ft(that)i(p)s(erforms)f(a)h(con)m
+(trol)h(function.)38 b(It)24 b(is)f(a)h Fs(newline)e
+Ft(or)i(one)g(of)f(the)h(follo)m(wing:)630 1593 y(`)p
+Fs(||)p Ft(',)31 b(`)p Fs(&&)p Ft(',)f(`)p Fs(&)p Ft(',)h(`)p
+Fs(;)p Ft(',)g(`)p Fs(;;)p Ft(',)f(`)p Fs(|)p Ft(',)h(`)p
+Fs(\()p Ft(',)g(or)f(`)p Fs(\))p Ft('.)150 1750 y Fs(exit)f(status)630
+1860 y Ft(The)f(v)-5 b(alue)29 b(returned)e(b)m(y)h(a)h(command)f(to)h
+(its)g(caller.)41 b(The)28 b(v)-5 b(alue)29 b(is)f(restricted)h(to)h
+(eigh)m(t)630 1969 y(bits,)h(so)f(the)h(maxim)m(um)f(v)-5
+b(alue)31 b(is)f(255.)150 2126 y Fs(field)240 b Ft(A)27
+b(unit)g(of)g(text)h(that)g(is)f(the)g(result)g(of)g(one)h(of)f(the)g
+(shell)g(expansions.)40 b(After)27 b(expansion,)630 2236
+y(when)e(executing)h(a)g(command,)h(the)f(resulting)f(\014elds)g(are)h
+(used)f(as)h(the)g(command)f(name)630 2346 y(and)30 b(argumen)m(ts.)150
+2503 y Fs(filename)96 b Ft(A)30 b(string)h(of)f(c)m(haracters)i(used)e
+(to)h(iden)m(tify)g(a)f(\014le.)150 2659 y Fs(job)336
+b Ft(A)31 b(set)h(of)f(pro)s(cesses)g(comprising)g(a)g(pip)s(eline,)g
+(and)g(an)m(y)g(pro)s(cesses)g(descended)g(from)f(it,)630
+2769 y(that)h(are)g(all)g(in)f(the)h(same)f(pro)s(cess)g(group.)150
+2926 y Fs(job)f(control)630 3036 y Ft(A)22 b(mec)m(hanism)g(b)m(y)f
+(whic)m(h)h(users)f(can)h(selectiv)m(ely)i(stop)e(\(susp)s(end\))e(and)
+h(restart)i(\(resume\))630 3145 y(execution)32 b(of)e(pro)s(cesses.)150
+3302 y Fs(metacharacter)630 3412 y Ft(A)25 b(c)m(haracter)i(that,)g
+(when)d(unquoted,)i(separates)g(w)m(ords.)38 b(A)26 b(metac)m(haracter)
+i(is)d(a)g Fs(blank)630 3521 y Ft(or)30 b(one)h(of)g(the)f(follo)m
+(wing)i(c)m(haracters:)42 b(`)p Fs(|)p Ft(',)31 b(`)p
+Fs(&)p Ft(',)g(`)p Fs(;)p Ft(',)g(`)p Fs(\()p Ft(',)f(`)p
+Fs(\))p Ft(',)h(`)p Fs(<)p Ft(',)g(or)f(`)p Fs(>)p Ft('.)150
+3678 y Fs(name)288 b Ft(A)37 b Fs(word)f Ft(consisting)i(solely)h(of)e
+(letters,)j(n)m(um)m(b)s(ers,)e(and)f(underscores,)h(and)f(b)s
+(eginning)630 3788 y(with)23 b(a)g(letter)h(or)f(underscore.)38
+b Fs(Name)p Ft(s)22 b(are)h(used)f(as)i(shell)f(v)-5
+b(ariable)24 b(and)e(function)h(names.)630 3898 y(Also)31
+b(referred)f(to)h(as)f(an)h Fs(identifier)p Ft(.)150
+4055 y Fs(operator)96 b Ft(A)38 b Fs(control)28 b(operator)36
+b Ft(or)h(a)i Fs(redirection)27 b(operator)p Ft(.)61
+b(See)38 b(Section)g(3.6)h([Redirec-)630 4164 y(tions],)31
+b(page)g(24,)h(for)e(a)h(list)g(of)f(redirection)h(op)s(erators.)150
+4321 y Fs(process)d(group)630 4431 y Ft(A)i(collection)k(of)c(related)h
+(pro)s(cesses)g(eac)m(h)g(ha)m(ving)g(the)g(same)f(pro)s(cess)g(group)g
+Fl(id)p Ft(.)150 4588 y Fs(process)e(group)h(ID)630 4697
+y Ft(A)h(unique)g(iden)m(tifer)h(that)g(represen)m(ts)f(a)h
+Fs(process)d(group)h Ft(during)g(its)i(lifetime.)150
+4854 y Fs(reserved)d(word)630 4964 y Ft(A)h Fs(word)e
+Ft(that)i(has)f(a)h(sp)s(ecial)g(meaning)f(to)h(the)g(shell.)40
+b(Most)30 b(reserv)m(ed)e(w)m(ords)g(in)m(tro)s(duce)630
+5073 y(shell)j(\015o)m(w)f(con)m(trol)i(constructs,)f(suc)m(h)f(as)g
 Fs(for)g Ft(and)g Fs(while)p Ft(.)150 5230 y Fs(return)f(status)630
 5340 y Ft(A)h(synon)m(ym)g(for)g Fs(exit)g(status)p Ft(.)p
-eop
+eop end
 %%Page: 4 10
-4 9 bop 150 -116 a Ft(4)2617 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fs(signal)192 b Ft(A)40 b(mec)m(hanism)g(b)m(y)f(whic)m(h)g(a)i
-(pro)s(cess)e(ma)m(y)i(b)s(e)e(noti\014ed)g(b)m(y)h(the)h(k)m(ernel)e
-(of)h(an)g(ev)m(en)m(t)630 408 y(o)s(ccurring)29 b(in)g(the)i(system.)
-150 568 y Fs(special)d(builtin)630 677 y Ft(A)e(shell)f(builtin)e
-(command)j(that)h(has)f(b)s(een)f(classi\014ed)g(as)h(sp)s(ecial)f(b)m
-(y)h(the)h Fl(posix)e Ft(1003.2)630 787 y(standard.)150
-946 y Fs(token)240 b Ft(A)38 b(sequence)h(of)f(c)m(haracters)h
-(considered)e(a)i(single)e(unit)f(b)m(y)i(the)h(shell.)62
-b(It)38 b(is)f(either)h(a)630 1056 y Fs(word)29 b Ft(or)i(an)f
-Fs(operator)p Ft(.)150 1215 y Fs(word)288 b Ft(A)30 b
-Fs(token)f Ft(that)i(is)f(not)g(an)h Fs(operator)p Ft(.)p
-eop
+TeXDict begin 4 9 bop 150 -116 a Ft(4)2617 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(signal)192 b Ft(A)40
+b(mec)m(hanism)h(b)m(y)e(whic)m(h)h(a)h(pro)s(cess)e(ma)m(y)i(b)s(e)e
+(noti\014ed)h(b)m(y)g(the)h(k)m(ernel)f(of)g(an)g(ev)m(en)m(t)630
+408 y(o)s(ccurring)30 b(in)g(the)h(system.)150 568 y
+Fs(special)d(builtin)630 677 y Ft(A)e(shell)h(builtin)f(command)g(that)
+h(has)f(b)s(een)f(classi\014ed)i(as)f(sp)s(ecial)h(b)m(y)f(the)h
+Fl(posix)e Ft(1003.2)630 787 y(standard.)150 946 y Fs(token)240
+b Ft(A)38 b(sequence)h(of)f(c)m(haracters)h(considered)f(a)h(single)g
+(unit)e(b)m(y)h(the)h(shell.)64 b(It)38 b(is)g(either)h(a)630
+1056 y Fs(word)29 b Ft(or)i(an)f Fs(operator)p Ft(.)150
+1215 y Fs(word)288 b Ft(A)30 b Fs(token)f Ft(that)i(is)g(not)f(an)h
+Fs(operator)p Ft(.)p eop end
 %%Page: 5 11
-5 10 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2292 b(5)150 299 y Fo(3)80 b(Basic)55
-b(Shell)f(F)-13 b(eatures)275 544 y Ft(Bash)27 b(is)f(an)h(acron)m(ym)h
-(for)f(`)p Fs(Bourne-Again)g(SHell)p Ft('.)39 b(The)26
-b(Bourne)h(shell)f(is)g(the)h(traditional)f(Unix)150
-653 y(shell)32 b(originally)f(written)h(b)m(y)h(Stephen)g(Bourne.)50
-b(All)32 b(of)i(the)f(Bourne)h(shell)d(builtin)f(commands)k(are)150
-763 y(a)m(v)-5 b(ailable)29 b(in)e(Bash,)j(The)f(rules)f(for)h(ev)-5
-b(aluation)29 b(and)f(quoting)h(are)g(tak)m(en)i(from)d(the)i
-Fl(posix)e Ft(sp)s(eci\014ca-)150 872 y(tion)i(for)g(the)h(`standard')f
-(Unix)f(shell.)275 1010 y(This)h(c)m(hapter)j(brie\015y)d(summarizes)h
-(the)i(shell's)d(`building)f(blo)s(c)m(ks':)44 b(commands,)32
-b(con)m(trol)h(struc-)150 1120 y(tures,)38 b(shell)c(functions,)i
-(shell)f Fm(p)-5 b(ar)g(ameters)p Ft(,)41 b(shell)34
-b(expansions,)j Fm(r)-5 b(e)g(dir)g(e)g(ctions)p Ft(,)40
-b(whic)m(h)35 b(are)i(a)f(w)m(a)m(y)h(to)150 1230 y(direct)30
-b(input)e(and)i(output)g(from)g(and)g(to)h(named)f(\014les,)f(and)h(ho)
-m(w)g(the)h(shell)e(executes)i(commands.)150 1496 y Fr(3.1)68
-b(Shell)45 b(Syn)l(tax)275 1744 y Ft(When)32 b(the)h(shell)e(reads)i
-(input,)f(it)g(pro)s(ceeds)g(through)h(a)g(sequence)g(of)g(op)s
-(erations.)47 b(If)33 b(the)g(input)150 1853 y(indicates)c(the)h(b)s
-(eginning)d(of)j(a)g(commen)m(t,)h(the)f(shell)e(ignores)h(the)h
-(commen)m(t)h(sym)m(b)s(ol)e(\(`)p Fs(#)p Ft('\),)i(and)e(the)150
-1963 y(rest)i(of)f(that)h(line.)275 2101 y(Otherwise,)g(roughly)f(sp)s
-(eaking,)i(the)g(shell)e(reads)i(its)f(input)f(and)i(divides)d(the)k
-(input)d(in)m(to)h(w)m(ords)150 2210 y(and)23 b(op)s(erators,)j(emplo)m
-(ying)c(the)i(quoting)g(rules)e(to)i(select)h(whic)m(h)d(meanings)h(to)
-i(assign)e(v)-5 b(arious)22 b(w)m(ords)150 2320 y(and)30
-b(c)m(haracters.)275 2458 y(The)38 b(shell)f(then)h(parses)g(these)h
-(tok)m(ens)h(in)m(to)e(commands)h(and)f(other)h(constructs,)i(remo)m(v)
-m(es)f(the)150 2568 y(sp)s(ecial)29 b(meaning)g(of)h(certain)g(w)m
-(ords)g(or)g(c)m(haracters,)i(expands)d(others,)h(redirects)g(input)e
-(and)h(output)150 2677 y(as)d(needed,)g(executes)g(the)g(sp)s
-(eci\014ed)d(command,)k(w)m(aits)e(for)g(the)g(command's)g(exit)h
-(status,)g(and)f(mak)m(es)150 2787 y(that)31 b(exit)f(status)h(a)m(v)-5
-b(ailable)30 b(for)g(further)f(insp)s(ection)f(or)j(pro)s(cessing.)150
+TeXDict begin 5 10 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(5)150 299
+y Fo(3)80 b(Basic)54 b(Shell)e(F)-13 b(eatures)275 544
+y Ft(Bash)27 b(is)g(an)g(acron)m(ym)h(for)f(`)p Fs(Bourne-Again)g
+(SHell)p Ft('.)39 b(The)26 b(Bourne)h(shell)h(is)f(the)g(traditional)i
+(Unix)150 653 y(shell)34 b(originally)h(written)e(b)m(y)g(Stephen)g
+(Bourne.)50 b(All)34 b(of)g(the)f(Bourne)h(shell)f(builtin)g(commands)h
+(are)150 763 y(a)m(v)-5 b(ailable)32 b(in)c(Bash,)i(The)f(rules)g(for)g
+(ev)-5 b(aluation)31 b(and)d(quoting)i(are)f(tak)m(en)i(from)d(the)i
+Fl(posix)e Ft(sp)s(eci\014ca-)150 872 y(tion)j(for)f(the)h(`standard')f
+(Unix)g(shell.)275 1010 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 1120 y(tures,)k(shell)e(functions,)h(shell)g
+Fm(p)-5 b(ar)g(ameters)p Ft(,)41 b(shell)36 b(expansions,)i
+Fm(r)-5 b(e)g(dir)g(e)g(ctions)p Ft(,)40 b(whic)m(h)c(are)h(a)f(w)m(a)m
+(y)h(to)150 1230 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 1496 y Fr(3.1)68 b(Shell)45 b(Syn)l(tax)275 1744
+y Ft(When)32 b(the)h(shell)g(reads)g(input,)g(it)g(pro)s(ceeds)f
+(through)h(a)g(sequence)g(of)g(op)s(erations.)48 b(If)33
+b(the)g(input)150 1853 y(indicates)e(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 Fs(#)p Ft('\),)h(and)e(the)150 1963 y(rest)i(of)f(that)h(line.)
+275 2101 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
+2210 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 2320 y(and)30 b(c)m(haracters.)275
+2458 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
+2568 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
+2677 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
+2787 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
 3018 y Fk(3.1.1)63 b(Shell)41 b(Op)s(eration)275 3266
-y Ft(The)28 b(follo)m(wing)f(is)h(a)h(brief)e(description)g(of)i(the)g
-(shell's)e(op)s(eration)i(when)e(it)i(reads)f(and)g(executes)j(a)150
-3375 y(command.)40 b(Basically)-8 b(,)31 b(the)f(shell)f(do)s(es)h(the)
-h(follo)m(wing:)199 3513 y(1.)61 b(Reads)42 b(its)g(input)e(from)i(a)g
-(\014le)g(\(see)h(Section)f(3.8)h([Shell)d(Scripts],)k(page)f(31\),)k
-(from)41 b(a)i(string)330 3623 y(supplied)24 b(as)k(an)f(argumen)m(t)g
-(to)h(the)g(`)p Fs(-c)p Ft(')f(in)m(v)m(o)s(cation)g(option)g(\(see)h
-(Section)g(6.1)g([In)m(v)m(oking)f(Bash],)330 3732 y(page)k(63\),)h(or)
+y Ft(The)28 b(follo)m(wing)i(is)f(a)g(brief)f(description)h(of)g(the)g
+(shell's)g(op)s(eration)h(when)d(it)j(reads)e(and)g(executes)j(a)150
+3375 y(command.)40 b(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)
+h(follo)m(wing:)199 3513 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(31\),)k
+(from)41 b(a)i(string)330 3623 y(supplied)26 b(as)i(an)f(argumen)m(t)g
+(to)h(the)g(`)p Fs(-c)p Ft(')f(in)m(v)m(o)s(cation)i(option)f(\(see)g
+(Section)h(6.1)f([In)m(v)m(oking)g(Bash],)330 3732 y(page)j(63\),)h(or)
 e(from)g(the)h(user's)f(terminal.)199 3869 y(2.)61 b(Breaks)43
-b(the)g(input)e(in)m(to)h(w)m(ords)g(and)g(op)s(erators,)k(ob)s(eying)c
-(the)h(quoting)f(rules)f(describ)s(ed)f(in)330 3978 y(Section)26
-b(3.1.2)j([Quoting],)e(page)g(6.)40 b(These)26 b(tok)m(ens)i(are)f
+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 3978 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 Fs(metacharacters)p Ft(.)36 b(Alias)330
-4088 y(expansion)29 b(is)h(p)s(erformed)e(b)m(y)j(this)e(step)h(\(see)i
-(Section)e(6.6)h([Aliases],)g(page)g(71\).)199 4224 y(3.)61
-b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)g(simple)d(and)i(comp)s
-(ound)f(commands)h(\(see)h(Section)g(3.2)g([Shell)e(Com-)330
-4334 y(mands],)d(page)h(8\).)199 4470 y(4.)61 b(P)m(erforms)40
-b(the)h(v)-5 b(arious)39 b(shell)g(expansions)g(\(see)i(Section)f(3.5)h
-([Shell)e(Expansions],)i(page)g(16\),)330 4580 y(breaking)34
-b(the)h(expanded)g(tok)m(ens)h(in)m(to)f(lists)e(of)i(\014lenames)g
-(\(see)h(Section)e(3.5.8)j([Filename)e(Ex-)330 4689 y(pansion],)29
-b(page)i(22\))h(and)e(commands)g(and)g(argumen)m(ts.)199
-4826 y(5.)61 b(P)m(erforms)36 b(an)m(y)i(necessary)f(redirections)e
-(\(see)j(Section)e(3.6)i([Redirections],)g(page)g(24\))g(and)e(re-)330
-4935 y(mo)m(v)m(es)c(the)e(redirection)f(op)s(erators)i(and)f(their)f
-(op)s(erands)g(from)h(the)h(argumen)m(t)f(list.)199 5071
-y(6.)61 b(Executes)31 b(the)g(command)f(\(see)h(Section)f(3.7)i
-([Executing)e(Commands],)g(page)h(28\).)199 5208 y(7.)61
-b(Optionally)37 b(w)m(aits)i(for)g(the)g(command)g(to)h(complete)f(and)
-g(collects)g(its)g(exit)g(status)g(\(see)h(Sec-)330 5317
-y(tion)30 b(3.7.5)i([Exit)e(Status],)h(page)g(30\).)p
-eop
+4088 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(71\).)199 4224 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
+4334 y(mands],)30 b(page)h(8\).)199 4470 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(16\),)330 4580 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 4689 y(pansion],)30
+b(page)h(22\))h(and)e(commands)g(and)g(argumen)m(ts.)199
+4826 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(24\))g(and)e(re-)330
+4935 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 5071
+y(6.)61 b(Executes)31 b(the)g(command)f(\(see)h(Section)g(3.7)h
+([Executing)f(Commands],)f(page)h(28\).)199 5208 y(7.)61
+b(Optionally)40 b(w)m(aits)g(for)f(the)g(command)g(to)h(complete)g(and)
+f(collects)i(its)f(exit)g(status)f(\(see)h(Sec-)330 5317
+y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(30\).)p
+eop end
 %%Page: 6 12
-6 11 bop 150 -116 a Ft(6)2617 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fk(3.1.2)63 b(Quoting)275 543 y Ft(Quoting)23 b(is)g(used)g(to)h
-(remo)m(v)m(e)i(the)e(sp)s(ecial)e(meaning)h(of)h(certain)g(c)m
-(haracters)i(or)d(w)m(ords)h(to)g(the)g(shell.)150 653
-y(Quoting)j(can)g(b)s(e)g(used)f(to)j(disable)c(sp)s(ecial)h(treatmen)m
-(t)j(for)e(sp)s(ecial)f(c)m(haracters,)k(to)e(prev)m(en)m(t)g(reserv)m
-(ed)150 762 y(w)m(ords)i(from)g(b)s(eing)f(recognized)h(as)h(suc)m(h,)f
-(and)g(to)h(prev)m(en)m(t)g(parameter)g(expansion.)275
-897 y(Eac)m(h)22 b(of)g(the)g(shell)e(metac)m(haracters)k(\(see)f
-(Chapter)e(2)i([De\014nitions],)f(page)h(3\))g(has)e(sp)s(ecial)g
-(meaning)150 1006 y(to)40 b(the)g(shell)d(and)i(m)m(ust)g(b)s(e)g
-(quoted)g(if)g(it)g(is)f(to)i(represen)m(t)g(itself.)66
-b(When)39 b(the)h(command)f(history)150 1116 y(expansion)e(facilities)g
-(are)h(b)s(eing)f(used,)j(the)e Fq(history)g(expansion)f
-Ft(c)m(haracter,)42 b(usually)36 b(`)p Fs(!)p Ft(',)k(m)m(ust)f(b)s(e)
-150 1225 y(quoted)27 b(to)g(prev)m(en)m(t)g(history)e(expansion.)38
-b(See)27 b(Section)f(9.1)i([Bash)e(History)g(F)-8 b(acilities],)27
-b(page)g(109,)i(for)150 1335 y(more)i(details)e(concerning)h(history)f
-(expansion.)275 1469 y(There)37 b(are)h(three)f(quoting)g(mec)m
-(hanisms:)55 b(the)38 b Fq(escap)s(e)g(c)m(haracter)p
-Ft(,)j(single)36 b(quotes,)k(and)d(double)150 1579 y(quotes.)150
+TeXDict begin 6 11 bop 150 -116 a Ft(6)2617 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fk(3.1.2)63 b(Quoting)275
+543 y Ft(Quoting)24 b(is)g(used)f(to)h(remo)m(v)m(e)i(the)e(sp)s(ecial)
+g(meaning)g(of)g(certain)h(c)m(haracters)h(or)d(w)m(ords)h(to)g(the)g
+(shell.)150 653 y(Quoting)k(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 762 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 897 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 1006 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 1116 y(expansion)f(facilities)j
+(are)d(b)s(eing)g(used,)i(the)e Fq(history)h(expansion)f
+Ft(c)m(haracter,)k(usually)c(`)p Fs(!)p Ft(',)i(m)m(ust)f(b)s(e)150
+1225 y(quoted)27 b(to)g(prev)m(en)m(t)g(history)f(expansion.)39
+b(See)27 b(Section)g(9.1)h([Bash)e(History)h(F)-8 b(acilities],)31
+b(page)c(109,)i(for)150 1335 y(more)i(details)g(concerning)g(history)f
+(expansion.)275 1469 y(There)37 b(are)h(three)f(quoting)h(mec)m
+(hanisms:)56 b(the)38 b Fq(escap)s(e)g(c)m(haracter)p
+Ft(,)j(single)d(quotes,)i(and)d(double)150 1579 y(quotes.)150
 1803 y Fk(3.1.2.1)63 b(Escap)s(e)41 b(Character)275 2047
-y Ft(A)27 b(non-quoted)g(bac)m(kslash)g(`)p Fs(\\)p Ft(')g(is)f(the)i
+y Ft(A)27 b(non-quoted)g(bac)m(kslash)h(`)p Fs(\\)p Ft(')f(is)g(the)h
 (Bash)f(escap)s(e)g(c)m(haracter.)42 b(It)27 b(preserv)m(es)g(the)g
-(literal)f(v)-5 b(alue)27 b(of)150 2157 y(the)g(next)g(c)m(haracter)h
-(that)f(follo)m(ws,)g(with)e(the)i(exception)f(of)h Fs(newline)p
-Ft(.)38 b(If)26 b(a)h Fs(\\newline)d Ft(pair)h(app)s(ears,)150
-2267 y(and)30 b(the)h(bac)m(kslash)f(itself)f(is)h(not)h(quoted,)g(the)
-f Fs(\\newline)f Ft(is)g(treated)j(as)f(a)g(line)e(con)m(tin)m(uation)h
-(\(that)150 2376 y(is,)g(it)g(is)f(remo)m(v)m(ed)i(from)f(the)h(input)d
-(stream)j(and)f(e\013ectiv)m(ely)h(ignored\).)150 2600
-y Fk(3.1.2.2)63 b(Single)42 b(Quotes)275 2844 y Ft(Enclosing)34
-b(c)m(haracters)k(in)c(single)h(quotes)i(\(`)p Fs(')p
-Ft('\))f(preserv)m(es)h(the)f(literal)e(v)-5 b(alue)36
-b(of)g(eac)m(h)h(c)m(haracter)150 2954 y(within)22 b(the)j(quotes.)39
-b(A)25 b(single)f(quote)h(ma)m(y)g(not)g(o)s(ccur)g(b)s(et)m(w)m(een)g
-(single)f(quotes,)i(ev)m(en)g(when)d(preceded)150 3064
+(literal)i(v)-5 b(alue)28 b(of)150 2157 y(the)f(next)g(c)m(haracter)h
+(that)f(follo)m(ws,)i(with)d(the)h(exception)g(of)g Fs(newline)p
+Ft(.)38 b(If)26 b(a)h Fs(\\newline)d Ft(pair)i(app)s(ears,)150
+2267 y(and)k(the)h(bac)m(kslash)g(itself)g(is)g(not)g(quoted,)g(the)f
+Fs(\\newline)f Ft(is)h(treated)i(as)f(a)g(line)g(con)m(tin)m(uation)h
+(\(that)150 2376 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 2600
+y Fk(3.1.2.2)63 b(Single)42 b(Quotes)275 2844 y Ft(Enclosing)36
+b(c)m(haracters)i(in)d(single)i(quotes)g(\(`)p Fs(')p
+Ft('\))f(preserv)m(es)h(the)f(literal)h(v)-5 b(alue)37
+b(of)f(eac)m(h)h(c)m(haracter)150 2954 y(within)24 b(the)h(quotes.)39
+b(A)25 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,)g(ev)m(en)g(when)d(preceded)150 3064
 y(b)m(y)30 b(a)h(bac)m(kslash.)150 3288 y Fk(3.1.2.3)63
-b(Double)42 b(Quotes)275 3532 y Ft(Enclosing)34 b(c)m(haracters)k(in)d
-(double)g(quotes)i(\(`)p Fs(")p Ft('\))g(preserv)m(es)f(the)g(literal)f
-(v)-5 b(alue)36 b(of)g(all)f(c)m(haracters)150 3641 y(within)30
-b(the)j(quotes,)h(with)d(the)i(exception)g(of)f(`)p Fs($)p
+b(Double)42 b(Quotes)275 3532 y Ft(Enclosing)36 b(c)m(haracters)i(in)e
+(double)g(quotes)h(\(`)p Fs(")p Ft('\))g(preserv)m(es)f(the)g(literal)i
+(v)-5 b(alue)37 b(of)f(all)h(c)m(haracters)150 3641 y(within)32
+b(the)h(quotes,)h(with)e(the)h(exception)h(of)e(`)p Fs($)p
 Ft(',)i(`)p Fs(`)p Ft(',)f(and)f(`)p Fs(\\)p Ft('.)48
 b(The)32 b(c)m(haracters)i(`)p Fs($)p Ft(')f(and)f(`)p
-Fs(`)p Ft(')g(retain)150 3751 y(their)j(sp)s(ecial)g(meaning)h(within)e
-(double)h(quotes)i(\(see)g(Section)f(3.5)h([Shell)e(Expansions],)h
-(page)h(16\).)150 3861 y(The)30 b(bac)m(kslash)g(retains)f(its)h(sp)s
-(ecial)f(meaning)g(only)h(when)f(follo)m(w)m(ed)h(b)m(y)g(one)h(of)f
-(the)h(follo)m(wing)d(c)m(har-)150 3970 y(acters:)54
+Fs(`)p Ft(')g(retain)150 3751 y(their)k(sp)s(ecial)h(meaning)g(within)f
+(double)g(quotes)h(\(see)g(Section)g(3.5)g([Shell)g(Expansions],)g
+(page)g(16\).)150 3861 y(The)30 b(bac)m(kslash)h(retains)f(its)h(sp)s
+(ecial)g(meaning)f(only)h(when)e(follo)m(w)m(ed)j(b)m(y)e(one)h(of)f
+(the)h(follo)m(wing)g(c)m(har-)150 3970 y(acters:)54
 b(`)p Fs($)p Ft(',)39 b(`)p Fs(`)p Ft(',)g(`)p Fs(")p
 Ft(',)g(`)p Fs(\\)p Ft(',)f(or)f Fs(newline)p Ft(.)58
-b(Within)35 b(double)g(quotes,)k(bac)m(kslashes)e(that)g(are)g(follo)m
+b(Within)37 b(double)f(quotes,)j(bac)m(kslashes)f(that)f(are)g(follo)m
 (w)m(ed)150 4080 y(b)m(y)28 b(one)g(of)g(these)g(c)m(haracters)i(are)e
-(remo)m(v)m(ed.)41 b(Bac)m(kslashes)29 b(preceding)e(c)m(haracters)i
-(without)e(a)h(sp)s(ecial)150 4189 y(meaning)i(are)i(left)e(unmo)s
-(di\014ed.)40 b(A)31 b(double)f(quote)h(ma)m(y)h(b)s(e)e(quoted)i
-(within)c(double)i(quotes)h(b)m(y)g(pre-)150 4299 y(ceding)k(it)g(with)
-f(a)i(bac)m(kslash.)55 b(When)36 b(command)f(history)f(is)h(b)s(eing)f
-(used,)i(the)f(double)f(quote)i(ma)m(y)150 4408 y(not)31
-b(b)s(e)e(used)h(to)h(quote)g(the)g(history)e(expansion)g(c)m
-(haracter.)275 4543 y(The)41 b(sp)s(ecial)f(parameters)h(`)p
-Fs(*)p Ft(')h(and)f(`)p Fs(@)p Ft(')h(ha)m(v)m(e)g(sp)s(ecial)e
-(meaning)h(when)g(in)f(double)g(quotes)i(\(see)150 4653
-y(Section)30 b(3.5.3)i([Shell)d(P)m(arameter)j(Expansion],)d(page)i
+(remo)m(v)m(ed.)41 b(Bac)m(kslashes)30 b(preceding)e(c)m(haracters)h
+(without)f(a)g(sp)s(ecial)150 4189 y(meaning)j(are)h(left)f(unmo)s
+(di\014ed.)41 b(A)31 b(double)g(quote)g(ma)m(y)h(b)s(e)e(quoted)i
+(within)e(double)h(quotes)g(b)m(y)g(pre-)150 4299 y(ceding)36
+b(it)g(with)f(a)h(bac)m(kslash.)56 b(When)36 b(command)f(history)g(is)h
+(b)s(eing)f(used,)h(the)f(double)g(quote)h(ma)m(y)150
+4408 y(not)31 b(b)s(e)e(used)h(to)h(quote)g(the)g(history)f(expansion)g
+(c)m(haracter.)275 4543 y(The)41 b(sp)s(ecial)h(parameters)f(`)p
+Fs(*)p Ft(')h(and)f(`)p Fs(@)p Ft(')h(ha)m(v)m(e)g(sp)s(ecial)g
+(meaning)g(when)f(in)g(double)g(quotes)h(\(see)150 4653
+y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h(Expansion],)e(page)h
 (18\).)150 4877 y Fk(3.1.2.4)63 b(ANSI-C)40 b(Quoting)275
 5121 y Ft(W)-8 b(ords)33 b(of)h(the)g(form)f Fs($')p
 Fj(string)11 b Fs(')31 b Ft(are)j(treated)g(sp)s(ecially)-8
-b(.)49 b(The)33 b(w)m(ord)g(expands)g(to)i Fq(string)p
-Ft(,)e(with)150 5230 y(bac)m(kslash-escap)s(ed)43 b(c)m(haracters)i
-(replaced)e(as)h(sp)s(eci\014ed)e(b)m(y)h(the)g(ANSI)g(C)g(standard.)79
-b(Bac)m(kslash)150 5340 y(escap)s(e)31 b(sequences,)g(if)e(presen)m(t,)
-i(are)g(deco)s(ded)f(as)g(follo)m(ws:)p eop
+b(.)52 b(The)33 b(w)m(ord)g(expands)g(to)i Fq(string)p
+Ft(,)f(with)150 5230 y(bac)m(kslash-escap)s(ed)44 b(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 5340 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:)p eop end
 %%Page: 7 13
-7 12 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2292 b(7)150 299 y Fs(\\a)384
-b Ft(alert)30 b(\(b)s(ell\))150 487 y Fs(\\b)384 b Ft(bac)m(kspace)150
-675 y Fs(\\e)g Ft(an)30 b(escap)s(e)h(c)m(haracter)h(\(not)f(ANSI)f
-(C\))150 862 y Fs(\\f)384 b Ft(form)30 b(feed)150 1050
-y Fs(\\n)384 b Ft(newline)150 1238 y Fs(\\r)g Ft(carriage)31
-b(return)150 1426 y Fs(\\t)384 b Ft(horizon)m(tal)30
-b(tab)150 1614 y Fs(\\v)384 b Ft(v)m(ertical)30 b(tab)150
-1802 y Fs(\\\\)384 b Ft(bac)m(kslash)150 1989 y Fs(\\')g
-Ft(single)29 b(quote)150 2177 y Fs(\\)p Fj(nnn)288 b
-Ft(the)31 b(eigh)m(t-bit)f(c)m(haracter)i(whose)e(v)-5
-b(alue)30 b(is)f(the)i(o)s(ctal)f(v)-5 b(alue)30 b Fq(nnn)f
+TeXDict begin 7 12 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(7)150 299
+y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))150 487 y Fs(\\b)384
+b Ft(bac)m(kspace)150 675 y Fs(\\e)g Ft(an)30 b(escap)s(e)h(c)m
+(haracter)h(\(not)f(ANSI)f(C\))150 862 y Fs(\\f)384 b
+Ft(form)30 b(feed)150 1050 y Fs(\\n)384 b Ft(newline)150
+1238 y Fs(\\r)g Ft(carriage)32 b(return)150 1426 y Fs(\\t)384
+b Ft(horizon)m(tal)32 b(tab)150 1614 y Fs(\\v)384 b Ft(v)m(ertical)32
+b(tab)150 1802 y Fs(\\\\)384 b Ft(bac)m(kslash)150 1989
+y Fs(\\')g Ft(single)31 b(quote)150 2177 y Fs(\\)p Fj(nnn)288
+b Ft(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 Fq(nnn)e
 Ft(\(one)i(to)g(three)g(digits\))150 2365 y Fs(\\x)p
-Fj(HH)288 b Ft(the)36 b(eigh)m(t-bit)g(c)m(haracter)h(whose)f(v)-5
-b(alue)35 b(is)g(the)h(hexadecimal)f(v)-5 b(alue)35 b
+Fj(HH)288 b Ft(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
 Fq(HH)46 b Ft(\(one)37 b(or)f(t)m(w)m(o)630 2475 y(hex)30
 b(digits\))150 2662 y Fs(\\c)p Fj(x)336 b Ft(a)31 b(con)m(trol-)p
-Fq(x)37 b Ft(c)m(haracter)150 2865 y(The)30 b(expanded)f(result)h(is)f
-(single-quoted,)h(as)h(if)e(the)h(dollar)f(sign)h(had)f(not)i(b)s(een)f
+Fq(x)38 b Ft(c)m(haracter)150 2865 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 3146 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41
-b(T)-10 b(ranslation)275 3418 y Ft(A)30 b(double-quoted)g(string)f
-(preceded)h(b)m(y)h(a)g(dollar)e(sign)g(\(`)p Fs($)p
-Ft('\))j(will)27 b(cause)32 b(the)e(string)g(to)h(b)s(e)f(trans-)150
-3528 y(lated)i(according)g(to)h(the)f(curren)m(t)g(lo)s(cale.)45
-b(If)32 b(the)g(curren)m(t)g(lo)s(cale)g(is)f Fs(C)h
-Ft(or)g Fs(POSIX)p Ft(,)f(the)h(dollar)f(sign)g(is)150
-3637 y(ignored.)40 b(If)30 b(the)g(string)g(is)f(translated)h(and)g
-(replaced,)g(the)h(replacemen)m(t)f(is)g(double-quoted.)275
-3800 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)g(selected)f
-(b)m(y)g(the)g Fs(LC_MESSAGES)c Ft(shell)i(v)-5 b(ariable.)37
-b(Others)150 3910 y(create)i(the)e(name)g(of)g(the)g(message)h(catalog)
-h(from)e(the)g(v)-5 b(alue)36 b(of)h(the)h Fs(TEXTDOMAIN)c
-Ft(shell)h(v)-5 b(ariable,)150 4019 y(p)s(ossibly)29
-b(adding)h(a)h(su\016x)g(of)h(`)p Fs(.mo)p Ft('.)43 b(If)31
-b(y)m(ou)h(use)f(the)h Fs(TEXTDOMAIN)c Ft(v)-5 b(ariable,)31
-b(y)m(ou)h(ma)m(y)g(need)f(to)h(set)150 4129 y(the)22
-b Fs(TEXTDOMAINDIR)d Ft(v)-5 b(ariable)21 b(to)i(the)f(lo)s(cation)g
-(of)g(the)h(message)g(catalog)h(\014les.)37 b(Still)20
-b(others)i(use)g(b)s(oth)150 4238 y(v)-5 b(ariables)29
-b(in)g(this)g(fashion:)40 b Fs(TEXTDOMAINDIR)p Ft(/)p
+b(T)-10 b(ranslation)275 3418 y Ft(A)30 b(double-quoted)h(string)f
+(preceded)g(b)m(y)h(a)g(dollar)g(sign)f(\(`)p Fs($)p
+Ft('\))i(will)e(cause)i(the)e(string)h(to)g(b)s(e)f(trans-)150
+3528 y(lated)j(according)g(to)g(the)f(curren)m(t)g(lo)s(cale.)47
+b(If)32 b(the)g(curren)m(t)g(lo)s(cale)i(is)e Fs(C)g
+Ft(or)g Fs(POSIX)p Ft(,)f(the)h(dollar)h(sign)f(is)150
+3637 y(ignored.)41 b(If)30 b(the)g(string)h(is)f(translated)h(and)f
+(replaced,)h(the)g(replacemen)m(t)g(is)g(double-quoted.)275
+3800 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f
+(b)m(y)f(the)g Fs(LC_MESSAGES)c Ft(shell)k(v)-5 b(ariable.)39
+b(Others)150 3910 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 Fs(TEXTDOMAIN)c
+Ft(shell)j(v)-5 b(ariable,)150 4019 y(p)s(ossibly)31
+b(adding)g(a)g(su\016x)g(of)h(`)p Fs(.mo)p Ft('.)43 b(If)31
+b(y)m(ou)h(use)f(the)h Fs(TEXTDOMAIN)c Ft(v)-5 b(ariable,)33
+b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 4129 y(the)22
+b Fs(TEXTDOMAINDIR)d Ft(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 4238 y(v)-5 b(ariables)31
+b(in)f(this)g(fashion:)41 b Fs(TEXTDOMAINDIR)p Ft(/)p
 Fs(LC_MESSAGES)p Ft(/LC)p 2528 4238 28 4 v 34 w(MESSA)m(GES/)p
 Fs(TEXTDOMAIN)p Ft(.mo.)150 4520 y Fk(3.1.3)63 b(Commen)m(ts)275
-4792 y Ft(In)34 b(a)j(non-in)m(teractiv)m(e)f(shell,)f(or)h(an)f(in)m
-(teractiv)m(e)i(shell)d(in)g(whic)m(h)h(the)g Fs(interactive_comments)
-150 4902 y Ft(option)i(to)h(the)f Fs(shopt)f Ft(builtin)e(is)i(enabled)
-g(\(see)i(Section)g(4.2)g([Bash)f(Builtins],)g(page)h(39\),)j(a)c(w)m
-(ord)150 5011 y(b)s(eginning)24 b(with)h(`)p Fs(#)p Ft(')h(causes)h
-(that)f(w)m(ord)g(and)g(all)f(remaining)g(c)m(haracters)i(on)f(that)h
-(line)e(to)i(b)s(e)f(ignored.)150 5121 y(An)43 b(in)m(teractiv)m(e)h
-(shell)e(without)g(the)h Fs(interactive_comments)38 b
-Ft(option)43 b(enabled)f(do)s(es)h(not)g(allo)m(w)150
+4792 y Ft(In)34 b(a)j(non-in)m(teractiv)m(e)h(shell,)f(or)f(an)f(in)m
+(teractiv)m(e)k(shell)d(in)f(whic)m(h)h(the)f Fs(interactive_comments)
+150 4902 y Ft(option)j(to)g(the)f Fs(shopt)f Ft(builtin)h(is)g(enabled)
+g(\(see)h(Section)h(4.2)f([Bash)f(Builtins],)j(page)e(39\),)j(a)c(w)m
+(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p Fs(#)p Ft(')g(causes)h
+(that)f(w)m(ord)g(and)g(all)h(remaining)g(c)m(haracters)g(on)f(that)h
+(line)g(to)g(b)s(e)f(ignored.)150 5121 y(An)43 b(in)m(teractiv)m(e)j
+(shell)e(without)f(the)g Fs(interactive_comments)38 b
+Ft(option)44 b(enabled)f(do)s(es)g(not)g(allo)m(w)150
 5230 y(commen)m(ts.)56 b(The)34 b Fs(interactive_comments)c
-Ft(option)k(is)g(on)h(b)m(y)g(default)f(in)g(in)m(teractiv)m(e)i
-(shells.)53 b(See)150 5340 y(Section)29 b(6.3)g([In)m(teractiv)m(e)i
-(Shells],)c(page)j(67,)g(for)e(a)i(description)c(of)j(what)g(mak)m(es)h
-(a)f(shell)e(in)m(teractiv)m(e.)p eop
+Ft(option)35 b(is)g(on)g(b)m(y)g(default)g(in)g(in)m(teractiv)m(e)j
+(shells.)55 b(See)150 5340 y(Section)30 b(6.3)f([In)m(teractiv)m(e)j
+(Shells],)d(page)h(67,)g(for)e(a)i(description)e(of)h(what)g(mak)m(es)h
+(a)f(shell)g(in)m(teractiv)m(e.)p eop end
 %%Page: 8 14
-8 13 bop 150 -116 a Ft(8)2617 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fr(3.2)68 b(Shell)45 b(Commands)275 553 y Ft(A)32
-b(simple)e(shell)g(command)i(suc)m(h)g(as)h Fs(echo)c(a)h(b)g(c)i
-Ft(consists)f(of)i(the)f(command)g(itself)f(follo)m(w)m(ed)h(b)m(y)150
-663 y(argumen)m(ts,)f(separated)g(b)m(y)f(spaces.)275
-808 y(More)h(complex)g(shell)e(commands)i(are)g(comp)s(osed)g(of)g
-(simple)e(commands)i(arranged)g(together)h(in)150 917
-y(a)f(v)-5 b(ariet)m(y)31 b(of)g(w)m(a)m(ys:)41 b(in)30
-b(a)h(pip)s(eline)c(in)i(whic)m(h)g(the)i(output)f(of)h(one)f(command)h
-(b)s(ecomes)f(the)h(input)e(of)150 1027 y(a)i(second,)f(in)g(a)g(lo)s
-(op)g(or)g(conditional)f(construct,)i(or)f(in)f(some)i(other)g
-(grouping.)150 1272 y Fk(3.2.1)63 b(Simple)40 b(Commands)275
-1526 y Ft(A)26 b(simple)f(command)i(is)e(the)i(kind)e(of)i(command)g
+TeXDict begin 8 13 bop 150 -116 a Ft(8)2617 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fr(3.2)68 b(Shell)45
+b(Commands)275 553 y Ft(A)32 b(simple)g(shell)g(command)g(suc)m(h)g(as)
+h Fs(echo)c(a)h(b)g(c)i Ft(consists)g(of)h(the)f(command)g(itself)h
+(follo)m(w)m(ed)h(b)m(y)150 663 y(argumen)m(ts,)d(separated)g(b)m(y)f
+(spaces.)275 808 y(More)h(complex)h(shell)f(commands)g(are)g(comp)s
+(osed)g(of)g(simple)g(commands)g(arranged)g(together)h(in)150
+917 y(a)f(v)-5 b(ariet)m(y)32 b(of)f(w)m(a)m(ys:)41 b(in)31
+b(a)g(pip)s(eline)f(in)g(whic)m(h)g(the)h(output)f(of)h(one)f(command)h
+(b)s(ecomes)f(the)h(input)f(of)150 1027 y(a)h(second,)f(in)h(a)f(lo)s
+(op)h(or)f(conditional)i(construct,)f(or)f(in)g(some)h(other)g
+(grouping.)150 1272 y Fk(3.2.1)63 b(Simple)41 b(Commands)275
+1526 y Ft(A)26 b(simple)h(command)g(is)f(the)h(kind)f(of)h(command)g
 (encoun)m(tered)g(most)g(often.)40 b(It's)27 b(just)f(a)i(sequence)150
 1636 y(of)f(w)m(ords)f(separated)h(b)m(y)g Fs(blank)p
-Ft(s,)f(terminated)g(b)m(y)h(one)g(of)g(the)g(shell's)e(con)m(trol)i
-(op)s(erators)g(\(see)h(Chap-)150 1745 y(ter)34 b(2)g([De\014nitions],)
-g(page)h(3\).)51 b(The)34 b(\014rst)f(w)m(ord)g(generally)g(sp)s
-(eci\014es)f(a)j(command)e(to)i(b)s(e)e(executed,)150
-1855 y(with)c(the)i(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)f(that)i
+Ft(s,)f(terminated)h(b)m(y)g(one)g(of)g(the)g(shell's)g(con)m(trol)h
+(op)s(erators)f(\(see)h(Chap-)150 1745 y(ter)34 b(2)g([De\014nitions],)
+i(page)f(3\).)51 b(The)34 b(\014rst)f(w)m(ord)g(generally)i(sp)s
+(eci\014es)e(a)i(command)e(to)i(b)s(e)e(executed,)150
+1855 y(with)d(the)h(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)g(that)h
 (command's)f(argumen)m(ts.)275 2000 y(The)h(return)h(status)g(\(see)i
-(Section)e(3.7.5)i([Exit)e(Status],)i(page)f(30\))g(of)g(a)g(simple)d
-(command)i(is)g(its)150 2109 y(exit)37 b(status)g(as)g(pro)m(vided)e(b)
-m(y)i(the)g Fl(posix)f Ft(1003.1)j Fs(waitpid)c Ft(function,)i(or)g
-(128)p Fs(+)p Fq(n)g Ft(if)f(the)h(command)150 2219 y(w)m(as)31
-b(terminated)f(b)m(y)g(signal)f Fq(n)p Ft(.)150 2463
+(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(30\))g(of)g(a)g(simple)f
+(command)g(is)h(its)150 2109 y(exit)38 b(status)f(as)g(pro)m(vided)f(b)
+m(y)h(the)g Fl(posix)f Ft(1003.1)j Fs(waitpid)c Ft(function,)j(or)f
+(128)p Fs(+)p Fq(n)g Ft(if)g(the)g(command)150 2219 y(w)m(as)31
+b(terminated)g(b)m(y)f(signal)h Fq(n)p Ft(.)150 2463
 y Fk(3.2.2)63 b(Pip)s(elines)275 2718 y Ft(A)30 b Fs(pipeline)e
-Ft(is)i(a)g(sequence)h(of)g(simple)d(commands)i(separated)h(b)m(y)f(`)p
-Fs(|)p Ft('.)275 2863 y(The)f(format)i(for)f(a)h(pip)s(eline)c(is)390
+Ft(is)j(a)f(sequence)h(of)g(simple)f(commands)g(separated)h(b)m(y)f(`)p
+Fs(|)p Ft('.)275 2863 y(The)f(format)i(for)f(a)h(pip)s(eline)f(is)390
 3007 y Fs([time)46 b([-p]])h([!])g Fj(command1)56 b Fs([|)47
 b Fj(command2)56 b Fs(...)o(])150 3152 y Ft(The)36 b(output)h(of)g(eac)
-m(h)h(command)e(in)g(the)h(pip)s(eline)c(is)j(connected)i(via)e(a)h
-(pip)s(e)e(to)j(the)f(input)e(of)i(the)150 3262 y(next)31
-b(command.)40 b(That)30 b(is,)g(eac)m(h)i(command)e(reads)g(the)g
-(previous)f(command's)h(output.)275 3407 y(The)36 b(reserv)m(ed)g(w)m
-(ord)g Fs(time)g Ft(causes)h(timing)e(statistics)h(to)h(b)s(e)f(prin)m
-(ted)f(for)h(the)h(pip)s(eline)c(once)k(it)150 3516 y(\014nishes.)50
-b(The)34 b(statistics)g(curren)m(tly)f(consist)h(of)g(elapsed)g(\(w)m
-(all-clo)s(c)m(k\))g(time)g(and)g(user)f(and)h(system)150
-3626 y(time)h(consumed)g(b)m(y)g(the)h(command's)f(execution.)56
-b(The)35 b(`)p Fs(-p)p Ft(')h(option)e(c)m(hanges)j(the)f(output)f
-(format)150 3735 y(to)i(that)f(sp)s(eci\014ed)e(b)m(y)i
+m(h)h(command)e(in)h(the)g(pip)s(eline)f(is)h(connected)h(via)f(a)g
+(pip)s(e)f(to)i(the)f(input)f(of)h(the)150 3262 y(next)31
+b(command.)40 b(That)30 b(is,)h(eac)m(h)h(command)e(reads)g(the)g
+(previous)g(command's)g(output.)275 3407 y(The)36 b(reserv)m(ed)g(w)m
+(ord)g Fs(time)g Ft(causes)h(timing)g(statistics)h(to)f(b)s(e)f(prin)m
+(ted)g(for)g(the)h(pip)s(eline)f(once)h(it)150 3516 y(\014nishes.)51
+b(The)34 b(statistics)i(curren)m(tly)e(consist)h(of)f(elapsed)h(\(w)m
+(all-clo)s(c)m(k\))i(time)e(and)f(user)f(and)h(system)150
+3626 y(time)i(consumed)f(b)m(y)g(the)h(command's)f(execution.)57
+b(The)35 b(`)p Fs(-p)p Ft(')h(option)f(c)m(hanges)i(the)f(output)f
+(format)150 3735 y(to)i(that)f(sp)s(eci\014ed)f(b)m(y)h
 Fl(posix)p Ft(.)57 b(The)35 b Fs(TIMEFORMAT)e Ft(v)-5
-b(ariable)35 b(ma)m(y)i(b)s(e)e(set)h(to)h(a)f(format)g(string)f(that)
-150 3845 y(sp)s(eci\014es)28 b(ho)m(w)h(the)g(timing)e(information)h
-(should)e(b)s(e)j(displa)m(y)m(ed.)39 b(See)29 b(Section)g(5.2)h([Bash)
-f(V)-8 b(ariables],)150 3955 y(page)29 b(55,)h(for)e(a)g(description)f
-(of)h(the)g(a)m(v)-5 b(ailable)28 b(formats.)40 b(The)28
+b(ariable)37 b(ma)m(y)g(b)s(e)e(set)h(to)h(a)f(format)g(string)g(that)
+150 3845 y(sp)s(eci\014es)29 b(ho)m(w)g(the)g(timing)g(information)h
+(should)d(b)s(e)i(displa)m(y)m(ed.)41 b(See)29 b(Section)h(5.2)g([Bash)
+f(V)-8 b(ariables],)150 3955 y(page)29 b(55,)h(for)e(a)g(description)h
+(of)f(the)g(a)m(v)-5 b(ailable)31 b(formats.)40 b(The)28
 b(use)g(of)g Fs(time)f Ft(as)i(a)f(reserv)m(ed)h(w)m(ord)f(p)s(er-)150
-4064 y(mits)f(the)h(timing)e(of)i(shell)e(builtins,)f(shell)h
-(functions,)h(and)g(pip)s(elines.)37 b(An)27 b(external)h
-Fs(time)e Ft(command)150 4174 y(cannot)31 b(time)f(these)h(easily)-8
-b(.)275 4318 y(If)24 b(the)h(pip)s(eline)d(is)i(not)h(executed)h(async)
-m(hronously)e(\(see)i(Section)f(3.2.3)i([Lists],)f(page)f(9\),)i(the)f
-(shell)150 4428 y(w)m(aits)k(for)g(all)g(commands)g(in)f(the)h(pip)s
-(eline)d(to)k(complete.)275 4573 y(Eac)m(h)25 b(command)g(in)f(a)h(pip)
-s(eline)d(is)i(executed)i(in)e(its)g(o)m(wn)i(subshell)c(\(see)k
-(Section)f(3.7.3)i([Command)150 4682 y(Execution)35 b(En)m(vironmen)m
-(t],)i(page)f(29\).)58 b(The)36 b(exit)f(status)h(of)g(a)g(pip)s(eline)
-d(is)h(the)i(exit)g(status)g(of)g(the)150 4792 y(last)31
-b(command)g(in)f(the)h(pip)s(eline,)d(unless)i(the)h
-Fs(pipefail)e Ft(option)i(is)f(enabled)g(\(see)i(Section)f(4.3)h([The)
-150 4902 y(Set)i(Builtin],)g(page)h(50\).)53 b(If)34
-b Fs(pipefail)e Ft(is)h(enabled,)h(the)h(pip)s(eline's)c(return)i
-(status)h(is)g(the)g(v)-5 b(alue)34 b(of)150 5011 y(the)e(last)g
-(\(righ)m(tmost\))h(command)f(to)h(exit)f(with)e(a)j(non-zero)f
-(status,)h(or)f(zero)h(if)e(all)g(commands)h(exit)150
-5121 y(successfully)-8 b(.)65 b(If)38 b(the)h(reserv)m(ed)g(w)m(ord)g
-(`)p Fs(!)p Ft(')g(precedes)g(the)g(pip)s(eline,)e(the)j(exit)e(status)
-h(is)f(the)h(logical)150 5230 y(negation)g(of)g(the)f(exit)h(status)g
-(as)f(describ)s(ed)f(ab)s(o)m(v)m(e.)66 b(The)38 b(shell)f(w)m(aits)i
-(for)f(all)f(commands)i(in)e(the)150 5340 y(pip)s(eline)27
-b(to)k(terminate)f(b)s(efore)g(returning)f(a)i(v)-5 b(alue.)p
-eop
+4064 y(mits)g(the)g(timing)g(of)g(shell)g(builtins,)g(shell)g
+(functions,)g(and)f(pip)s(elines.)40 b(An)27 b(external)i
+Fs(time)d Ft(command)150 4174 y(cannot)31 b(time)g(these)g(easily)-8
+b(.)275 4318 y(If)24 b(the)h(pip)s(eline)g(is)g(not)g(executed)h(async)
+m(hronously)f(\(see)h(Section)g(3.2.3)h([Lists],)g(page)e(9\),)i(the)f
+(shell)150 4428 y(w)m(aits)31 b(for)f(all)i(commands)e(in)g(the)g(pip)s
+(eline)g(to)h(complete.)275 4573 y(Eac)m(h)25 b(command)g(in)g(a)g(pip)
+s(eline)g(is)g(executed)h(in)f(its)g(o)m(wn)h(subshell)e(\(see)i
+(Section)g(3.7.3)h([Command)150 4682 y(Execution)36 b(En)m(vironmen)m
+(t],)i(page)e(29\).)58 b(The)36 b(exit)g(status)g(of)g(a)g(pip)s(eline)
+g(is)f(the)h(exit)h(status)f(of)g(the)150 4792 y(last)c(command)f(in)g
+(the)g(pip)s(eline,)g(unless)g(the)g Fs(pipefail)e Ft(option)j(is)f
+(enabled)g(\(see)h(Section)g(4.3)g([The)150 4902 y(Set)i(Builtin],)j
+(page)e(50\).)53 b(If)34 b Fs(pipefail)e Ft(is)i(enabled,)h(the)g(pip)s
+(eline's)f(return)f(status)h(is)h(the)f(v)-5 b(alue)35
+b(of)150 5011 y(the)d(last)h(\(righ)m(tmost\))h(command)e(to)h(exit)g
+(with)e(a)i(non-zero)f(status,)h(or)f(zero)h(if)f(all)h(commands)f
+(exit)150 5121 y(successfully)-8 b(.)67 b(If)38 b(the)h(reserv)m(ed)g
+(w)m(ord)g(`)p Fs(!)p Ft(')g(precedes)g(the)g(pip)s(eline,)h(the)g
+(exit)f(status)g(is)g(the)g(logical)150 5230 y(negation)h(of)f(the)f
+(exit)i(status)f(as)f(describ)s(ed)g(ab)s(o)m(v)m(e.)66
+b(The)38 b(shell)h(w)m(aits)h(for)e(all)h(commands)g(in)f(the)150
+5340 y(pip)s(eline)30 b(to)h(terminate)g(b)s(efore)f(returning)g(a)h(v)
+-5 b(alue.)p eop end
 %%Page: 9 15
-9 14 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2292 b(9)150 299 y Fk(3.2.3)63
-b(Lists)41 b(of)g(Commands)275 547 y Ft(A)29 b Fs(list)f
-Ft(is)h(a)g(sequence)h(of)g(one)f(or)h(more)f(pip)s(elines)d(separated)
-k(b)m(y)f(one)h(of)f(the)h(op)s(erators)g(`)p Fs(;)p
-Ft(',)g(`)p Fs(&)p Ft(',)150 657 y(`)p Fs(&&)p Ft(',)h(or)f(`)p
-Fs(||)p Ft(',)g(and)g(optionally)f(terminated)h(b)m(y)g(one)h(of)f(`)p
-Fs(;)p Ft(',)h(`)p Fs(&)p Ft(',)g(or)f(a)h Fs(newline)p
-Ft(.)275 795 y(Of)23 b(these)h(list)e(op)s(erators,)k(`)p
-Fs(&&)p Ft(')d(and)g(`)p Fs(||)p Ft(')h(ha)m(v)m(e)h(equal)e
-(precedence,)j(follo)m(w)m(ed)d(b)m(y)h(`)p Fs(;)p Ft(')g(and)f(`)p
-Fs(&)p Ft(',)i(whic)m(h)150 905 y(ha)m(v)m(e)32 b(equal)d(precedence.)
-275 1044 y(A)g(sequence)h(of)g(one)g(or)g(more)g(newlines)d(ma)m(y)j
-(app)s(ear)f(in)g(a)h Fs(list)e Ft(to)j(delimit)c(commands,)j(equiv-)
-150 1153 y(alen)m(t)h(to)g(a)g(semicolon.)275 1292 y(If)c(a)h(command)f
-(is)g(terminated)g(b)m(y)h(the)g(con)m(trol)g(op)s(erator)g(`)p
-Fs(&)p Ft(',)h(the)e(shell)f(executes)j(the)f(command)150
-1401 y(async)m(hronously)f(in)h(a)h(subshell.)37 b(This)27
-b(is)h(kno)m(wn)g(as)h(executing)g(the)g(command)g(in)e(the)i
-Fq(bac)m(kground)p Ft(.)150 1511 y(The)f(shell)f(do)s(es)h(not)h(w)m
-(ait)f(for)g(the)h(command)f(to)i(\014nish,)c(and)i(the)h(return)e
-(status)i(is)f(0)h(\(true\).)40 b(When)150 1621 y(job)g(con)m(trol)g
-(is)g(not)g(activ)m(e)h(\(see)g(Chapter)f(7)h([Job)f(Con)m(trol],)i
-(page)f(79\),)j(the)d(standard)e(input)f(for)150 1730
-y(async)m(hronous)43 b(commands,)k(in)c(the)g(absence)i(of)f(an)m(y)g
-(explicit)e(redirections,)k(is)c(redirected)h(from)150
+TeXDict begin 9 14 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)150 299
+y Fk(3.2.3)63 b(Lists)41 b(of)h(Commands)275 547 y Ft(A)29
+b Fs(list)f Ft(is)i(a)f(sequence)h(of)g(one)f(or)h(more)f(pip)s(elines)
+g(separated)h(b)m(y)f(one)h(of)f(the)h(op)s(erators)g(`)p
+Fs(;)p Ft(',)g(`)p Fs(&)p Ft(',)150 657 y(`)p Fs(&&)p
+Ft(',)h(or)f(`)p Fs(||)p Ft(',)g(and)g(optionally)i(terminated)f(b)m(y)
+f(one)h(of)f(`)p Fs(;)p Ft(',)h(`)p Fs(&)p Ft(',)g(or)f(a)h
+Fs(newline)p Ft(.)275 795 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p
+Fs(&&)p Ft(')d(and)g(`)p Fs(||)p Ft(')h(ha)m(v)m(e)h(equal)f
+(precedence,)i(follo)m(w)m(ed)f(b)m(y)f(`)p Fs(;)p Ft(')g(and)f(`)p
+Fs(&)p Ft(',)i(whic)m(h)150 905 y(ha)m(v)m(e)32 b(equal)e(precedence.)
+275 1044 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h
+(app)s(ear)f(in)h(a)g Fs(list)e Ft(to)j(delimit)f(commands,)g(equiv-)
+150 1153 y(alen)m(t)i(to)f(a)g(semicolon.)275 1292 y(If)c(a)h(command)f
+(is)h(terminated)g(b)m(y)g(the)g(con)m(trol)h(op)s(erator)f(`)p
+Fs(&)p Ft(',)h(the)e(shell)h(executes)h(the)f(command)150
+1401 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28
+b(is)h(kno)m(wn)f(as)h(executing)h(the)f(command)g(in)f(the)h
+Fq(bac)m(kground)p Ft(.)150 1511 y(The)f(shell)h(do)s(es)f(not)h(w)m
+(ait)g(for)f(the)h(command)f(to)i(\014nish,)d(and)h(the)h(return)e
+(status)i(is)g(0)g(\(true\).)40 b(When)150 1621 y(job)g(con)m(trol)h
+(is)g(not)f(activ)m(e)i(\(see)f(Chapter)f(7)h([Job)f(Con)m(trol],)j
+(page)e(79\),)j(the)d(standard)e(input)g(for)150 1730
+y(async)m(hronous)k(commands,)k(in)d(the)f(absence)i(of)f(an)m(y)g
+(explicit)h(redirections,)j(is)43 b(redirected)h(from)150
 1840 y Fs(/dev/null)p Ft(.)275 1979 y(Commands)19 b(separated)j(b)m(y)f
-(a)g(`)p Fs(;)p Ft(')g(are)h(executed)g(sequen)m(tially;)h(the)e(shell)
-e(w)m(aits)i(for)g(eac)m(h)h(command)150 2088 y(to)31
-b(terminate)g(in)e(turn.)39 b(The)30 b(return)f(status)i(is)e(the)i
-(exit)f(status)h(of)g(the)f(last)g(command)g(executed.)275
-2227 y(The)f(con)m(trol)i(op)s(erators)f(`)p Fs(&&)p
-Ft(')g(and)g(`)p Fs(||)p Ft(')g(denote)h Fl(and)e Ft(lists)g(and)h
-Fl(or)f Ft(lists,)g(resp)s(ectiv)m(ely)-8 b(.)41 b(An)30
-b Fl(and)150 2336 y Ft(list)f(has)h(the)h(form)390 2475
+(a)g(`)p Fs(;)p Ft(')g(are)h(executed)g(sequen)m(tially;)k(the)21
+b(shell)g(w)m(aits)h(for)f(eac)m(h)h(command)150 2088
+y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i(is)f
+(the)h(exit)g(status)g(of)g(the)f(last)h(command)f(executed.)275
+2227 y(The)f(con)m(trol)j(op)s(erators)e(`)p Fs(&&)p
+Ft(')g(and)g(`)p Fs(||)p Ft(')g(denote)h Fl(and)e Ft(lists)i(and)f
+Fl(or)f Ft(lists,)i(resp)s(ectiv)m(ely)-8 b(.)43 b(An)30
+b Fl(and)150 2336 y Ft(list)h(has)f(the)h(form)390 2475
 y Fj(command1)56 b Fs(&&)47 b Fj(command2)150 2614 y
-Fq(command2)38 b Ft(is)29 b(executed)j(if,)d(and)h(only)f(if,)h
-Fq(command1)38 b Ft(returns)29 b(an)h(exit)g(status)h(of)g(zero.)275
-2752 y(An)f Fl(or)f Ft(list)g(has)h(the)h(form)390 2891
+Fq(command2)38 b Ft(is)30 b(executed)i(if,)e(and)g(only)g(if,)h
+Fq(command1)38 b Ft(returns)29 b(an)h(exit)h(status)g(of)g(zero.)275
+2752 y(An)f Fl(or)f Ft(list)i(has)f(the)h(form)390 2891
 y Fj(command1)56 b Fs(||)47 b Fj(command2)150 3030 y
-Fq(command2)38 b Ft(is)29 b(executed)j(if,)d(and)h(only)f(if,)h
-Fq(command1)38 b Ft(returns)29 b(a)i(non-zero)g(exit)f(status.)275
-3168 y(The)i(return)g(status)i(of)f Fl(and)f Ft(and)h
-Fl(or)f Ft(lists)g(is)g(the)h(exit)g(status)h(of)f(the)g(last)g
-(command)g(executed)150 3278 y(in)c(the)i(list.)150 3510
-y Fk(3.2.4)63 b(Comp)s(ound)41 b(Commands)275 3759 y
-Ft(Comp)s(ound)f(commands)i(are)h(the)g(shell)e(programming)g
+Fq(command2)38 b Ft(is)30 b(executed)i(if,)e(and)g(only)g(if,)h
+Fq(command1)38 b Ft(returns)29 b(a)i(non-zero)g(exit)g(status.)275
+3168 y(The)h(return)g(status)i(of)f Fl(and)f Ft(and)h
+Fl(or)f Ft(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h
+(command)f(executed)150 3278 y(in)d(the)h(list.)150 3510
+y Fk(3.2.4)63 b(Comp)s(ound)42 b(Commands)275 3759 y
+Ft(Comp)s(ound)e(commands)i(are)h(the)g(shell)g(programming)f
 (constructs.)77 b(Eac)m(h)44 b(construct)e(b)s(egins)150
-3868 y(with)c(a)h(reserv)m(ed)g(w)m(ord)f(or)h(con)m(trol)g(op)s
-(erator)g(and)g(is)f(terminated)g(b)m(y)h(a)g(corresp)s(onding)e
-(reserv)m(ed)150 3978 y(w)m(ord)42 b(or)h(op)s(erator.)77
-b(An)m(y)42 b(redirections)f(\(see)j(Section)e(3.6)i([Redirections],)h
-(page)e(24\))g(asso)s(ciated)150 4087 y(with)25 b(a)h(comp)s(ound)f
-(command)h(apply)f(to)i(all)e(commands)h(within)d(that)k(comp)s(ound)e
-(command)h(unless)150 4197 y(explicitly)i(o)m(v)m(erridden.)275
-4336 y(Bash)45 b(pro)m(vides)g(lo)s(oping)f(constructs,)49
-b(conditional)44 b(commands,)50 b(and)44 b(mec)m(hanisms)h(to)h(group)
-150 4445 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150
+3868 y(with)d(a)g(reserv)m(ed)g(w)m(ord)f(or)h(con)m(trol)h(op)s
+(erator)f(and)g(is)g(terminated)g(b)m(y)g(a)g(corresp)s(onding)f
+(reserv)m(ed)150 3978 y(w)m(ord)k(or)h(op)s(erator.)77
+b(An)m(y)42 b(redirections)h(\(see)h(Section)f(3.6)h([Redirections],)j
+(page)c(24\))g(asso)s(ciated)150 4087 y(with)26 b(a)g(comp)s(ound)f
+(command)h(apply)g(to)h(all)g(commands)f(within)f(that)i(comp)s(ound)e
+(command)h(unless)150 4197 y(explicitly)32 b(o)m(v)m(erridden.)275
+4336 y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e
+(commands,)j(and)44 b(mec)m(hanisms)i(to)g(group)150
+4445 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150
 4678 y Fk(3.2.4.1)63 b(Lo)s(oping)43 b(Constructs)275
-4926 y Ft(Bash)30 b(supp)s(orts)f(the)h(follo)m(wing)f(lo)s(oping)g
-(constructs.)275 5065 y(Note)35 b(that)f(wherev)m(er)g(a)g(`)p
-Fs(;)p Ft(')g(app)s(ears)f(in)g(the)h(description)e(of)i(a)g(command's)
-g(syn)m(tax,)i(it)d(ma)m(y)i(b)s(e)150 5174 y(replaced)30
-b(with)f(one)i(or)f(more)g(newlines.)150 5340 y Fs(until)240
-b Ft(The)30 b(syn)m(tax)h(of)f(the)h Fs(until)e Ft(command)h(is:)p
-eop
+4926 y Ft(Bash)30 b(supp)s(orts)f(the)h(follo)m(wing)i(lo)s(oping)f
+(constructs.)275 5065 y(Note)k(that)f(wherev)m(er)g(a)g(`)p
+Fs(;)p Ft(')g(app)s(ears)f(in)h(the)g(description)g(of)g(a)g(command's)
+g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 5174 y(replaced)c(with)f(one)h
+(or)f(more)g(newlines.)150 5340 y Fs(until)240 b Ft(The)30
+b(syn)m(tax)h(of)f(the)h Fs(until)e Ft(command)h(is:)p
+eop end
 %%Page: 10 16
-10 15 bop 150 -116 a Ft(10)2572 b(Bash)31 b(Reference)g(Man)m(ual)870
-299 y Fs(until)46 b Fj(test-commands)11 b Fs(;)44 b(do)j
-Fj(consequent-commands)11 b Fs(;)42 b(done)630 434 y
-Ft(Execute)g Fq(consequen)m(t-commands)k Ft(as)41 b(long)g(as)g
-Fq(test-commands)46 b Ft(has)41 b(an)g(exit)g(status)630
-543 y(whic)m(h)c(is)h(not)h(zero.)67 b(The)38 b(return)f(status)j(is)d
-(the)i(exit)g(status)g(of)g(the)g(last)f(command)630
-653 y(executed)31 b(in)e Fq(consequen)m(t-commands)p
-Ft(,)j(or)e(zero)h(if)f(none)g(w)m(as)h(executed.)150
+TeXDict begin 10 15 bop 150 -116 a Ft(10)2572 b(Bash)31
+b(Reference)g(Man)m(ual)870 299 y Fs(until)46 b Fj(test-commands)11
+b Fs(;)44 b(do)j Fj(consequent-commands)11 b Fs(;)42
+b(done)630 434 y Ft(Execute)g Fq(consequen)m(t-commands)k
+Ft(as)41 b(long)h(as)f Fq(test-commands)46 b Ft(has)41
+b(an)g(exit)h(status)630 543 y(whic)m(h)c(is)h(not)g(zero.)67
+b(The)38 b(return)f(status)j(is)e(the)h(exit)h(status)f(of)g(the)g
+(last)g(command)630 653 y(executed)31 b(in)f Fq(consequen)m(t-commands)
+p Ft(,)i(or)e(zero)h(if)g(none)f(w)m(as)h(executed.)150
 813 y Fs(while)240 b Ft(The)30 b(syn)m(tax)h(of)f(the)h
 Fs(while)e Ft(command)h(is:)870 948 y Fs(while)46 b Fj(test-commands)11
 b Fs(;)44 b(do)j Fj(consequent-commands)11 b Fs(;)42
 b(done)630 1083 y Ft(Execute)g Fq(consequen)m(t-commands)k
-Ft(as)41 b(long)g(as)g Fq(test-commands)46 b Ft(has)41
-b(an)g(exit)g(status)630 1193 y(of)34 b(zero.)53 b(The)34
-b(return)f(status)h(is)g(the)g(exit)g(status)h(of)f(the)g(last)g
-(command)g(executed)h(in)630 1302 y Fq(consequen)m(t-commands)p
-Ft(,)c(or)g(zero)g(if)e(none)h(w)m(as)h(executed.)150
+Ft(as)41 b(long)h(as)f Fq(test-commands)46 b Ft(has)41
+b(an)g(exit)h(status)630 1193 y(of)34 b(zero.)53 b(The)34
+b(return)f(status)h(is)h(the)f(exit)h(status)g(of)f(the)g(last)h
+(command)f(executed)h(in)630 1302 y Fq(consequen)m(t-commands)p
+Ft(,)c(or)g(zero)g(if)f(none)g(w)m(as)h(executed.)150
 1463 y Fs(for)336 b Ft(The)30 b(syn)m(tax)h(of)f(the)h
 Fs(for)e Ft(command)i(is:)870 1598 y Fs(for)47 b Fj(name)57
 b Fs([in)47 b Fj(words)57 b Fs(...)o(];)47 b(do)g Fj(commands)11
 b Fs(;)45 b(done)630 1733 y Ft(Expand)31 b Fq(w)m(ords)p
 Ft(,)j(and)e(execute)i Fq(commands)i Ft(once)d(for)g(eac)m(h)h(mem)m(b)
-s(er)e(in)f(the)i(resultan)m(t)630 1842 y(list,)27 b(with)g
+s(er)e(in)g(the)h(resultan)m(t)630 1842 y(list,)c(with)f
 Fq(name)33 b Ft(b)s(ound)26 b(to)j(the)f(curren)m(t)g(mem)m(b)s(er.)40
-b(If)27 b(`)p Fs(in)j Fj(words)11 b Ft(')27 b(is)g(not)h(presen)m(t,)h
+b(If)27 b(`)p Fs(in)j Fj(words)11 b Ft(')27 b(is)h(not)g(presen)m(t,)h
 (the)630 1952 y Fs(for)g Ft(command)g(executes)i(the)e
-Fq(commands)k Ft(once)d(for)f(eac)m(h)i(p)s(ositional)c(parameter)j
-(that)630 2061 y(is)c(set,)i(as)f(if)f(`)p Fs(in)k("$@")p
-Ft(')c(had)g(b)s(een)g(sp)s(eci\014ed)f(\(see)j(Section)e(3.4.2)j([Sp)s
-(ecial)c(P)m(arameters],)630 2171 y(page)e(15\).)39 b(The)21
-b(return)g(status)h(is)f(the)h(exit)g(status)g(of)g(the)g(last)f
-(command)h(that)g(executes.)630 2281 y(If)i(there)h(are)h(no)e(items)h
-(in)e(the)i(expansion)f(of)h Fq(w)m(ords)p Ft(,)h(no)f(commands)f(are)h
-(executed,)j(and)630 2390 y(the)j(return)e(status)i(is)e(zero.)630
-2525 y(An)h(alternate)h(form)f(of)h(the)f Fs(for)g Ft(command)g(is)f
+Fq(commands)k Ft(once)d(for)f(eac)m(h)i(p)s(ositional)f(parameter)g
+(that)630 2061 y(is)d(set,)h(as)f(if)g(`)p Fs(in)j("$@")p
+Ft(')c(had)g(b)s(een)g(sp)s(eci\014ed)g(\(see)i(Section)f(3.4.2)i([Sp)s
+(ecial)e(P)m(arameters],)630 2171 y(page)c(15\).)39 b(The)21
+b(return)g(status)h(is)g(the)g(exit)h(status)f(of)g(the)g(last)g
+(command)g(that)g(executes.)630 2281 y(If)i(there)h(are)h(no)e(items)i
+(in)e(the)h(expansion)g(of)g Fq(w)m(ords)p Ft(,)h(no)f(commands)f(are)h
+(executed,)j(and)630 2390 y(the)j(return)e(status)i(is)f(zero.)630
+2525 y(An)g(alternate)i(form)e(of)h(the)f Fs(for)g Ft(command)g(is)g
 (also)h(supp)s(orted:)870 2660 y Fs(for)47 b(\(\()g Fj(expr1)57
 b Fs(;)47 b Fj(expr2)57 b Fs(;)48 b Fj(expr3)57 b Fs(\)\))47
 b(;)g(do)g Fj(commands)57 b Fs(;)47 b(done)630 2795 y
-Ft(First,)37 b(the)g(arithmetic)f(expression)f Fq(expr1)43
-b Ft(is)35 b(ev)-5 b(aluated)37 b(according)f(to)h(the)g(rules)e(de-)
-630 2905 y(scrib)s(ed)40 b(b)s(elo)m(w)h(\(see)i(Section)f(6.5)h
-([Shell)e(Arithmetic],)j(page)f(70\).)77 b(The)42 b(arithmetic)630
-3014 y(expression)32 b Fq(expr2)41 b Ft(is)33 b(then)g(ev)-5
-b(aluated)34 b(rep)s(eatedly)f(un)m(til)f(it)h(ev)-5
-b(aluates)34 b(to)h(zero.)51 b(Eac)m(h)630 3124 y(time)22
-b Fq(expr2)30 b Ft(ev)-5 b(aluates)24 b(to)f(a)g(non-zero)h(v)-5
-b(alue,)24 b Fq(commands)i Ft(are)d(executed)g(and)g(the)g(arith-)630
-3233 y(metic)28 b(expression)f Fq(expr3)36 b Ft(is)27
-b(ev)-5 b(aluated.)40 b(If)28 b(an)m(y)h(expression)e(is)g(omitted,)i
-(it)f(b)s(eha)m(v)m(es)h(as)630 3343 y(if)h(it)h(ev)-5
-b(aluates)31 b(to)h(1.)44 b(The)30 b(return)g(v)-5 b(alue)31
-b(is)f(the)h(exit)g(status)h(of)f(the)g(last)g(command)g(in)630
-3453 y Fq(list)g Ft(that)g(is)e(executed,)j(or)e(false)g(if)g(an)m(y)g
-(of)h(the)f(expressions)f(is)h(in)m(v)-5 b(alid.)275
-3613 y(The)26 b Fs(break)g Ft(and)h Fs(continue)e Ft(builtins)f(\(see)k
-(Section)g(4.1)g([Bourne)g(Shell)d(Builtins],)h(page)i(33\))g(ma)m(y)
-150 3723 y(b)s(e)i(used)f(to)i(con)m(trol)g(lo)s(op)f(execution.)150
+Ft(First,)38 b(the)f(arithmetic)h(expression)e Fq(expr1)43
+b Ft(is)36 b(ev)-5 b(aluated)38 b(according)f(to)g(the)g(rules)f(de-)
+630 2905 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g(6.5)g
+([Shell)g(Arithmetic],)j(page)d(70\).)77 b(The)42 b(arithmetic)630
+3014 y(expression)33 b Fq(expr2)41 b Ft(is)34 b(then)f(ev)-5
+b(aluated)35 b(rep)s(eatedly)f(un)m(til)g(it)g(ev)-5
+b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 3124 y(time)23
+b Fq(expr2)30 b Ft(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h(v)-5
+b(alue,)25 b Fq(commands)h Ft(are)d(executed)g(and)g(the)g(arith-)630
+3233 y(metic)29 b(expression)f Fq(expr3)36 b Ft(is)28
+b(ev)-5 b(aluated.)41 b(If)28 b(an)m(y)h(expression)f(is)g(omitted,)i
+(it)f(b)s(eha)m(v)m(es)g(as)630 3343 y(if)i(it)h(ev)-5
+b(aluates)32 b(to)g(1.)44 b(The)30 b(return)g(v)-5 b(alue)32
+b(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f(in)630
+3453 y Fq(list)i Ft(that)e(is)f(executed,)i(or)e(false)h(if)g(an)m(y)f
+(of)h(the)f(expressions)g(is)h(in)m(v)-5 b(alid.)275
+3613 y(The)26 b Fs(break)g Ft(and)h Fs(continue)e Ft(builtins)i(\(see)h
+(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(33\))g(ma)m(y)
+150 3723 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)150
 3949 y Fk(3.2.4.2)63 b(Conditional)42 b(Constructs)150
 4193 y Fs(if)384 b Ft(The)30 b(syn)m(tax)h(of)f(the)h
 Fs(if)f Ft(command)g(is:)870 4328 y Fs(if)47 b Fj(test-commands)11
@@ -3558,2185 +5246,2194 @@ b Fs(;)870 4547 y([elif)46 b Fj(more-test-commands)11
 b Fs(;)42 b(then)965 4657 y Fj(more-consequents)11 b
 Fs(;])870 4767 y([else)46 b Fj(alternate-consequents)11
 b Fs(;])870 4876 y(fi)630 5011 y Ft(The)53 b Fq(test-commands)58
-b Ft(list)52 b(is)h(executed,)60 b(and)53 b(if)f(its)h(return)f(status)
-i(is)e(zero,)61 b(the)630 5121 y Fq(consequen)m(t-commands)44
-b Ft(list)39 b(is)g(executed.)70 b(If)40 b Fq(test-commands)k
+b Ft(list)c(is)g(executed,)60 b(and)53 b(if)g(its)h(return)e(status)i
+(is)f(zero,)61 b(the)630 5121 y Fq(consequen)m(t-commands)44
+b Ft(list)d(is)f(executed.)70 b(If)40 b Fq(test-commands)k
 Ft(returns)39 b(a)h(non-zero)630 5230 y(status,)45 b(eac)m(h)e
-Fs(elif)d Ft(list)g(is)h(executed)i(in)d(turn,)k(and)d(if)f(its)h(exit)
-h(status)g(is)e(zero,)46 b(the)630 5340 y(corresp)s(onding)36
-b Fq(more-consequen)m(ts)42 b Ft(is)37 b(executed)h(and)f(the)h
-(command)g(completes.)62 b(If)p eop
+Fs(elif)d Ft(list)i(is)g(executed)h(in)e(turn,)j(and)d(if)g(its)h(exit)
+h(status)f(is)f(zero,)46 b(the)630 5340 y(corresp)s(onding)37
+b Fq(more-consequen)m(ts)42 b Ft(is)c(executed)g(and)f(the)h(command)g
+(completes.)63 b(If)p eop end
 %%Page: 11 17
-11 16 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2246 b(11)630 299 y(`)p Fs(else)29
-b Fj(alternate-consequents)11 b Ft(')23 b(is)29 b(presen)m(t,)g(and)g
-(the)g(\014nal)f(command)g(in)g(the)h(\014nal)630 408
-y Fs(if)44 b Ft(or)g Fs(elif)f Ft(clause)h(has)g(a)h(non-zero)g(exit)f
-(status,)k(then)c Fq(alternate-consequen)m(ts)50 b Ft(is)630
-518 y(executed.)55 b(The)34 b(return)g(status)h(is)e(the)i(exit)g
-(status)g(of)g(the)g(last)f(command)h(executed,)630 628
-y(or)30 b(zero)i(if)d(no)h(condition)f(tested)i(true.)150
+TeXDict begin 11 16 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)630 299
+y(`)p Fs(else)29 b Fj(alternate-consequents)11 b Ft(')23
+b(is)30 b(presen)m(t,)f(and)g(the)g(\014nal)g(command)f(in)h(the)g
+(\014nal)630 408 y Fs(if)44 b Ft(or)g Fs(elif)f Ft(clause)i(has)f(a)h
+(non-zero)g(exit)g(status,)j(then)c Fq(alternate-consequen)m(ts)51
+b Ft(is)630 518 y(executed.)k(The)34 b(return)g(status)h(is)f(the)h
+(exit)h(status)f(of)g(the)g(last)g(command)g(executed,)630
+628 y(or)30 b(zero)i(if)e(no)g(condition)h(tested)g(true.)150
 784 y Fs(case)288 b Ft(The)30 b(syn)m(tax)h(of)f(the)h
 Fs(case)e Ft(command)h(is:)870 917 y Fs(case)47 b Fj(word)57
 b Fs(in)47 b([)g([\(])g Fj(pattern)57 b Fs([|)47 b Fj(pattern)11
 b Fs(]...)l(\))48 b Fj(command-list)55 b Fs(;;]...)46
-b(esac)630 1050 y(case)34 b Ft(will)e(selectiv)m(ely)i(execute)i(the)f
-Fq(command-list)h Ft(corresp)s(onding)c(to)k(the)e(\014rst)g
+b(esac)630 1050 y(case)34 b Ft(will)h(selectiv)m(ely)i(execute)f(the)f
+Fq(command-list)j Ft(corresp)s(onding)33 b(to)j(the)e(\014rst)g
 Fq(pat-)630 1160 y(tern)40 b Ft(that)i(matc)m(hes)g Fq(w)m(ord)p
-Ft(.)71 b(The)40 b(`)p Fs(|)p Ft(')h(is)f(used)g(to)h(separate)h(m)m
-(ultiple)c(patterns,)44 b(and)630 1270 y(the)31 b(`)p
-Fs(\))p Ft(')h(op)s(erator)f(terminates)g(a)h(pattern)f(list.)42
-b(A)31 b(list)f(of)i(patterns)f(and)f(an)h(asso)s(ciated)630
-1379 y(command-list)e(is)g(kno)m(wn)h(as)g(a)h Fq(clause)p
-Ft(.)40 b(Eac)m(h)31 b(clause)f(m)m(ust)g(b)s(e)f(terminated)h(with)f
-(`)p Fs(;;)p Ft('.)630 1489 y(The)e Fq(w)m(ord)j Ft(undergo)s(es)d
-(tilde)f(expansion,)h(parameter)g(expansion,)g(command)h(substitu-)630
-1598 y(tion,)38 b(arithmetic)e(expansion,)h(and)g(quote)g(remo)m(v)-5
-b(al)37 b(b)s(efore)f(matc)m(hing)h(is)f(attempted.)630
-1708 y(Eac)m(h)e Fq(pattern)f Ft(undergo)s(es)g(tilde)f(expansion,)h
-(parameter)h(expansion,)f(command)g(sub-)630 1817 y(stitution,)c(and)h
-(arithmetic)g(expansion.)630 1951 y(There)g(ma)m(y)g(b)s(e)f(an)h
-(arbitrary)f(n)m(um)m(b)s(er)g(of)h Fs(case)f Ft(clauses,)h(eac)m(h)h
-(terminated)f(b)m(y)f(a)i(`)p Fs(;;)p Ft('.)630 2060
-y(The)f(\014rst)f(pattern)i(that)g(matc)m(hes)g(determines)f(the)g
-(command-list)g(that)h(is)e(executed.)630 2193 y(Here)35
-b(is)f(an)h(example)g(using)e Fs(case)h Ft(in)f(a)i(script)f(that)i
-(could)e(b)s(e)g(used)g(to)h(describ)s(e)f(one)630 2303
-y(in)m(teresting)c(feature)h(of)f(an)g(animal:)870 2436
+Ft(.)71 b(The)40 b(`)p Fs(|)p Ft(')h(is)g(used)f(to)h(separate)h(m)m
+(ultiple)f(patterns,)j(and)630 1270 y(the)31 b(`)p Fs(\))p
+Ft(')h(op)s(erator)f(terminates)h(a)g(pattern)f(list.)44
+b(A)31 b(list)h(of)g(patterns)f(and)f(an)h(asso)s(ciated)630
+1379 y(command-list)g(is)f(kno)m(wn)g(as)g(a)h Fq(clause)p
+Ft(.)41 b(Eac)m(h)31 b(clause)g(m)m(ust)f(b)s(e)f(terminated)i(with)f
+(`)p Fs(;;)p Ft('.)630 1489 y(The)d Fq(w)m(ord)j Ft(undergo)s(es)d
+(tilde)h(expansion,)g(parameter)f(expansion,)h(command)g(substitu-)630
+1598 y(tion,)39 b(arithmetic)f(expansion,)g(and)f(quote)g(remo)m(v)-5
+b(al)38 b(b)s(efore)e(matc)m(hing)i(is)f(attempted.)630
+1708 y(Eac)m(h)d Fq(pattern)f Ft(undergo)s(es)g(tilde)h(expansion,)g
+(parameter)g(expansion,)g(command)f(sub-)630 1817 y(stitution,)e(and)f
+(arithmetic)i(expansion.)630 1951 y(There)e(ma)m(y)g(b)s(e)f(an)h
+(arbitrary)g(n)m(um)m(b)s(er)f(of)h Fs(case)f Ft(clauses,)i(eac)m(h)g
+(terminated)g(b)m(y)e(a)i(`)p Fs(;;)p Ft('.)630 2060
+y(The)f(\014rst)f(pattern)i(that)g(matc)m(hes)g(determines)g(the)f
+(command-list)i(that)f(is)f(executed.)630 2193 y(Here)35
+b(is)g(an)g(example)h(using)e Fs(case)g Ft(in)g(a)h(script)g(that)h
+(could)f(b)s(e)f(used)g(to)h(describ)s(e)g(one)630 2303
+y(in)m(teresting)d(feature)f(of)f(an)g(animal:)870 2436
 y Fs(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f(animal:)f(")870
 2545 y(read)h(ANIMAL)870 2655 y(echo)g(-n)g("The)f($ANIMAL)g(has)h(")
 870 2765 y(case)g($ANIMAL)e(in)965 2874 y(horse)i(|)g(dog)g(|)h(cat\))e
 (echo)h(-n)g("four";;)965 2984 y(man)g(|)h(kangaroo)d(\))j(echo)e(-n)i
 ("two";;)965 3093 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)
 870 3203 y(esac)870 3313 y(echo)h(")g(legs.")630 3446
-y Ft(The)26 b(return)f(status)h(is)f(zero)i(if)e(no)h
-Fq(pattern)g Ft(is)f(matc)m(hed.)40 b(Otherwise,)26 b(the)h(return)e
-(status)630 3555 y(is)k(the)i(exit)f(status)h(of)f(the)h
-Fq(command-list)g Ft(executed.)150 3712 y Fs(select)630
-3845 y Ft(The)i Fs(select)f Ft(construct)i(allo)m(ws)f(the)h(easy)g
-(generation)g(of)f(men)m(us.)50 b(It)34 b(has)f(almost)h(the)630
-3954 y(same)d(syn)m(tax)g(as)f(the)h Fs(for)e Ft(command:)870
+y Ft(The)26 b(return)f(status)h(is)g(zero)h(if)f(no)g
+Fq(pattern)g Ft(is)g(matc)m(hed.)40 b(Otherwise,)27 b(the)g(return)e
+(status)630 3555 y(is)30 b(the)h(exit)g(status)g(of)f(the)h
+Fq(command-list)i Ft(executed.)150 3712 y Fs(select)630
+3845 y Ft(The)g Fs(select)f Ft(construct)i(allo)m(ws)h(the)f(easy)g
+(generation)h(of)e(men)m(us.)50 b(It)34 b(has)f(almost)i(the)630
+3954 y(same)c(syn)m(tax)g(as)f(the)h Fs(for)e Ft(command:)870
 4088 y Fs(select)46 b Fj(name)57 b Fs([in)47 b Fj(words)57
 b Fs(...)o(];)47 b(do)h Fj(commands)11 b Fs(;)44 b(done)630
-4221 y Ft(The)d(list)g(of)g(w)m(ords)h(follo)m(wing)e
-Fs(in)h Ft(is)g(expanded,)j(generating)e(a)g(list)e(of)i(items.)74
-b(The)630 4330 y(set)41 b(of)f(expanded)f(w)m(ords)g(is)h(prin)m(ted)e
-(on)i(the)g(standard)f(error)h(output)g(stream,)j(eac)m(h)630
+4221 y Ft(The)d(list)i(of)e(w)m(ords)h(follo)m(wing)h
+Fs(in)e Ft(is)h(expanded,)i(generating)f(a)f(list)g(of)g(items.)75
+b(The)630 4330 y(set)41 b(of)f(expanded)f(w)m(ords)g(is)i(prin)m(ted)e
+(on)h(the)g(standard)f(error)h(output)g(stream,)j(eac)m(h)630
 4440 y(preceded)30 b(b)m(y)g(a)h(n)m(um)m(b)s(er.)40
-b(If)29 b(the)i(`)p Fs(in)f Fj(words)11 b Ft(')29 b(is)g(omitted,)i
-(the)f(p)s(ositional)f(parameters)630 4549 y(are)24 b(prin)m(ted,)f(as)
-h(if)e(`)p Fs(in)30 b("$@")p Ft(')23 b(had)f(b)s(een)h(sp)s(ecifed.)37
-b(The)23 b Fs(PS3)f Ft(prompt)h(is)f(then)h(displa)m(y)m(ed)630
-4659 y(and)38 b(a)h(line)e(is)g(read)i(from)f(the)h(standard)e(input.)
-64 b(If)38 b(the)h(line)e(consists)h(of)g(a)h(n)m(um)m(b)s(er)630
-4769 y(corresp)s(onding)32 b(to)j(one)f(of)g(the)g(displa)m(y)m(ed)f(w)
-m(ords,)h(then)g(the)g(v)-5 b(alue)33 b(of)i Fq(name)k
-Ft(is)33 b(set)h(to)630 4878 y(that)g(w)m(ord.)49 b(If)32
-b(the)i(line)d(is)i(empt)m(y)-8 b(,)35 b(the)e(w)m(ords)g(and)f(prompt)
-h(are)g(displa)m(y)m(ed)f(again.)49 b(If)630 4988 y Fs(EOF)23
-b Ft(is)f(read,)k(the)d Fs(select)f Ft(command)i(completes.)39
-b(An)m(y)23 b(other)h(v)-5 b(alue)23 b(read)h(causes)g
-Fq(name)630 5097 y Ft(to)31 b(b)s(e)f(set)h(to)g(n)m(ull.)39
-b(The)29 b(line)g(read)h(is)g(sa)m(v)m(ed)h(in)e(the)i(v)-5
-b(ariable)29 b Fs(REPLY)p Ft(.)630 5230 y(The)42 b Fq(commands)j
-Ft(are)d(executed)h(after)g(eac)m(h)g(selection)f(un)m(til)e(a)j
-Fs(break)d Ft(command)i(is)630 5340 y(executed,)32 b(at)f(whic)m(h)e(p)
-s(oin)m(t)g(the)i Fs(select)d Ft(command)i(completes.)p
-eop
+b(If)29 b(the)i(`)p Fs(in)f Fj(words)11 b Ft(')29 b(is)h(omitted,)i
+(the)e(p)s(ositional)i(parameters)630 4549 y(are)24 b(prin)m(ted,)g(as)
+g(if)f(`)p Fs(in)30 b("$@")p Ft(')23 b(had)f(b)s(een)h(sp)s(ecifed.)38
+b(The)23 b Fs(PS3)f Ft(prompt)h(is)g(then)g(displa)m(y)m(ed)630
+4659 y(and)38 b(a)h(line)g(is)f(read)h(from)f(the)h(standard)e(input.)
+65 b(If)38 b(the)h(line)g(consists)g(of)f(a)h(n)m(um)m(b)s(er)630
+4769 y(corresp)s(onding)33 b(to)i(one)f(of)g(the)g(displa)m(y)m(ed)h(w)
+m(ords,)f(then)g(the)g(v)-5 b(alue)34 b(of)h Fq(name)k
+Ft(is)34 b(set)g(to)630 4878 y(that)g(w)m(ord.)49 b(If)32
+b(the)i(line)f(is)h(empt)m(y)-8 b(,)35 b(the)e(w)m(ords)g(and)f(prompt)
+h(are)g(displa)m(y)m(ed)h(again.)50 b(If)630 4988 y Fs(EOF)23
+b Ft(is)g(read,)j(the)d Fs(select)f Ft(command)i(completes.)40
+b(An)m(y)23 b(other)h(v)-5 b(alue)24 b(read)g(causes)g
+Fq(name)630 5097 y Ft(to)31 b(b)s(e)f(set)h(to)g(n)m(ull.)41
+b(The)29 b(line)i(read)f(is)h(sa)m(v)m(ed)g(in)f(the)h(v)-5
+b(ariable)31 b Fs(REPLY)p Ft(.)630 5230 y(The)42 b Fq(commands)j
+Ft(are)d(executed)h(after)g(eac)m(h)g(selection)h(un)m(til)e(a)h
+Fs(break)d Ft(command)i(is)630 5340 y(executed,)32 b(at)f(whic)m(h)f(p)
+s(oin)m(t)g(the)h Fs(select)d Ft(command)i(completes.)p
+eop end
 %%Page: 12 18
-12 17 bop 150 -116 a Ft(12)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y(Here)39 b(is)f(an)h(example)g(that)g(allo)m(ws)g(the)g(user)f(to)
-i(pic)m(k)e(a)h(\014lename)g(from)f(the)h(curren)m(t)630
-408 y(directory)-8 b(,)31 b(and)e(displa)m(ys)g(the)h(name)h(and)f
-(index)e(of)j(the)g(\014le)e(selected.)870 542 y Fs(select)46
-b(fname)g(in)i(*;)870 651 y(do)870 761 y(echo)f(you)g(picked)f($fname)g
-(\\\($REPLY\\\))870 870 y(break;)870 980 y(done)150 1136
-y(\(\(...)o(\)\))870 1270 y(\(\()h Fj(expression)56 b
-Fs(\)\))630 1403 y Ft(The)33 b(arithmetic)g Fq(expression)g
-Ft(is)f(ev)-5 b(aluated)34 b(according)g(to)g(the)g(rules)e(describ)s
-(ed)g(b)s(elo)m(w)630 1512 y(\(see)k(Section)e(6.5)i([Shell)d
-(Arithmetic],)i(page)h(70\).)55 b(If)34 b(the)h(v)-5
-b(alue)34 b(of)h(the)g(expression)f(is)630 1622 y(non-zero,)27
-b(the)f(return)e(status)i(is)f(0;)i(otherwise)e(the)h(return)e(status)i
-(is)f(1.)39 b(This)24 b(is)g(exactly)630 1731 y(equiv)-5
-b(alen)m(t)30 b(to)870 1864 y Fs(let)47 b(")p Fj(expression)11
-b Fs(")630 1998 y Ft(See)25 b(Section)g(4.2)i([Bash)e(Builtins],)f
-(page)i(39,)i(for)c(a)i(full)d(description)g(of)i(the)h
-Fs(let)e Ft(builtin.)150 2154 y Fs([[...)o(]])870 2287
-y([[)47 b Fj(expression)56 b Fs(]])630 2420 y Ft(Return)25
-b(a)h(status)f(of)h(0)g(or)g(1)g(dep)s(ending)d(on)i(the)h(ev)-5
-b(aluation)25 b(of)g(the)h(conditional)e(expres-)630
-2530 y(sion)29 b Fq(expression)p Ft(.)40 b(Expressions)28
-b(are)j(comp)s(osed)f(of)g(the)h(primaries)d(describ)s(ed)g(b)s(elo)m
-(w)h(in)630 2639 y(Section)35 b(6.4)i([Bash)f(Conditional)d
-(Expressions],)j(page)g(69.)57 b(W)-8 b(ord)36 b(splitting)e(and)h
-(\014le-)630 2749 y(name)24 b(expansion)g(are)h(not)f(p)s(erformed)f
+TeXDict begin 12 17 bop 150 -116 a Ft(12)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(Here)39 b(is)g(an)g(example)h(that)f
+(allo)m(ws)i(the)e(user)f(to)i(pic)m(k)f(a)g(\014lename)h(from)e(the)h
+(curren)m(t)630 408 y(directory)-8 b(,)32 b(and)d(displa)m(ys)i(the)f
+(name)h(and)f(index)f(of)i(the)g(\014le)f(selected.)870
+542 y Fs(select)46 b(fname)g(in)i(*;)870 651 y(do)870
+761 y(echo)f(you)g(picked)f($fname)g(\\\($REPLY\\\))870
+870 y(break;)870 980 y(done)150 1136 y(\(\(...)o(\)\))870
+1270 y(\(\()h Fj(expression)56 b Fs(\)\))630 1403 y Ft(The)33
+b(arithmetic)i Fq(expression)f Ft(is)f(ev)-5 b(aluated)35
+b(according)g(to)f(the)g(rules)f(describ)s(ed)g(b)s(elo)m(w)630
+1512 y(\(see)j(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)f(70\).)55
+b(If)34 b(the)h(v)-5 b(alue)35 b(of)g(the)g(expression)g(is)630
+1622 y(non-zero,)27 b(the)f(return)e(status)i(is)g(0;)h(otherwise)f
+(the)g(return)e(status)i(is)g(1.)39 b(This)25 b(is)g(exactly)630
+1731 y(equiv)-5 b(alen)m(t)32 b(to)870 1864 y Fs(let)47
+b(")p Fj(expression)11 b Fs(")630 1998 y Ft(See)25 b(Section)h(4.2)h
+([Bash)e(Builtins],)i(page)f(39,)i(for)c(a)i(full)f(description)g(of)g
+(the)h Fs(let)e Ft(builtin.)150 2154 y Fs([[...)o(]])870
+2287 y([[)47 b Fj(expression)56 b Fs(]])630 2420 y Ft(Return)25
+b(a)h(status)f(of)h(0)g(or)g(1)g(dep)s(ending)e(on)h(the)h(ev)-5
+b(aluation)27 b(of)e(the)h(conditional)h(expres-)630
+2530 y(sion)j Fq(expression)p Ft(.)41 b(Expressions)29
+b(are)i(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s(elo)m
+(w)h(in)630 2639 y(Section)36 b(6.4)h([Bash)f(Conditional)g
+(Expressions],)h(page)f(69.)57 b(W)-8 b(ord)36 b(splitting)h(and)e
+(\014le-)630 2749 y(name)24 b(expansion)h(are)g(not)f(p)s(erformed)f
 (on)h(the)h(w)m(ords)f(b)s(et)m(w)m(een)h(the)g(`)p Fs([[)p
-Ft(')f(and)g(`)p Fs(]])p Ft(';)i(tilde)630 2859 y(expansion,)k
-(parameter)h(and)f(v)-5 b(ariable)29 b(expansion,)h(arithmetic)f
-(expansion,)h(command)630 2968 y(substitution,)38 b(pro)s(cess)h
-(substitution,)f(and)g(quote)h(remo)m(v)-5 b(al)39 b(are)g(p)s
-(erformed.)63 b(Condi-)630 3078 y(tional)30 b(op)s(erators)g(suc)m(h)g
+Ft(')f(and)g(`)p Fs(]])p Ft(';)i(tilde)630 2859 y(expansion,)31
+b(parameter)g(and)f(v)-5 b(ariable)31 b(expansion,)g(arithmetic)g
+(expansion,)g(command)630 2968 y(substitution,)40 b(pro)s(cess)f
+(substitution,)h(and)e(quote)h(remo)m(v)-5 b(al)40 b(are)f(p)s
+(erformed.)63 b(Condi-)630 3078 y(tional)32 b(op)s(erators)e(suc)m(h)g
 (as)h(`)p Fs(-f)p Ft(')f(m)m(ust)g(b)s(e)g(unquoted)g(to)h(b)s(e)e
-(recognized)i(as)g(primaries.)630 3211 y(When)22 b(the)h(`)p
+(recognized)j(as)f(primaries.)630 3211 y(When)22 b(the)h(`)p
 Fs(==)p Ft(')f(and)g(`)p Fs(!=)p Ft(')g(op)s(erators)h(are)g(used,)g
-(the)g(string)e(to)j(the)e(righ)m(t)g(of)h(the)g(op)s(erator)630
-3320 y(is)30 b(considered)g(a)i(pattern)f(and)g(matc)m(hed)h(according)
-f(to)h(the)g(rules)e(describ)s(ed)f(b)s(elo)m(w)h(in)630
-3430 y(Section)g(3.5.8.1)j([P)m(attern)e(Matc)m(hing],)h(page)f(23.)41
-b(The)30 b(return)f(v)-5 b(alue)30 b(is)f(0)h(if)g(the)g(string)630
+(the)g(string)f(to)i(the)e(righ)m(t)h(of)g(the)g(op)s(erator)630
+3320 y(is)31 b(considered)g(a)h(pattern)f(and)g(matc)m(hed)h(according)
+g(to)g(the)g(rules)f(describ)s(ed)f(b)s(elo)m(w)h(in)630
+3430 y(Section)g(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i(page)e(23.)41
+b(The)30 b(return)f(v)-5 b(alue)31 b(is)f(0)g(if)h(the)f(string)630
 3540 y(matc)m(hes)c(or)f(do)s(es)g(not)h(matc)m(h)f(the)h(pattern,)g
-(resp)s(ectiv)m(ely)-8 b(,)26 b(and)f(1)h(otherwise.)38
+(resp)s(ectiv)m(ely)-8 b(,)28 b(and)d(1)h(otherwise.)39
 b(An)m(y)25 b(part)630 3649 y(of)31 b(the)f(pattern)h(ma)m(y)g(b)s(e)e
-(quoted)i(to)g(force)g(it)f(to)h(b)s(e)f(matc)m(hed)h(as)f(a)h(string.)
-630 3782 y(An)i(additional)f(binary)g(op)s(erator,)j(`)p
-Fs(=~)p Ft(',)g(is)e(a)m(v)-5 b(ailable,)34 b(with)e(the)i(same)g
+(quoted)i(to)g(force)g(it)g(to)g(b)s(e)f(matc)m(hed)h(as)f(a)h(string.)
+630 3782 y(An)i(additional)i(binary)e(op)s(erator,)i(`)p
+Fs(=~)p Ft(',)g(is)f(a)m(v)-5 b(ailable,)37 b(with)c(the)h(same)g
 (precedence)h(as)630 3892 y(`)p Fs(==)p Ft(')29 b(and)f(`)p
-Fs(!=)p Ft('.)40 b(When)29 b(it)f(is)g(used,)g(the)h(string)f(to)i(the)
-e(righ)m(t)h(of)g(the)g(op)s(erator)g(is)f(consid-)630
-4001 y(ered)34 b(an)g(extended)g(regular)f(expression)g(and)g(matc)m
-(hed)i(accordingly)e(\(as)h(in)f Fm(r)-5 b(e)g(gex)11
-b Ft(3\)\).)630 4111 y(The)39 b(return)f(v)-5 b(alue)39
-b(is)f(0)i(if)e(the)h(string)g(matc)m(hes)h(the)f(pattern,)j(and)d(1)h
-(otherwise.)66 b(If)630 4221 y(the)26 b(regular)f(expression)g(is)g
-(syn)m(tactically)h(incorrect,)h(the)f(conditional)e(expression's)h
-(re-)630 4330 y(turn)35 b(v)-5 b(alue)36 b(is)f(2.)59
-b(If)36 b(the)g(shell)f(option)g Fs(nocaseglob)f Ft(\(see)j(the)g
-(description)d(of)i Fs(shopt)630 4440 y Ft(in)42 b(Section)h(4.2)h
-([Bash)f(Builtins],)h(page)g(39\))g(is)e(enabled,)j(the)f(matc)m(h)f
-(is)f(p)s(erformed)630 4549 y(without)d(regard)h(to)h(the)f(case)h(of)g
-(alphab)s(etic)d(c)m(haracters.)72 b(Substrings)37 b(matc)m(hed)k(b)m
-(y)630 4659 y(paren)m(thesized)i(sub)s(expressions)e(within)h(the)i
-(regular)f(expression)g(are)h(sa)m(v)m(ed)h(in)e(the)630
-4769 y(arra)m(y)38 b(v)-5 b(ariable)36 b Fs(BASH_REMATCH)p
-Ft(.)59 b(The)36 b(elemen)m(t)i(of)g Fs(BASH_REMATCH)c
-Ft(with)i(index)g(0)i(is)630 4878 y(the)c(p)s(ortion)e(of)i(the)f
-(string)g(matc)m(hing)g(the)h(en)m(tire)g(regular)e(expression.)49
+Fs(!=)p Ft('.)40 b(When)29 b(it)g(is)g(used,)f(the)h(string)g(to)h(the)
+e(righ)m(t)i(of)f(the)g(op)s(erator)g(is)g(consid-)630
+4001 y(ered)34 b(an)g(extended)g(regular)g(expression)g(and)f(matc)m
+(hed)i(accordingly)g(\(as)f(in)g Fm(r)-5 b(e)g(gex)11
+b Ft(3\)\).)630 4111 y(The)39 b(return)f(v)-5 b(alue)40
+b(is)f(0)h(if)f(the)g(string)h(matc)m(hes)g(the)f(pattern,)j(and)d(1)h
+(otherwise.)67 b(If)630 4221 y(the)26 b(regular)g(expression)g(is)g
+(syn)m(tactically)j(incorrect,)f(the)e(conditional)h(expression's)f
+(re-)630 4330 y(turn)35 b(v)-5 b(alue)37 b(is)f(2.)59
+b(If)36 b(the)g(shell)h(option)f Fs(nocaseglob)e Ft(\(see)j(the)g
+(description)f(of)g Fs(shopt)630 4440 y Ft(in)43 b(Section)h(4.2)g
+([Bash)f(Builtins],)k(page)d(39\))g(is)f(enabled,)j(the)e(matc)m(h)f
+(is)g(p)s(erformed)630 4549 y(without)d(regard)g(to)h(the)f(case)h(of)g
+(alphab)s(etic)f(c)m(haracters.)72 b(Substrings)38 b(matc)m(hed)j(b)m
+(y)630 4659 y(paren)m(thesized)j(sub)s(expressions)e(within)i(the)g
+(regular)g(expression)g(are)g(sa)m(v)m(ed)h(in)f(the)630
+4769 y(arra)m(y)38 b(v)-5 b(ariable)38 b Fs(BASH_REMATCH)p
+Ft(.)59 b(The)36 b(elemen)m(t)j(of)f Fs(BASH_REMATCH)c
+Ft(with)j(index)g(0)h(is)630 4878 y(the)c(p)s(ortion)f(of)h(the)f
+(string)h(matc)m(hing)g(the)g(en)m(tire)h(regular)e(expression.)50
 b(The)33 b(elemen)m(t)630 4988 y(of)39 b Fs(BASH_REMATCH)c
-Ft(with)i(index)g Fq(n)g Ft(is)h(the)g(p)s(ortion)f(of)i(the)f(string)g
-(matc)m(hing)g(the)h Fq(n)p Ft(th)630 5097 y(paren)m(thesized)30
-b(sub)s(expression.)630 5230 y(Expressions)22 b(ma)m(y)i(b)s(e)e(com)m
-(bined)h(using)f(the)i(follo)m(wing)e(op)s(erators,)j(listed)d(in)g
+Ft(with)j(index)g Fq(n)f Ft(is)i(the)f(p)s(ortion)g(of)h(the)f(string)h
+(matc)m(hing)g(the)g Fq(n)p Ft(th)630 5097 y(paren)m(thesized)31
+b(sub)s(expression.)630 5230 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m
+(bined)i(using)f(the)h(follo)m(wing)h(op)s(erators,)g(listed)f(in)f
 (decreasing)630 5340 y(order)30 b(of)g(precedence:)p
-eop
+eop end
 %%Page: 13 19
-13 18 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2246 b(13)630 299 y Fs(\()30
-b Fj(expression)38 b Fs(\))1110 408 y Ft(Returns)30 b(the)h(v)-5
-b(alue)30 b(of)h Fq(expression)p Ft(.)41 b(This)29 b(ma)m(y)j(b)s(e)e
-(used)g(to)i(o)m(v)m(erride)f(the)1110 518 y(normal)e(precedence)i(of)g
-(op)s(erators.)630 667 y Fs(!)f Fj(expression)1110 776
-y Ft(T)-8 b(rue)30 b(if)f Fq(expression)g Ft(is)h(false.)630
-925 y Fj(expression1)38 b Fs(&&)30 b Fj(expression2)1110
-1034 y Ft(T)-8 b(rue)30 b(if)f(b)s(oth)h Fq(expression1)37
-b Ft(and)29 b Fq(expression2)37 b Ft(are)31 b(true.)630
-1183 y Fj(expression1)38 b Fs(||)30 b Fj(expression2)1110
-1292 y Ft(T)-8 b(rue)30 b(if)f(either)h Fq(expression1)37
-b Ft(or)30 b Fq(expression2)37 b Ft(is)29 b(true.)630
-1441 y(The)c Fs(&&)g Ft(and)g Fs(||)f Ft(op)s(erators)i(do)f(not)h(ev)
--5 b(aluate)26 b Fq(expression2)32 b Ft(if)25 b(the)g(v)-5
-b(alue)25 b(of)h Fq(expression1)630 1550 y Ft(is)j(su\016cien)m(t)h(to)
-h(determine)f(the)g(return)g(v)-5 b(alue)30 b(of)g(the)h(en)m(tire)f
-(conditional)f(expression.)150 1758 y Fk(3.2.4.3)63 b(Grouping)43
-b(Commands)275 1997 y Ft(Bash)22 b(pro)m(vides)f(t)m(w)m(o)i(w)m(a)m
-(ys)g(to)g(group)f(a)g(list)f(of)h(commands)g(to)g(b)s(e)g(executed)h
-(as)f(a)h(unit.)36 b(When)22 b(com-)150 2106 y(mands)30
-b(are)i(group)s(ed,)f(redirections)f(ma)m(y)i(b)s(e)e(applied)g(to)i
-(the)f(en)m(tire)g(command)h(list.)42 b(F)-8 b(or)32
-b(example,)150 2216 y(the)f(output)f(of)g(all)f(the)i(commands)f(in)f
-(the)i(list)e(ma)m(y)i(b)s(e)e(redirected)h(to)h(a)g(single)e(stream.)
-150 2364 y Fs(\(\))870 2494 y(\()47 b Fj(list)58 b Fs(\))630
-2623 y Ft(Placing)28 b(a)h(list)e(of)i(commands)f(b)s(et)m(w)m(een)i
-(paren)m(theses)e(causes)i(a)f(subshell)c(en)m(vironmen)m(t)630
-2732 y(to)31 b(b)s(e)e(created)j(\(see)f(Section)f(3.7.3)i([Command)d
-(Execution)h(En)m(vironmen)m(t],)g(page)g(29\),)630 2842
-y(and)d(eac)m(h)i(of)e(the)h(commands)f(in)f Fq(list)i
-Ft(to)h(b)s(e)e(executed)h(in)e(that)i(subshell.)37 b(Since)27
-b(the)g Fq(list)630 2951 y Ft(is)h(executed)h(in)e(a)i(subshell,)e(v)-5
-b(ariable)27 b(assignmen)m(ts)h(do)h(not)g(remain)e(in)g(e\013ect)k
-(after)e(the)630 3061 y(subshell)e(completes.)150 3209
+TeXDict begin 13 18 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(13)630 299
+y Fs(\()30 b Fj(expression)38 b Fs(\))1110 408 y Ft(Returns)30
+b(the)h(v)-5 b(alue)31 b(of)g Fq(expression)p Ft(.)42
+b(This)30 b(ma)m(y)i(b)s(e)e(used)g(to)i(o)m(v)m(erride)g(the)1110
+518 y(normal)e(precedence)h(of)g(op)s(erators.)630 667
+y Fs(!)f Fj(expression)1110 776 y Ft(T)-8 b(rue)30 b(if)g
+Fq(expression)g Ft(is)h(false.)630 925 y Fj(expression1)38
+b Fs(&&)30 b Fj(expression2)1110 1034 y Ft(T)-8 b(rue)30
+b(if)g(b)s(oth)g Fq(expression1)38 b Ft(and)29 b Fq(expression2)38
+b Ft(are)31 b(true.)630 1183 y Fj(expression1)38 b Fs(||)30
+b Fj(expression2)1110 1292 y Ft(T)-8 b(rue)30 b(if)g(either)h
+Fq(expression1)38 b Ft(or)30 b Fq(expression2)38 b Ft(is)30
+b(true.)630 1441 y(The)25 b Fs(&&)g Ft(and)g Fs(||)f
+Ft(op)s(erators)i(do)f(not)h(ev)-5 b(aluate)27 b Fq(expression2)33
+b Ft(if)26 b(the)f(v)-5 b(alue)26 b(of)g Fq(expression1)630
+1550 y Ft(is)k(su\016cien)m(t)h(to)g(determine)g(the)f(return)g(v)-5
+b(alue)31 b(of)f(the)h(en)m(tire)g(conditional)h(expression.)150
+1758 y Fk(3.2.4.3)63 b(Grouping)43 b(Commands)275 1997
+y Ft(Bash)22 b(pro)m(vides)g(t)m(w)m(o)h(w)m(a)m(ys)g(to)g(group)f(a)g
+(list)h(of)f(commands)g(to)g(b)s(e)g(executed)h(as)f(a)h(unit.)37
+b(When)22 b(com-)150 2106 y(mands)30 b(are)i(group)s(ed,)f
+(redirections)h(ma)m(y)g(b)s(e)e(applied)i(to)g(the)f(en)m(tire)h
+(command)g(list.)44 b(F)-8 b(or)32 b(example,)150 2216
+y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g(the)h(list)g(ma)m(y)g
+(b)s(e)e(redirected)i(to)g(a)g(single)g(stream.)150 2364
+y Fs(\(\))870 2494 y(\()47 b Fj(list)58 b Fs(\))630 2623
+y Ft(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i(paren)m
+(theses)e(causes)i(a)f(subshell)e(en)m(vironmen)m(t)630
+2732 y(to)k(b)s(e)e(created)j(\(see)f(Section)g(3.7.3)h([Command)d
+(Execution)i(En)m(vironmen)m(t],)g(page)f(29\),)630 2842
+y(and)d(eac)m(h)i(of)e(the)h(commands)f(in)g Fq(list)j
+Ft(to)f(b)s(e)e(executed)h(in)f(that)h(subshell.)39 b(Since)28
+b(the)f Fq(list)630 2951 y Ft(is)i(executed)g(in)f(a)h(subshell,)g(v)-5
+b(ariable)29 b(assignmen)m(ts)g(do)g(not)g(remain)f(in)g(e\013ect)j
+(after)e(the)630 3061 y(subshell)g(completes.)150 3209
 y Fs({})870 3338 y({)47 b Fj(list)11 b Fs(;)46 b(})630
-3467 y Ft(Placing)28 b(a)i(list)e(of)i(commands)f(b)s(et)m(w)m(een)h
-(curly)e(braces)h(causes)h(the)f(list)f(to)i(b)s(e)f(executed)630
-3577 y(in)c(the)i(curren)m(t)g(shell)d(con)m(text.)42
-b(No)27 b(subshell)d(is)h(created.)41 b(The)26 b(semicolon)g(\(or)h
-(newline\))630 3687 y(follo)m(wing)i Fq(list)i Ft(is)e(required.)275
-3835 y(In)j(addition)f(to)i(the)g(creation)h(of)f(a)g(subshell,)e
-(there)i(is)f(a)h(subtle)e(di\013erence)i(b)s(et)m(w)m(een)g(these)h(t)
-m(w)m(o)150 3945 y(constructs)43 b(due)f(to)h(historical)e(reasons.)77
+3467 y Ft(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h
+(curly)f(braces)g(causes)h(the)f(list)h(to)g(b)s(e)f(executed)630
+3577 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42
+b(No)27 b(subshell)f(is)g(created.)41 b(The)26 b(semicolon)i(\(or)f
+(newline\))630 3687 y(follo)m(wing)32 b Fq(list)h Ft(is)d(required.)275
+3835 y(In)i(addition)h(to)g(the)g(creation)i(of)e(a)g(subshell,)g
+(there)g(is)g(a)g(subtle)f(di\013erence)i(b)s(et)m(w)m(een)f(these)h(t)
+m(w)m(o)150 3945 y(constructs)43 b(due)f(to)h(historical)h(reasons.)77
 b(The)42 b(braces)h(are)g Fs(reserved)28 b(words)p Ft(,)45
 b(so)d(they)h(m)m(ust)g(b)s(e)150 4054 y(separated)33
-b(from)f(the)g Fq(list)i Ft(b)m(y)e Fs(blank)p Ft(s.)45
+b(from)f(the)g Fq(list)k Ft(b)m(y)c Fs(blank)p Ft(s.)45
 b(The)32 b(paren)m(theses)h(are)g Fs(operators)p Ft(,)d(and)i(are)h
-(recognized)g(as)150 4164 y(separate)e(tok)m(ens)h(b)m(y)e(the)h(shell)
-d(ev)m(en)j(if)e(they)i(are)g(not)f(separated)h(from)f(the)h
-Fq(list)g Ft(b)m(y)f(whitespace.)275 4293 y(The)f(exit)i(status)f(of)h
-(b)s(oth)f(of)g(these)h(constructs)g(is)e(the)i(exit)f(status)g(of)h
+(recognized)h(as)150 4164 y(separate)d(tok)m(ens)h(b)m(y)e(the)h(shell)
+f(ev)m(en)h(if)f(they)h(are)g(not)f(separated)h(from)f(the)h
+Fq(list)i Ft(b)m(y)d(whitespace.)275 4293 y(The)f(exit)j(status)e(of)h
+(b)s(oth)f(of)g(these)h(constructs)g(is)f(the)h(exit)g(status)f(of)h
 Fq(list)p Ft(.)150 4534 y Fr(3.3)68 b(Shell)45 b(F)-11
-b(unctions)275 4773 y Ft(Shell)25 b(functions)h(are)h(a)h(w)m(a)m(y)g
-(to)g(group)f(commands)g(for)g(later)h(execution)f(using)f(a)i(single)e
-(name)h(for)150 4882 y(the)35 b(group.)55 b(They)35 b(are)g(executed)h
-(just)f(lik)m(e)f(a)i Fs(")p Ft(regular)p Fs(")e Ft(command.)54
-b(When)35 b(the)h(name)f(of)g(a)h(shell)150 4992 y(function)i(is)g
-(used)g(as)h(a)h(simple)d(command)i(name,)i(the)e(list)f(of)h(commands)
-g(asso)s(ciated)h(with)d(that)150 5101 y(function)24
-b(name)i(is)f(executed.)40 b(Shell)23 b(functions)h(are)j(executed)f
-(in)e(the)i(curren)m(t)g(shell)e(con)m(text;)29 b(no)c(new)150
-5211 y(pro)s(cess)30 b(is)f(created)j(to)f(in)m(terpret)f(them.)275
-5340 y(F)-8 b(unctions)29 b(are)i(declared)f(using)f(this)g(syn)m(tax:)
-p eop
+b(unctions)275 4773 y Ft(Shell)27 b(functions)g(are)g(a)h(w)m(a)m(y)g
+(to)g(group)f(commands)g(for)g(later)i(execution)f(using)f(a)h(single)g
+(name)f(for)150 4882 y(the)35 b(group.)55 b(They)35 b(are)g(executed)h
+(just)f(lik)m(e)h(a)g Fs(")p Ft(regular)p Fs(")f Ft(command.)54
+b(When)35 b(the)h(name)f(of)g(a)h(shell)150 4992 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 5101 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
+5211 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m(terpret)g(them.)275
+5340 y(F)-8 b(unctions)30 b(are)h(declared)g(using)f(this)g(syn)m(tax:)
+p eop end
 %%Page: 14 20
-14 19 bop 150 -116 a Ft(14)2572 b(Bash)31 b(Reference)g(Man)m(ual)390
-299 y Fs([)47 b(function)f(])h Fj(name)58 b Fs(\(\))47
-b Fj(compound-command)54 b Fs([)47 b Fj(redirections)55
-b Fs(])275 450 y Ft(This)30 b(de\014nes)i(a)h(shell)e(function)h(named)
-g Fq(name)p Ft(.)48 b(The)32 b(reserv)m(ed)h(w)m(ord)f
-Fs(function)f Ft(is)g(optional.)47 b(If)150 559 y(the)39
-b Fs(function)f Ft(reserv)m(ed)h(w)m(ord)g(is)f(supplied,)h(the)g
-(paren)m(theses)h(are)f(optional.)67 b(The)39 b Fq(b)s(o)s(dy)45
-b Ft(of)40 b(the)150 669 y(function)g(is)h(the)h(comp)s(ound)e(command)
-h Fq(comp)s(ound-command)j Ft(\(see)e(Section)g(3.2.4)h([Comp)s(ound)
-150 778 y(Commands],)33 b(page)g(9\).)48 b(That)33 b(command)g(is)e
-(usually)g(a)i Fq(list)g Ft(enclosed)f(b)s(et)m(w)m(een)i
-Fs({)e Ft(and)g Fs(})p Ft(,)h(but)f(ma)m(y)150 888 y(b)s(e)27
-b(an)m(y)h(comp)s(ound)e(command)h(listed)f(ab)s(o)m(v)m(e.)41
-b Fq(comp)s(ound-command)30 b Ft(is)d(executed)h(whenev)m(er)g
-Fq(name)150 998 y Ft(is)36 b(sp)s(eci\014ed)g(as)h(the)h(name)f(of)g(a)
-h(command.)61 b(An)m(y)37 b(redirections)f(\(see)i(Section)f(3.6)h
-([Redirections],)150 1107 y(page)31 b(24\))h(asso)s(ciated)f(with)e
-(the)h(shell)f(function)g(are)i(p)s(erformed)d(when)i(the)g(function)f
-(is)h(executed.)275 1258 y(The)c(exit)h(status)h(of)f(a)h(function)e
-(de\014nition)f(is)h(zero)i(unless)e(a)h(syn)m(tax)h(error)f(o)s(ccurs)
-g(or)g(a)h(readonly)150 1367 y(function)j(with)f(the)j(same)f(name)g
-(already)g(exists.)45 b(When)32 b(executed,)h(the)f(exit)g(status)h(of)
-f(a)g(function)150 1477 y(is)d(the)i(exit)f(status)h(of)f(the)h(last)f
-(command)g(executed)i(in)d(the)h(b)s(o)s(dy)-8 b(.)275
-1628 y(Note)22 b(that)f(for)f(historical)f(reasons,)k(in)d(the)h(most)g
-(common)g(usage)g(the)g(curly)e(braces)i(that)g(surround)150
-1737 y(the)38 b(b)s(o)s(dy)d(of)j(the)f(function)f(m)m(ust)h(b)s(e)g
+TeXDict begin 14 19 bop 150 -116 a Ft(14)2572 b(Bash)31
+b(Reference)g(Man)m(ual)390 299 y Fs([)47 b(function)f(])h
+Fj(name)58 b Fs(\(\))47 b Fj(compound-command)54 b Fs([)47
+b Fj(redirections)55 b Fs(])275 450 y Ft(This)31 b(de\014nes)h(a)h
+(shell)g(function)g(named)f Fq(name)p Ft(.)48 b(The)32
+b(reserv)m(ed)h(w)m(ord)f Fs(function)f Ft(is)h(optional.)49
+b(If)150 559 y(the)39 b Fs(function)f Ft(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 Fq(b)s(o)s(dy)45 b Ft(of)40 b(the)150 669
+y(function)h(is)h(the)g(comp)s(ound)e(command)h Fq(comp)s(ound-command)
+j Ft(\(see)e(Section)h(3.2.4)g([Comp)s(ound)150 778 y(Commands],)33
+b(page)g(9\).)48 b(That)33 b(command)g(is)f(usually)h(a)g
+Fq(list)i Ft(enclosed)e(b)s(et)m(w)m(een)h Fs({)e Ft(and)g
+Fs(})p Ft(,)h(but)f(ma)m(y)150 888 y(b)s(e)27 b(an)m(y)h(comp)s(ound)e
+(command)h(listed)h(ab)s(o)m(v)m(e.)41 b Fq(comp)s(ound-command)30
+b Ft(is)e(executed)g(whenev)m(er)g Fq(name)150 998 y
+Ft(is)37 b(sp)s(eci\014ed)g(as)g(the)h(name)f(of)g(a)h(command.)61
+b(An)m(y)37 b(redirections)h(\(see)g(Section)g(3.6)g([Redirections],)
+150 1107 y(page)31 b(24\))h(asso)s(ciated)g(with)e(the)g(shell)h
+(function)f(are)h(p)s(erformed)d(when)i(the)g(function)g(is)h
+(executed.)275 1258 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 1367 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 1477 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
+1628 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
+1737 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 Fs(blank)p
-Ft(s)f(or)h(newlines.)60 b(This)150 1847 y(is)37 b(b)s(ecause)h(the)h
-(braces)f(are)h(reserv)m(ed)f(w)m(ords)g(and)f(are)i(only)e(recognized)
-i(as)f(suc)m(h)g(when)f(they)i(are)150 1956 y(separated)e(b)m(y)g
-(whitespace.)60 b(Also,)38 b(when)e(using)f(the)i(braces,)i(the)e
-Fq(list)h Ft(m)m(ust)e(b)s(e)g(terminated)h(b)m(y)g(a)150
-2066 y(semicolon,)30 b(a)h(`)p Fs(&)p Ft(',)f(or)h(a)g(newline.)275
-2217 y(When)h(a)i(function)e(is)g(executed,)j(the)e(argumen)m(ts)h(to)g
-(the)f(function)f(b)s(ecome)h(the)h(p)s(ositional)d(pa-)150
-2326 y(rameters)42 b(during)d(its)i(execution)h(\(see)g(Section)f
-(3.4.1)i([P)m(ositional)e(P)m(arameters],)46 b(page)c(15\).)75
-b(The)150 2436 y(sp)s(ecial)35 b(parameter)h(`)p Fs(#)p
+Ft(s)f(or)h(newlines.)62 b(This)150 1847 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 1956 y(separated)e(b)m(y)g
+(whitespace.)61 b(Also,)39 b(when)d(using)g(the)h(braces,)i(the)e
+Fq(list)j Ft(m)m(ust)c(b)s(e)g(terminated)i(b)m(y)f(a)150
+2066 y(semicolon,)32 b(a)f(`)p Fs(&)p Ft(',)f(or)h(a)g(newline.)275
+2217 y(When)h(a)i(function)f(is)g(executed,)i(the)e(argumen)m(ts)h(to)g
+(the)f(function)g(b)s(ecome)g(the)h(p)s(ositional)g(pa-)150
+2326 y(rameters)42 b(during)e(its)i(execution)h(\(see)f(Section)g
+(3.4.1)h([P)m(ositional)h(P)m(arameters],)i(page)c(15\).)75
+b(The)150 2436 y(sp)s(ecial)37 b(parameter)f(`)p Fs(#)p
 Ft(')g(that)h(expands)e(to)i(the)f(n)m(um)m(b)s(er)f(of)h(p)s
-(ositional)e(parameters)i(is)f(up)s(dated)g(to)150 2545
-y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)33 b(parameter)j
-Fs(0)f Ft(is)f(unc)m(hanged.)54 b(The)35 b(\014rst)f(elemen)m(t)i(of)f
-(the)g Fs(FUNCNAME)150 2655 y Ft(v)-5 b(ariable)25 b(is)h(set)h(to)h
-(the)f(name)f(of)h(the)g(function)e(while)g(the)i(function)e(is)h
-(executing.)39 b(All)26 b(other)h(asp)s(ects)150 2765
-y(of)32 b(the)g(shell)e(execution)j(en)m(vironmen)m(t)e(are)i(iden)m
-(tical)d(b)s(et)m(w)m(een)j(a)f(function)f(and)g(its)h(caller)f(with)g
-(the)150 2874 y(exception)25 b(that)h(the)f Fs(DEBUG)f
-Ft(trap)h(b)s(elo)m(w\))g(is)f(not)i(inherited)c(unless)i(the)h
-(function)f(has)h(b)s(een)g(giv)m(en)g(the)150 2984 y
-Fs(trace)36 b Ft(attribute)g(using)g(the)h Fs(declare)e
-Ft(builtin)e(or)k(the)g Fs(-o)30 b(functrace)35 b Ft(option)h(has)h(b)s
-(een)f(enabled)150 3093 y(with)c(the)h Fs(set)g Ft(builtin,)e(\(in)h
-(whic)m(h)g(case)i(all)e(functions)g(inherit)f(the)j
-Fs(DEBUG)e Ft(trap\).)49 b(See)34 b(Section)f(4.1)150
-3203 y([Bourne)d(Shell)f(Builtins],)f(page)j(33,)g(for)g(the)f
-(description)f(of)h(the)h Fs(trap)e Ft(builtin.)275 3354
-y(If)37 b(the)g(builtin)d(command)k Fs(return)d Ft(is)i(executed)h(in)f
-(a)h(function,)g(the)f(function)g(completes)h(and)150
-3463 y(execution)24 b(resumes)f(with)g(the)h(next)g(command)f(after)i
-(the)f(function)e(call.)38 b(An)m(y)24 b(command)f(asso)s(ciated)150
-3573 y(with)35 b(the)i Fs(RETURN)d Ft(trap)i(is)g(executed)h(b)s(efore)
-f(execution)h(resumes.)57 b(When)37 b(a)f(function)f(completes,)150
-3682 y(the)i(v)-5 b(alues)37 b(of)g(the)g(p)s(ositional)e(parameters)i
-(and)g(the)g(sp)s(ecial)f(parameter)h(`)p Fs(#)p Ft(')g(are)h(restored)
-f(to)h(the)150 3792 y(v)-5 b(alues)25 b(they)g(had)g(prior)e(to)j(the)g
-(function's)e(execution.)39 b(If)25 b(a)h(n)m(umeric)e(argumen)m(t)i
-(is)e(giv)m(en)h(to)h Fs(return)p Ft(,)150 3902 y(that)j(is)f(the)g
-(function's)g(return)f(status;)j(otherwise)e(the)g(function's)g(return)
-f(status)i(is)e(the)i(exit)g(status)150 4011 y(of)i(the)f(last)g
-(command)g(executed)i(b)s(efore)e(the)g Fs(return)p Ft(.)275
-4162 y(V)-8 b(ariables)29 b(lo)s(cal)g(to)h(the)g(function)e(ma)m(y)j
-(b)s(e)e(declared)g(with)f(the)i Fs(local)f Ft(builtin.)37
-b(These)29 b(v)-5 b(ariables)150 4271 y(are)31 b(visible)d(only)h(to)i
-(the)g(function)e(and)h(the)g(commands)g(it)g(in)m(v)m(ok)m(es.)275
-4422 y(F)-8 b(unction)37 b(names)g(and)g(de\014nitions)e(ma)m(y)k(b)s
-(e)e(listed)f(with)g(the)i(`)p Fs(-f)p Ft(')f(option)g(to)i(the)e
-Fs(declare)f Ft(or)150 4532 y Fs(typeset)d Ft(builtin)e(commands)k
-(\(see)h(Section)f(4.2)h([Bash)f(Builtins],)f(page)i(39\).)55
-b(The)35 b(`)p Fs(-F)p Ft(')g(option)f(to)150 4641 y
-Fs(declare)g Ft(or)i Fs(typeset)e Ft(will)f(list)i(the)h(function)f
-(names)h(only)f(\(and)h(optionally)e(the)i(source)g(\014le)g(and)150
-4751 y(line)31 b(n)m(um)m(b)s(er,)i(if)e(the)i Fs(extdebug)e
-Ft(shell)g(option)h(is)g(enabled\).)48 b(F)-8 b(unctions)32
-b(ma)m(y)i(b)s(e)e(exp)s(orted)g(so)h(that)150 4861 y(subshells)d
-(automatically)k(ha)m(v)m(e)g(them)g(de\014ned)e(with)g(the)h(`)p
-Fs(-f)p Ft(')h(option)f(to)h(the)f Fs(export)f Ft(builtin)e(\(see)150
-4970 y(Section)i(4.1)h([Bourne)f(Shell)e(Builtins],)h(page)i(33\).)47
-b(Note)33 b(that)g(shell)d(functions)h(and)g(v)-5 b(ariables)31
-b(with)150 5080 y(the)f(same)g(name)g(ma)m(y)g(result)f(in)g(m)m
-(ultiple)e(iden)m(tically-named)h(en)m(tries)i(in)e(the)i(en)m
-(vironmen)m(t)f(passed)150 5189 y(to)i(the)g(shell's)d(c)m(hildren.)39
-b(Care)30 b(should)f(b)s(e)g(tak)m(en)j(in)d(cases)i(where)f(this)f(ma)
-m(y)i(cause)g(a)g(problem.)275 5340 y(F)-8 b(unctions)29
-b(ma)m(y)i(b)s(e)f(recursiv)m(e.)40 b(No)31 b(limit)d(is)i(placed)g(on)
-g(the)g(n)m(um)m(b)s(er)g(of)g(recursiv)m(e)g(calls.)p
-eop
+(ositional)h(parameters)f(is)g(up)s(dated)f(to)150 2545
+y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35 b(parameter)h
+Fs(0)f Ft(is)g(unc)m(hanged.)54 b(The)35 b(\014rst)f(elemen)m(t)j(of)e
+(the)g Fs(FUNCNAME)150 2655 y Ft(v)-5 b(ariable)27 b(is)g(set)g(to)h
+(the)f(name)f(of)h(the)g(function)f(while)h(the)g(function)f(is)h
+(executing.)40 b(All)28 b(other)f(asp)s(ects)150 2765
+y(of)32 b(the)g(shell)g(execution)i(en)m(vironmen)m(t)e(are)h(iden)m
+(tical)g(b)s(et)m(w)m(een)g(a)f(function)g(and)f(its)i(caller)g(with)f
+(the)150 2874 y(exception)26 b(that)g(the)f Fs(DEBUG)f
+Ft(trap)h(b)s(elo)m(w\))h(is)f(not)h(inherited)e(unless)h(the)g
+(function)g(has)g(b)s(een)g(giv)m(en)h(the)150 2984 y
+Fs(trace)36 b Ft(attribute)h(using)g(the)g Fs(declare)e
+Ft(builtin)h(or)h(the)g Fs(-o)30 b(functrace)35 b Ft(option)i(has)g(b)s
+(een)f(enabled)150 3093 y(with)d(the)g Fs(set)g Ft(builtin,)h(\(in)f
+(whic)m(h)g(case)h(all)g(functions)f(inherit)g(the)h
+Fs(DEBUG)e Ft(trap\).)49 b(See)34 b(Section)g(4.1)150
+3203 y([Bourne)c(Shell)h(Builtins],)g(page)g(33,)g(for)g(the)f
+(description)h(of)f(the)h Fs(trap)e Ft(builtin.)275 3354
+y(If)37 b(the)g(builtin)g(command)h Fs(return)d Ft(is)j(executed)g(in)g
+(a)g(function,)h(the)e(function)h(completes)h(and)150
+3463 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
+3573 y(with)36 b(the)h Fs(RETURN)d Ft(trap)i(is)h(executed)g(b)s(efore)
+f(execution)i(resumes.)57 b(When)37 b(a)f(function)g(completes,)150
+3682 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 Fs(#)p Ft(')g(are)h(restored)
+f(to)h(the)150 3792 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 Fs(return)p Ft(,)150 3902 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 4011 y(of)h(the)f(last)h
+(command)f(executed)i(b)s(efore)e(the)g Fs(return)p Ft(.)275
+4162 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 Fs(local)f Ft(builtin.)40
+b(These)29 b(v)-5 b(ariables)150 4271 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
+4422 y(F)-8 b(unction)38 b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s
+(e)e(listed)h(with)f(the)h(`)p Fs(-f)p Ft(')f(option)h(to)h(the)e
+Fs(declare)f Ft(or)150 4532 y Fs(typeset)d Ft(builtin)h(commands)h
+(\(see)h(Section)g(4.2)g([Bash)f(Builtins],)i(page)f(39\).)55
+b(The)35 b(`)p Fs(-F)p Ft(')g(option)g(to)150 4641 y
+Fs(declare)f Ft(or)i Fs(typeset)e Ft(will)i(list)h(the)f(function)g
+(names)g(only)g(\(and)g(optionally)h(the)f(source)g(\014le)h(and)150
+4751 y(line)c(n)m(um)m(b)s(er,)g(if)f(the)h Fs(extdebug)e
+Ft(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 4861 y(subshells)f
+(automatically)37 b(ha)m(v)m(e)d(them)g(de\014ned)e(with)h(the)g(`)p
+Fs(-f)p Ft(')h(option)g(to)g(the)f Fs(export)f Ft(builtin)h(\(see)150
+4970 y(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(33\).)47
+b(Note)33 b(that)g(shell)f(functions)g(and)f(v)-5 b(ariables)33
+b(with)150 5080 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 5189 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 5340 y(F)-8 b(unctions)30
+b(ma)m(y)h(b)s(e)f(recursiv)m(e.)41 b(No)31 b(limit)g(is)g(placed)g(on)
+f(the)g(n)m(um)m(b)s(er)g(of)g(recursiv)m(e)h(calls.)p
+eop end
 %%Page: 15 21
-15 20 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2246 b(15)150 299 y Fr(3.4)68
-b(Shell)45 b(P)l(arameters)275 544 y Ft(A)32 b Fq(parameter)40
-b Ft(is)31 b(an)i(en)m(tit)m(y)g(that)g(stores)g(v)-5
-b(alues.)47 b(It)33 b(can)g(b)s(e)e(a)i Fs(name)p Ft(,)g(a)g(n)m(um)m
-(b)s(er,)f(or)g(one)h(of)g(the)150 654 y(sp)s(ecial)g(c)m(haracters)j
-(listed)e(b)s(elo)m(w.)52 b(A)35 b Fq(v)-5 b(ariable)39
-b Ft(is)33 b(a)i(parameter)h(denoted)e(b)m(y)h(a)g Fs(name)p
+TeXDict begin 15 20 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(15)150 299
+y Fr(3.4)68 b(Shell)45 b(P)l(arameters)275 544 y Ft(A)32
+b Fq(parameter)40 b Ft(is)32 b(an)h(en)m(tit)m(y)h(that)f(stores)g(v)-5
+b(alues.)48 b(It)33 b(can)g(b)s(e)e(a)i Fs(name)p Ft(,)g(a)g(n)m(um)m
+(b)s(er,)f(or)g(one)h(of)g(the)150 654 y(sp)s(ecial)i(c)m(haracters)h
+(listed)g(b)s(elo)m(w.)53 b(A)35 b Fq(v)-5 b(ariable)41
+b Ft(is)34 b(a)h(parameter)h(denoted)e(b)m(y)h(a)g Fs(name)p
 Ft(.)52 b(A)35 b(v)-5 b(ariable)150 764 y(has)29 b(a)h
-Fq(v)-5 b(alue)34 b Ft(and)28 b(zero)j(or)e(more)g Fq(attributes)p
-Ft(.)40 b(A)m(ttributes)29 b(are)h(assigned)f(using)f(the)h
+Fq(v)-5 b(alue)35 b Ft(and)28 b(zero)j(or)e(more)g Fq(attributes)p
+Ft(.)41 b(A)m(ttributes)30 b(are)g(assigned)g(using)f(the)g
 Fs(declare)e Ft(builtin)150 873 y(command)22 b(\(see)h(the)f
-(description)e(of)i(the)g Fs(declare)f Ft(builtin)d(in)j(Section)h(4.2)
-h([Bash)f(Builtins],)g(page)g(39\).)275 1009 y(A)28 b(parameter)h(is)f
-(set)h(if)e(it)h(has)g(b)s(een)g(assigned)g(a)h(v)-5
-b(alue.)39 b(The)28 b(n)m(ull)f(string)g(is)h(a)h(v)-5
-b(alid)26 b(v)-5 b(alue.)40 b(Once)150 1119 y(a)31 b(v)-5
-b(ariable)29 b(is)g(set,)j(it)d(ma)m(y)i(b)s(e)f(unset)g(only)g(b)m(y)g
-(using)f(the)h Fs(unset)f Ft(builtin)e(command.)275 1254
-y(A)j(v)-5 b(ariable)29 b(ma)m(y)i(b)s(e)f(assigned)f(to)j(b)m(y)e(a)h
+(description)g(of)g(the)g Fs(declare)f Ft(builtin)g(in)h(Section)h(4.2)
+g([Bash)f(Builtins],)j(page)d(39\).)275 1009 y(A)28 b(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 1119 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 Fs(unset)f Ft(builtin)h(command.)275 1254
+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 1390 y Fj(name)11
 b Fs(=[)p Fj(value)g Fs(])150 1526 y Ft(If)34 b Fq(v)-5
-b(alue)39 b Ft(is)34 b(not)h(giv)m(en,)g(the)g(v)-5 b(ariable)33
-b(is)h(assigned)g(the)g(n)m(ull)f(string.)52 b(All)33
-b Fq(v)-5 b(alue)5 b Ft(s)34 b(undergo)g(tilde)f(ex-)150
-1636 y(pansion,)i(parameter)g(and)f(v)-5 b(ariable)34
-b(expansion,)g(command)h(substitution,)f(arithmetic)g(expansion,)150
-1745 y(and)40 b(quote)h(remo)m(v)-5 b(al)41 b(\(detailed)g(b)s(elo)m
-(w\).)71 b(If)40 b(the)h(v)-5 b(ariable)39 b(has)i(its)f
-Fs(integer)f Ft(attribute)h(set,)k(then)150 1855 y Fq(v)-5
-b(alue)37 b Ft(is)32 b(ev)-5 b(aluated)33 b(as)g(an)g(arithmetic)f
-(expression)g(ev)m(en)i(if)d(the)i Fs($\(\(...)o(\)\))f
-Ft(expansion)g(is)g(not)h(used)150 1965 y(\(see)e(Section)f(3.5.5)j
-([Arithmetic)c(Expansion],)g(page)i(21\).)42 b(W)-8 b(ord)31
-b(splitting)d(is)i(not)g(p)s(erformed,)f(with)150 2074
-y(the)35 b(exception)g(of)g Fs("$@")f Ft(as)h(explained)e(b)s(elo)m(w.)
-53 b(Filename)34 b(expansion)g(is)g(not)h(p)s(erformed.)53
-b(Assign-)150 2184 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)f(app)s
-(ear)g(as)g(argumen)m(ts)h(to)g(the)g Fs(alias)p Ft(,)e
-Fs(declare)p Ft(,)g Fs(typeset)p Ft(,)g Fs(export)p Ft(,)150
-2293 y Fs(readonly)p Ft(,)d(and)i Fs(local)f Ft(builtin)e(commands.)150
+b(alue)40 b Ft(is)35 b(not)g(giv)m(en,)h(the)f(v)-5 b(ariable)35
+b(is)g(assigned)g(the)f(n)m(ull)h(string.)53 b(All)35
+b Fq(v)-5 b(alue)5 b Ft(s)35 b(undergo)f(tilde)h(ex-)150
+1636 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36
+b(expansion,)f(command)g(substitution,)h(arithmetic)g(expansion,)150
+1745 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).)
+72 b(If)40 b(the)h(v)-5 b(ariable)41 b(has)g(its)g Fs(integer)e
+Ft(attribute)i(set,)j(then)150 1855 y Fq(v)-5 b(alue)38
+b Ft(is)33 b(ev)-5 b(aluated)34 b(as)f(an)g(arithmetic)h(expression)f
+(ev)m(en)h(if)e(the)h Fs($\(\(...)o(\)\))f Ft(expansion)h(is)g(not)g
+(used)150 1965 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f
+(page)h(21\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s
+(erformed,)f(with)150 2074 y(the)35 b(exception)h(of)f
+Fs("$@")f Ft(as)h(explained)g(b)s(elo)m(w.)54 b(Filename)36
+b(expansion)f(is)g(not)g(p)s(erformed.)53 b(Assign-)150
+2184 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s(ear)f(as)g
+(argumen)m(ts)h(to)g(the)g Fs(alias)p Ft(,)e Fs(declare)p
+Ft(,)g Fs(typeset)p Ft(,)g Fs(export)p Ft(,)150 2293
+y Fs(readonly)p Ft(,)d(and)i Fs(local)f Ft(builtin)h(commands.)150
 2520 y Fk(3.4.1)63 b(P)m(ositional)41 b(P)m(arameters)275
-2766 y Ft(A)36 b Fq(p)s(ositional)f(parameter)44 b Ft(is)36
-b(a)h(parameter)g(denoted)g(b)m(y)g(one)g(or)g(more)g(digits,)g(other)g
-(than)g(the)150 2875 y(single)i(digit)f Fs(0)p Ft(.)69
-b(P)m(ositional)39 b(parameters)i(are)f(assigned)f(from)h(the)g
-(shell's)e(argumen)m(ts)i(when)f(it)h(is)150 2985 y(in)m(v)m(ok)m(ed,)f
-(and)e(ma)m(y)g(b)s(e)g(reassigned)f(using)f(the)j Fs(set)e
-Ft(builtin)d(command.)61 b(P)m(ositional)36 b(parameter)h
+2766 y Ft(A)36 b Fq(p)s(ositional)i(parameter)44 b Ft(is)37
+b(a)g(parameter)g(denoted)g(b)m(y)g(one)g(or)g(more)g(digits,)i(other)e
+(than)g(the)150 2875 y(single)k(digit)f Fs(0)p Ft(.)69
+b(P)m(ositional)42 b(parameters)f(are)f(assigned)g(from)g(the)g
+(shell's)g(argumen)m(ts)g(when)f(it)i(is)150 2985 y(in)m(v)m(ok)m(ed,)f
+(and)d(ma)m(y)g(b)s(e)g(reassigned)g(using)f(the)i Fs(set)e
+Ft(builtin)g(command.)61 b(P)m(ositional)39 b(parameter)e
 Fs(N)150 3094 y Ft(ma)m(y)27 b(b)s(e)g(referenced)f(as)h
-Fs(${N})p Ft(,)g(or)g(as)g Fs($N)f Ft(when)g Fs(N)g Ft(consists)h(of)g
-(a)g(single)e(digit.)39 b(P)m(ositional)26 b(parameters)150
-3204 y(ma)m(y)32 b(not)f(b)s(e)g(assigned)g(to)h(with)e(assignmen)m(t)h
+Fs(${N})p Ft(,)g(or)g(as)g Fs($N)f Ft(when)g Fs(N)g Ft(consists)i(of)f
+(a)g(single)g(digit.)41 b(P)m(ositional)29 b(parameters)150
+3204 y(ma)m(y)j(not)f(b)s(e)g(assigned)h(to)g(with)f(assignmen)m(t)h
 (statemen)m(ts.)45 b(The)30 b Fs(set)h Ft(and)g Fs(shift)e
-Ft(builtins)f(are)k(used)150 3314 y(to)h(set)f(and)f(unset)h(them)g
-(\(see)h(Chapter)e(4)h([Shell)e(Builtin)g(Commands],)h(page)i(33\).)47
+Ft(builtins)i(are)h(used)150 3314 y(to)h(set)f(and)f(unset)h(them)g
+(\(see)h(Chapter)e(4)h([Shell)g(Builtin)h(Commands],)e(page)i(33\).)47
 b(The)31 b(p)s(ositional)150 3423 y(parameters)24 b(are)g(temp)s
-(orarily)e(replaced)i(when)e(a)j(shell)d(function)g(is)h(executed)i
-(\(see)f(Section)g(3.3)h([Shell)150 3533 y(F)-8 b(unctions],)30
-b(page)i(13\).)275 3669 y(When)27 b(a)i(p)s(ositional)d(parameter)j
-(consisting)d(of)j(more)f(than)g(a)g(single)f(digit)g(is)g(expanded,)h
-(it)g(m)m(ust)150 3778 y(b)s(e)i(enclosed)g(in)f(braces.)150
+(orarily)g(replaced)h(when)d(a)j(shell)f(function)f(is)h(executed)h
+(\(see)f(Section)h(3.3)g([Shell)150 3533 y(F)-8 b(unctions],)31
+b(page)h(13\).)275 3669 y(When)27 b(a)i(p)s(ositional)g(parameter)g
+(consisting)f(of)h(more)f(than)g(a)g(single)h(digit)g(is)f(expanded,)g
+(it)h(m)m(ust)150 3778 y(b)s(e)h(enclosed)h(in)f(braces.)150
 4005 y Fk(3.4.2)63 b(Sp)s(ecial)41 b(P)m(arameters)275
-4251 y Ft(The)27 b(shell)f(treats)j(sev)m(eral)f(parameters)h(sp)s
-(ecially)-8 b(.)38 b(These)28 b(parameters)g(ma)m(y)g(only)f(b)s(e)h
-(referenced;)150 4360 y(assignmen)m(t)i(to)h(them)g(is)e(not)i(allo)m
+4251 y Ft(The)27 b(shell)h(treats)h(sev)m(eral)g(parameters)g(sp)s
+(ecially)-8 b(.)41 b(These)28 b(parameters)g(ma)m(y)g(only)g(b)s(e)g
+(referenced;)150 4360 y(assignmen)m(t)j(to)g(them)g(is)f(not)h(allo)m
 (w)m(ed.)150 4522 y Fs(*)432 b Ft(Expands)29 b(to)h(the)h(p)s
-(ositional)c(parameters,)k(starting)f(from)f(one.)41
-b(When)30 b(the)g(expansion)630 4631 y(o)s(ccurs)e(within)d(double)i
-(quotes,)i(it)f(expands)f(to)i(a)f(single)f(w)m(ord)h(with)f(the)h(v)-5
-b(alue)28 b(of)g(eac)m(h)630 4741 y(parameter)i(separated)g(b)m(y)f
-(the)g(\014rst)g(c)m(haracter)i(of)e(the)h Fs(IFS)e Ft(sp)s(ecial)g(v)
--5 b(ariable.)39 b(That)30 b(is,)630 4850 y Fs("$*")h
-Ft(is)h(equiv)-5 b(alen)m(t)31 b(to)j Fs("$1)p Fj(c)11
+(ositional)f(parameters,)h(starting)g(from)e(one.)41
+b(When)30 b(the)g(expansion)630 4631 y(o)s(ccurs)e(within)f(double)h
+(quotes,)h(it)g(expands)e(to)i(a)f(single)h(w)m(ord)f(with)g(the)g(v)-5
+b(alue)29 b(of)f(eac)m(h)630 4741 y(parameter)i(separated)g(b)m(y)f
+(the)g(\014rst)g(c)m(haracter)i(of)e(the)h Fs(IFS)e Ft(sp)s(ecial)i(v)
+-5 b(ariable.)41 b(That)30 b(is,)630 4850 y Fs("$*")h
+Ft(is)i(equiv)-5 b(alen)m(t)33 b(to)h Fs("$1)p Fj(c)11
 b Fs($2)p Fj(c)g Fs(...)l(")p Ft(,)33 b(where)f Fq(c)38
-b Ft(is)31 b(the)i(\014rst)e(c)m(haracter)j(of)f(the)f(v)-5
-b(alue)630 4960 y(of)30 b(the)g Fs(IFS)g Ft(v)-5 b(ariable.)39
-b(If)30 b Fs(IFS)f Ft(is)g(unset,)h(the)g(parameters)g(are)h(separated)
-f(b)m(y)g(spaces.)41 b(If)630 5070 y Fs(IFS)29 b Ft(is)h(n)m(ull,)e
-(the)j(parameters)g(are)f(joined)g(without)f(in)m(terv)m(ening)h
+b Ft(is)32 b(the)h(\014rst)e(c)m(haracter)j(of)f(the)f(v)-5
+b(alue)630 4960 y(of)30 b(the)g Fs(IFS)g Ft(v)-5 b(ariable.)41
+b(If)30 b Fs(IFS)f Ft(is)h(unset,)g(the)g(parameters)g(are)h(separated)
+f(b)m(y)g(spaces.)41 b(If)630 5070 y Fs(IFS)29 b Ft(is)i(n)m(ull,)f
+(the)h(parameters)g(are)f(joined)h(without)f(in)m(terv)m(ening)i
 (separators.)150 5230 y Fs(@)432 b Ft(Expands)39 b(to)i(the)g(p)s
-(ositional)d(parameters,)44 b(starting)c(from)g(one.)71
-b(When)40 b(the)h(expan-)630 5340 y(sion)30 b(o)s(ccurs)h(within)d
-(double)i(quotes,)i(eac)m(h)g(parameter)g(expands)e(to)i(a)f(separate)h
-(w)m(ord.)p eop
+(ositional)g(parameters,)j(starting)d(from)f(one.)71
+b(When)40 b(the)h(expan-)630 5340 y(sion)31 b(o)s(ccurs)g(within)f
+(double)h(quotes,)h(eac)m(h)g(parameter)g(expands)e(to)i(a)f(separate)h
+(w)m(ord.)p eop end
 %%Page: 16 22
-16 21 bop 150 -116 a Ft(16)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y(That)38 b(is,)i Fs("$@")d Ft(is)h(equiv)-5 b(alen)m(t)38
-b(to)h Fs("$1")29 b("$2")g(...)o Ft(.)65 b(When)38 b(there)h(are)g(no)f
-(p)s(ositional)630 408 y(parameters,)31 b Fs("$@")e Ft(and)h
-Fs($@)g Ft(expand)f(to)i(nothing)f(\(i.e.,)h(they)f(are)h(remo)m(v)m
-(ed\).)150 568 y Fs(#)432 b Ft(Expands)29 b(to)i(the)g(n)m(um)m(b)s(er)
-e(of)h(p)s(ositional)e(parameters)j(in)e(decimal.)150
-727 y Fs(?)432 b Ft(Expands)29 b(to)i(the)g(exit)f(status)h(of)f(the)h
-(most)f(recen)m(tly)h(executed)g(foreground)f(pip)s(eline.)150
-886 y Fs(-)432 b Ft(\(A)31 b(h)m(yphen.\))42 b(Expands)30
-b(to)h(the)g(curren)m(t)g(option)g(\015ags)g(as)g(sp)s(eci\014ed)e(up)s
-(on)h(in)m(v)m(o)s(cation,)630 996 y(b)m(y)35 b(the)h
-Fs(set)e Ft(builtin)e(command,)k(or)g(those)g(set)f(b)m(y)h(the)f
-(shell)f(itself)g(\(suc)m(h)h(as)h(the)f(`)p Fs(-i)p
-Ft(')630 1105 y(option\).)150 1264 y Fs($)432 b Ft(Expands)39
-b(to)j(the)f(pro)s(cess)f Fl(id)h Ft(of)g(the)g(shell.)71
-b(In)40 b(a)h Fs(\(\))f Ft(subshell,)h(it)f(expands)g(to)i(the)630
-1374 y(pro)s(cess)30 b Fl(id)g Ft(of)h(the)g(in)m(v)m(oking)e(shell,)g
-(not)i(the)f(subshell.)150 1533 y Fs(!)432 b Ft(Expands)39
-b(to)i(the)g(pro)s(cess)e Fl(id)i Ft(of)f(the)h(most)g(recen)m(tly)f
-(executed)h(bac)m(kground)g(\(asyn-)630 1643 y(c)m(hronous\))30
+TeXDict begin 16 21 bop 150 -116 a Ft(16)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(That)38 b(is,)j Fs("$@")c
+Ft(is)i(equiv)-5 b(alen)m(t)40 b(to)f Fs("$1")29 b("$2")g(...)o
+Ft(.)65 b(When)38 b(there)h(are)g(no)f(p)s(ositional)630
+408 y(parameters,)31 b Fs("$@")e Ft(and)h Fs($@)g Ft(expand)f(to)i
+(nothing)g(\(i.e.,)h(they)e(are)h(remo)m(v)m(ed\).)150
+568 y Fs(#)432 b Ft(Expands)29 b(to)i(the)g(n)m(um)m(b)s(er)e(of)h(p)s
+(ositional)h(parameters)g(in)f(decimal.)150 727 y Fs(?)432
+b Ft(Expands)29 b(to)i(the)g(exit)g(status)g(of)f(the)h(most)f(recen)m
+(tly)i(executed)f(foreground)f(pip)s(eline.)150 886 y
+Fs(-)432 b Ft(\(A)31 b(h)m(yphen.\))42 b(Expands)30 b(to)h(the)g
+(curren)m(t)g(option)h(\015ags)f(as)g(sp)s(eci\014ed)f(up)s(on)g(in)m
+(v)m(o)s(cation,)630 996 y(b)m(y)35 b(the)h Fs(set)e
+Ft(builtin)h(command,)h(or)g(those)g(set)f(b)m(y)h(the)f(shell)h
+(itself)g(\(suc)m(h)f(as)h(the)f(`)p Fs(-i)p Ft(')630
+1105 y(option\).)150 1264 y Fs($)432 b Ft(Expands)39
+b(to)j(the)f(pro)s(cess)f Fl(id)h Ft(of)g(the)g(shell.)73
+b(In)40 b(a)h Fs(\(\))f Ft(subshell,)j(it)e(expands)f(to)i(the)630
+1374 y(pro)s(cess)30 b Fl(id)g Ft(of)h(the)g(in)m(v)m(oking)g(shell,)g
+(not)g(the)f(subshell.)150 1533 y Fs(!)432 b Ft(Expands)39
+b(to)i(the)g(pro)s(cess)e Fl(id)i Ft(of)f(the)h(most)g(recen)m(tly)g
+(executed)g(bac)m(kground)g(\(asyn-)630 1643 y(c)m(hronous\))30
 b(command.)150 1802 y Fs(0)432 b Ft(Expands)20 b(to)j(the)f(name)g(of)g
-(the)g(shell)e(or)h(shell)f(script.)37 b(This)20 b(is)h(set)h(at)h
-(shell)d(initialization.)630 1911 y(If)44 b(Bash)g(is)f(in)m(v)m(ok)m
-(ed)i(with)e(a)h(\014le)f(of)i(commands)e(\(see)j(Section)e(3.8)h
-([Shell)d(Scripts],)630 2021 y(page)d(31\),)i Fs($0)d
-Ft(is)f(set)h(to)h(the)f(name)g(of)g(that)h(\014le.)63
-b(If)37 b(Bash)i(is)e(started)h(with)f(the)h(`)p Fs(-c)p
-Ft(')630 2131 y(option)h(\(see)h(Section)g(6.1)g([In)m(v)m(oking)g
-(Bash],)i(page)e(63\),)j(then)d Fs($0)e Ft(is)h(set)h(to)g(the)g
-(\014rst)630 2240 y(argumen)m(t)31 b(after)g(the)g(string)f(to)h(b)s(e)
-f(executed,)i(if)e(one)h(is)e(presen)m(t.)42 b(Otherwise,)30
-b(it)g(is)f(set)630 2350 y(to)i(the)g(\014lename)e(used)h(to)h(in)m(v)m
-(ok)m(e)g(Bash,)g(as)g(giv)m(en)f(b)m(y)g(argumen)m(t)h(zero.)150
+(the)g(shell)g(or)f(shell)h(script.)38 b(This)21 b(is)h(set)g(at)h
+(shell)f(initialization.)630 1911 y(If)44 b(Bash)g(is)g(in)m(v)m(ok)m
+(ed)i(with)e(a)g(\014le)g(of)h(commands)e(\(see)j(Section)f(3.8)g
+([Shell)f(Scripts],)630 2021 y(page)39 b(31\),)i Fs($0)d
+Ft(is)g(set)g(to)h(the)f(name)g(of)g(that)h(\014le.)64
+b(If)37 b(Bash)i(is)f(started)g(with)g(the)g(`)p Fs(-c)p
+Ft(')630 2131 y(option)i(\(see)g(Section)h(6.1)f([In)m(v)m(oking)h
+(Bash],)h(page)e(63\),)j(then)d Fs($0)e Ft(is)i(set)g(to)g(the)g
+(\014rst)630 2240 y(argumen)m(t)31 b(after)g(the)g(string)g(to)g(b)s(e)
+f(executed,)i(if)f(one)g(is)f(presen)m(t.)42 b(Otherwise,)31
+b(it)g(is)f(set)630 2350 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
 2509 y Fs(_)432 b Ft(\(An)34 b(underscore.\))50 b(A)m(t)34
-b(shell)e(startup,)j(set)f(to)g(the)g(absolute)f(\014lename)g(of)h(the)
-g(shell)e(or)630 2619 y(shell)j(script)i(b)s(eing)e(executed)j(as)g
-(passed)f(in)f(the)h(argumen)m(t)h(list.)60 b(Subsequen)m(tly)-8
-b(,)37 b(ex-)630 2728 y(pands)f(to)i(the)g(last)f(argumen)m(t)h(to)h
-(the)e(previous)f(command,)j(after)f(expansion.)61 b(Also)630
-2838 y(set)30 b(to)f(the)h(full)c(pathname)j(of)h(eac)m(h)g(command)f
-(executed)h(and)e(placed)h(in)e(the)j(en)m(viron-)630
+b(shell)g(startup,)h(set)f(to)g(the)g(absolute)g(\014lename)g(of)g(the)
+g(shell)g(or)630 2619 y(shell)j(script)h(b)s(eing)e(executed)i(as)g
+(passed)f(in)g(the)g(argumen)m(t)h(list.)62 b(Subsequen)m(tly)-8
+b(,)38 b(ex-)630 2728 y(pands)e(to)i(the)g(last)g(argumen)m(t)g(to)h
+(the)e(previous)g(command,)i(after)f(expansion.)62 b(Also)630
+2838 y(set)30 b(to)f(the)h(full)e(pathname)h(of)h(eac)m(h)g(command)f
+(executed)h(and)e(placed)i(in)e(the)i(en)m(viron-)630
 2947 y(men)m(t)37 b(exp)s(orted)f(to)h(that)h(command.)58
-b(When)37 b(c)m(hec)m(king)g(mail,)g(this)e(parameter)i(holds)630
-3057 y(the)31 b(name)f(of)h(the)f(mail)f(\014le.)150
-3314 y Fr(3.5)68 b(Shell)45 b(Expansions)275 3558 y Ft(Expansion)28
-b(is)h(p)s(erformed)f(on)i(the)g(command)g(line)e(after)j(it)e(has)h(b)
-s(een)f(split)f(in)m(to)i Fs(token)p Ft(s.)39 b(There)150
-3667 y(are)31 b(sev)m(en)g(kinds)d(of)j(expansion)e(p)s(erformed:)225
+b(When)37 b(c)m(hec)m(king)h(mail,)h(this)d(parameter)h(holds)630
+3057 y(the)31 b(name)f(of)h(the)f(mail)h(\014le.)150
+3314 y Fr(3.5)68 b(Shell)45 b(Expansions)275 3558 y Ft(Expansion)29
+b(is)h(p)s(erformed)e(on)i(the)g(command)g(line)g(after)h(it)f(has)g(b)
+s(een)f(split)h(in)m(to)h Fs(token)p Ft(s.)39 b(There)150
+3667 y(are)31 b(sev)m(en)g(kinds)e(of)i(expansion)f(p)s(erformed:)225
 3802 y Fp(\017)60 b Ft(brace)31 b(expansion)225 3936
-y Fp(\017)60 b Ft(tilde)29 b(expansion)225 4071 y Fp(\017)60
-b Ft(parameter)31 b(and)f(v)-5 b(ariable)29 b(expansion)225
+y Fp(\017)60 b Ft(tilde)31 b(expansion)225 4071 y Fp(\017)60
+b Ft(parameter)31 b(and)f(v)-5 b(ariable)31 b(expansion)225
 4205 y Fp(\017)60 b Ft(command)30 b(substitution)225
-4339 y Fp(\017)60 b Ft(arithmetic)30 b(expansion)225
+4339 y Fp(\017)60 b Ft(arithmetic)32 b(expansion)225
 4474 y Fp(\017)60 b Ft(w)m(ord)30 b(splitting)225 4608
-y Fp(\017)60 b Ft(\014lename)30 b(expansion)275 4767
-y(The)j(order)g(of)h(expansions)f(is:)46 b(brace)34 b(expansion,)g
-(tilde)f(expansion,)g(parameter,)j(v)-5 b(ariable,)34
-b(and)150 4877 y(arithmetic)44 b(expansion)g(and)h(command)f
-(substitution)f(\(done)i(in)f(a)h(left-to-righ)m(t)h(fashion\),)i(w)m
-(ord)150 4986 y(splitting,)28 b(and)i(\014lename)g(expansion.)275
-5121 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,)k(there)e(is)e
-(an)i(additional)d(expansion)h(a)m(v)-5 b(ailable:)66
-b Fq(pro)s(cess)150 5230 y(substitution)p Ft(.)59 b(This)35
-b(is)h(p)s(erformed)g(at)i(the)f(same)h(time)e(as)i(parameter,)h(v)-5
-b(ariable,)38 b(and)f(arithmetic)150 5340 y(expansion)29
-b(and)h(command)g(substitution.)p eop
+y Fp(\017)60 b Ft(\014lename)31 b(expansion)275 4767
+y(The)i(order)g(of)h(expansions)g(is:)47 b(brace)34 b(expansion,)h
+(tilde)g(expansion,)f(parameter,)i(v)-5 b(ariable,)36
+b(and)150 4877 y(arithmetic)46 b(expansion)f(and)g(command)f
+(substitution)h(\(done)g(in)g(a)g(left-to-righ)m(t)j(fashion\),)h(w)m
+(ord)150 4986 y(splitting,)31 b(and)f(\014lename)h(expansion.)275
+5121 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 Fq(pro)s(cess)150 5230 y(substitution)p
+Ft(.)61 b(This)36 b(is)h(p)s(erformed)f(at)i(the)f(same)h(time)f(as)h
+(parameter,)h(v)-5 b(ariable,)40 b(and)d(arithmetic)150
+5340 y(expansion)30 b(and)g(command)g(substitution.)p
+eop end
 %%Page: 17 23
-17 22 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2246 b(17)275 299 y(Only)34
-b(brace)j(expansion,)g(w)m(ord)f(splitting,)g(and)g(\014lename)f
-(expansion)g(can)i(c)m(hange)h(the)e(n)m(um)m(b)s(er)150
-408 y(of)h(w)m(ords)f(of)g(the)h(expansion;)h(other)f(expansions)e
-(expand)h(a)h(single)e(w)m(ord)h(to)h(a)g(single)e(w)m(ord.)58
-b(The)150 518 y(only)31 b(exceptions)i(to)g(this)e(are)i(the)f
-(expansions)f(of)i Fs("$@")e Ft(\(see)i(Section)f(3.4.2)i([Sp)s(ecial)d
-(P)m(arameters],)150 628 y(page)g(15\))h(and)d Fs("${)p
-Fj(name)11 b Fs([@]}")27 b Ft(\(see)k(Section)g(6.7)g([Arra)m(ys],)g
-(page)g(72\).)275 787 y(After)41 b(all)g(expansions,)i
-Fs(quote)29 b(removal)40 b Ft(\(see)i(Section)g(3.5.9)h([Quote)f(Remo)m
-(v)-5 b(al],)46 b(page)c(24\))h(is)150 897 y(p)s(erformed.)150
+TeXDict begin 17 22 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)275 299
+y(Only)35 b(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
+408 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 518 y(only)32 b(exceptions)i(to)f(this)f(are)h(the)f
+(expansions)g(of)h Fs("$@")e Ft(\(see)i(Section)g(3.4.2)h([Sp)s(ecial)f
+(P)m(arameters],)150 628 y(page)e(15\))h(and)d Fs("${)p
+Fj(name)11 b Fs([@]}")27 b Ft(\(see)k(Section)h(6.7)f([Arra)m(ys],)g
+(page)g(72\).)275 787 y(After)41 b(all)i(expansions,)h
+Fs(quote)29 b(removal)40 b Ft(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m
+(v)-5 b(al],)47 b(page)42 b(24\))h(is)150 897 y(p)s(erformed.)150
 1172 y Fk(3.5.1)63 b(Brace)40 b(Expansion)275 1441 y
-Ft(Brace)21 b(expansion)f(is)g(a)h(mec)m(hanism)f(b)m(y)h(whic)m(h)e
-(arbitrary)h(strings)f(ma)m(y)j(b)s(e)e(generated.)38
-b(This)19 b(mec)m(h-)150 1551 y(anism)34 b(is)h(similar)d(to)k
-Fq(\014lename)f(expansion)f Ft(\(see)j(Section)e(3.5.8)i([Filename)e
-(Expansion],)g(page)h(22\),)150 1660 y(but)31 b(the)h(\014le)f(names)g
-(generated)i(need)f(not)g(exist.)44 b(P)m(atterns)33
+Ft(Brace)21 b(expansion)g(is)g(a)g(mec)m(hanism)g(b)m(y)g(whic)m(h)f
+(arbitrary)h(strings)f(ma)m(y)i(b)s(e)e(generated.)38
+b(This)20 b(mec)m(h-)150 1551 y(anism)35 b(is)h(similar)f(to)h
+Fq(\014lename)g(expansion)f Ft(\(see)i(Section)f(3.5.8)h([Filename)g
+(Expansion],)f(page)g(22\),)150 1660 y(but)31 b(the)h(\014le)g(names)f
+(generated)i(need)f(not)g(exist.)45 b(P)m(atterns)33
 b(to)f(b)s(e)f(brace)h(expanded)f(tak)m(e)i(the)f(form)150
-1770 y(of)26 b(an)f(optional)f Fq(pream)m(ble)p Ft(,)i(follo)m(w)m(ed)f
-(b)m(y)h(either)f(a)g(series)g(of)h(comma-separated)h(strings)d(or)h(a)
-h(sequnce)150 1879 y(expression)35 b(b)s(et)m(w)m(een)h(a)h(pair)d(of)j
-(braces,)g(follo)m(w)m(ed)f(b)m(y)g(an)g(optional)f Fq(p)s(ostscript)p
-Ft(.)56 b(The)36 b(pream)m(ble)f(is)150 1989 y(pre\014xed)28
-b(to)h(eac)m(h)h(string)e(con)m(tained)h(within)d(the)j(braces,)g(and)g
-(the)g(p)s(ostscript)e(is)h(then)g(app)s(ended)f(to)150
-2099 y(eac)m(h)32 b(resulting)c(string,)i(expanding)e(left)j(to)g(righ)
-m(t.)275 2258 y(Brace)37 b(expansions)e(ma)m(y)i(b)s(e)f(nested.)59
-b(The)36 b(results)f(of)i(eac)m(h)g(expanded)f(string)f(are)i(not)g
-(sorted;)150 2368 y(left)30 b(to)h(righ)m(t)f(order)g(is)f(preserv)m
+1770 y(of)26 b(an)f(optional)h Fq(pream)m(ble)p Ft(,)h(follo)m(w)m(ed)g
+(b)m(y)f(either)g(a)f(series)h(of)g(comma-separated)h(strings)e(or)g(a)
+h(sequnce)150 1879 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i
+(braces,)g(follo)m(w)m(ed)h(b)m(y)e(an)g(optional)h Fq(p)s(ostscript)p
+Ft(.)57 b(The)36 b(pream)m(ble)g(is)150 1989 y(pre\014xed)28
+b(to)h(eac)m(h)h(string)f(con)m(tained)h(within)e(the)h(braces,)g(and)g
+(the)g(p)s(ostscript)f(is)h(then)f(app)s(ended)f(to)150
+2099 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ)
+m(t.)275 2258 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59
+b(The)36 b(results)g(of)h(eac)m(h)g(expanded)f(string)g(are)h(not)g
+(sorted;)150 2368 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m
 (ed.)41 b(F)-8 b(or)31 b(example,)390 2528 y Fs(bash$)46
 b(echo)h(a{d,c,b}e)390 2637 y(ade)g(ace)g(abe)275 2797
-y Ft(A)24 b(sequence)h(expression)f(tak)m(es)i(the)f(form)f
+y Ft(A)24 b(sequence)h(expression)g(tak)m(es)h(the)f(form)f
 Fs({)p Fj(x)p Fs(..)p Fj(y)11 b Fs(})p Ft(,)23 b(where)i
-Fq(x)30 b Ft(and)24 b Fq(y)33 b Ft(are)25 b(either)f(in)m(tegers)h(or)f
-(single)150 2907 y(c)m(haracters.)43 b(When)30 b(in)m(tegers)h(are)g
-(supplied,)c(the)k(expression)e(expands)h(to)h(eac)m(h)h(n)m(um)m(b)s
+Fq(x)30 b Ft(and)24 b Fq(y)33 b Ft(are)25 b(either)g(in)m(tegers)h(or)e
+(single)150 2907 y(c)m(haracters.)43 b(When)30 b(in)m(tegers)i(are)f
+(supplied,)e(the)i(expression)f(expands)g(to)h(eac)m(h)h(n)m(um)m(b)s
 (er)d(b)s(et)m(w)m(een)i Fq(x)150 3016 y Ft(and)i Fq(y)p
-Ft(,)i(inclusiv)m(e.)50 b(When)34 b(c)m(haracters)h(are)f(supplied,)e
-(the)j(expression)d(expands)h(to)i(eac)m(h)g(c)m(haracter)150
-3126 y(lexicographically)28 b(b)s(et)m(w)m(een)j Fq(x)37
-b Ft(and)30 b Fq(y)p Ft(,)h(inclusiv)m(e.)39 b(Note)31
+Ft(,)i(inclusiv)m(e.)53 b(When)34 b(c)m(haracters)h(are)f(supplied,)g
+(the)h(expression)e(expands)g(to)i(eac)m(h)g(c)m(haracter)150
+3126 y(lexicographically)e(b)s(et)m(w)m(een)e Fq(x)37
+b Ft(and)30 b Fq(y)p Ft(,)h(inclusiv)m(e.)42 b(Note)31
 b(that)g(b)s(oth)f Fq(x)37 b Ft(and)30 b Fq(y)38 b Ft(m)m(ust)30
 b(b)s(e)g(of)h(the)g(same)150 3235 y(t)m(yp)s(e.)275
-3395 y(Brace)36 b(expansion)f(is)f(p)s(erformed)g(b)s(efore)h(an)m(y)h
-(other)g(expansions,)g(and)f(an)m(y)g(c)m(haracters)i(sp)s(ecial)150
-3505 y(to)32 b(other)g(expansions)f(are)h(preserv)m(ed)f(in)g(the)g
-(result.)44 b(It)32 b(is)f(strictly)f(textual.)45 b(Bash)32
-b(do)s(es)f(not)h(apply)150 3614 y(an)m(y)27 b(syn)m(tactic)h(in)m
-(terpretation)f(to)h(the)f(con)m(text)i(of)e(the)g(expansion)f(or)h
+3395 y(Brace)36 b(expansion)g(is)f(p)s(erformed)f(b)s(efore)h(an)m(y)h
+(other)g(expansions,)h(and)e(an)m(y)g(c)m(haracters)i(sp)s(ecial)150
+3505 y(to)32 b(other)g(expansions)g(are)g(preserv)m(ed)f(in)h(the)f
+(result.)45 b(It)32 b(is)g(strictly)g(textual.)46 b(Bash)32
+b(do)s(es)f(not)h(apply)150 3614 y(an)m(y)27 b(syn)m(tactic)i(in)m
+(terpretation)g(to)f(the)f(con)m(text)i(of)e(the)g(expansion)g(or)g
 (the)h(text)g(b)s(et)m(w)m(een)f(the)h(braces.)150 3724
-y(T)-8 b(o)37 b(a)m(v)m(oid)f(con\015icts)g(with)f(parameter)i
-(expansion,)f(the)h(string)e(`)p Fs(${)p Ft(')h(is)f(not)h(considered)f
-(eligible)f(for)150 3833 y(brace)d(expansion.)275 3993
-y(A)e(correctly-formed)h(brace)g(expansion)e(m)m(ust)i(con)m(tain)g
-(unquoted)f(op)s(ening)f(and)h(closing)g(braces,)150
-4103 y(and)j(at)i(least)f(one)g(unquoted)g(comma)g(or)g(a)h(v)-5
-b(alid)31 b(sequence)i(expression.)47 b(An)m(y)33 b(incorrectly)f
-(formed)150 4212 y(brace)f(expansion)e(is)g(left)h(unc)m(hanged.)275
+y(T)-8 b(o)37 b(a)m(v)m(oid)g(con\015icts)g(with)f(parameter)h
+(expansion,)g(the)g(string)f(`)p Fs(${)p Ft(')g(is)g(not)g(considered)g
+(eligible)i(for)150 3833 y(brace)31 b(expansion.)275
+3993 y(A)e(correctly-formed)i(brace)f(expansion)f(m)m(ust)h(con)m(tain)
+h(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150
+4103 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5
+b(alid)33 b(sequence)g(expression.)48 b(An)m(y)33 b(incorrectly)h
+(formed)150 4212 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275
 4372 y(A)25 b Fs({)g Ft(or)g(`)p Fs(,)p Ft(')g(ma)m(y)h(b)s(e)f(quoted)
-g(with)f(a)i(bac)m(kslash)e(to)i(prev)m(en)m(t)g(its)f(b)s(eing)f
-(considered)g(part)h(of)g(a)h(brace)150 4482 y(expression.)50
-b(T)-8 b(o)34 b(a)m(v)m(oid)h(con\015icts)e(with)g(parameter)h
-(expansion,)g(the)g(string)f(`)p Fs(${)p Ft(')h(is)f(not)h(considered)
-150 4591 y(eligible)28 b(for)i(brace)h(expansion.)275
-4751 y(This)e(construct)i(is)f(t)m(ypically)g(used)g(as)h(shorthand)f
-(when)g(the)h(common)g(pre\014x)f(of)h(the)g(strings)f(to)150
-4861 y(b)s(e)g(generated)h(is)f(longer)g(than)g(in)f(the)h(ab)s(o)m(v)m
+g(with)g(a)h(bac)m(kslash)f(to)h(prev)m(en)m(t)g(its)g(b)s(eing)f
+(considered)g(part)g(of)g(a)h(brace)150 4482 y(expression.)51
+b(T)-8 b(o)34 b(a)m(v)m(oid)i(con\015icts)e(with)g(parameter)g
+(expansion,)h(the)f(string)g(`)p Fs(${)p Ft(')g(is)g(not)g(considered)
+150 4591 y(eligible)e(for)e(brace)h(expansion.)275 4751
+y(This)f(construct)h(is)g(t)m(ypically)i(used)d(as)h(shorthand)f(when)g
+(the)h(common)g(pre\014x)f(of)h(the)g(strings)g(to)150
+4861 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m(v)m
 (e)i(example:)390 5020 y Fs(mkdir)46 b(/usr/local/src/bash/{old,n)o
 (ew,)o(dist)o(,bug)o(s})275 5180 y Ft(or)390 5340 y Fs(chown)g(root)h
 (/usr/{ucb/{ex,edit},lib/)o({ex?)o(.?*,)o(how)o(_ex})o(})p
-eop
+eop end
 %%Page: 18 24
-18 23 bop 150 -116 a Ft(18)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)275 541 y Ft(If)i(a)i(w)m(ord)
-e(b)s(egins)g(with)f(an)i(unquoted)f(tilde)g(c)m(haracter)j(\(`)p
-Fs(~)p Ft('\),)i(all)43 b(of)i(the)f(c)m(haracters)h(up)e(to)150
-651 y(the)35 b(\014rst)f(unquoted)f(slash)h(\(or)h(all)e(c)m
-(haracters,)k(if)d(there)h(is)e(no)i(unquoted)e(slash\))h(are)h
-(considered)f(a)150 760 y Fq(tilde-pre\014x)p Ft(.)53
-b(If)35 b(none)g(of)g(the)g(c)m(haracters)i(in)c(the)j(tilde-pre\014x)d
-(are)i(quoted,)i(the)e(c)m(haracters)i(in)d(the)150 870
-y(tilde-pre\014x)25 b(follo)m(wing)g(the)i(tilde)f(are)h(treated)h(as)f
-(a)g(p)s(ossible)d Fq(login)i(name)p Ft(.)39 b(If)27
-b(this)e(login)h(name)h(is)f(the)150 979 y(n)m(ull)j(string,)i(the)g
-(tilde)f(is)h(replaced)g(with)f(the)h(v)-5 b(alue)31
-b(of)g(the)h Fs(HOME)e Ft(shell)f(v)-5 b(ariable.)43
-b(If)31 b Fs(HOME)f Ft(is)g(unset,)150 1089 y(the)37
-b(home)f(directory)g(of)h(the)f(user)g(executing)h(the)g(shell)d(is)i
-(substituted)f(instead.)58 b(Otherwise,)37 b(the)150
-1198 y(tilde-pre\014x)28 b(is)i(replaced)g(with)f(the)h(home)h
-(directory)f(asso)s(ciated)g(with)f(the)i(sp)s(eci\014ed)e(login)g
-(name.)275 1331 y(If)j(the)h(tilde-pre\014x)d(is)i(`)p
-Fs(~+)p Ft(',)h(the)g(v)-5 b(alue)32 b(of)h(the)g(shell)e(v)-5
-b(ariable)32 b Fs(PWD)f Ft(replaces)i(the)g(tilde-pre\014x.)45
-b(If)150 1441 y(the)31 b(tilde-pre\014x)d(is)h(`)p Fs(~-)p
-Ft(',)i(the)f(v)-5 b(alue)30 b(of)h(the)f(shell)f(v)-5
-b(ariable)29 b Fs(OLDPWD)p Ft(,)g(if)g(it)h(is)g(set,)h(is)e
-(substituted.)275 1573 y(If)g(the)h(c)m(haracters)h(follo)m(wing)e(the)
-h(tilde)e(in)h(the)h(tilde-pre\014x)e(consist)h(of)h(a)h(n)m(um)m(b)s
+TeXDict begin 18 23 bop 150 -116 a Ft(18)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fk(3.5.2)63 b(Tilde)41
+b(Expansion)275 541 y Ft(If)i(a)i(w)m(ord)e(b)s(egins)h(with)f(an)h
+(unquoted)f(tilde)i(c)m(haracter)h(\(`)p Fs(~)p Ft('\),)i(all)d(of)g
+(the)f(c)m(haracters)h(up)e(to)150 651 y(the)35 b(\014rst)f(unquoted)f
+(slash)i(\(or)g(all)g(c)m(haracters,)i(if)e(there)g(is)f(no)h(unquoted)
+e(slash\))i(are)g(considered)g(a)150 760 y Fq(tilde-pre\014x)p
+Ft(.)55 b(If)35 b(none)g(of)g(the)g(c)m(haracters)i(in)d(the)i
+(tilde-pre\014x)f(are)g(quoted,)i(the)e(c)m(haracters)i(in)e(the)150
+870 y(tilde-pre\014x)27 b(follo)m(wing)h(the)f(tilde)h(are)f(treated)h
+(as)f(a)g(p)s(ossible)f Fq(login)i(name)p Ft(.)39 b(If)27
+b(this)f(login)i(name)f(is)g(the)150 979 y(n)m(ull)k(string,)h(the)f
+(tilde)h(is)g(replaced)g(with)f(the)g(v)-5 b(alue)32
+b(of)f(the)h Fs(HOME)e Ft(shell)h(v)-5 b(ariable.)45
+b(If)31 b Fs(HOME)f Ft(is)h(unset,)150 1089 y(the)37
+b(home)f(directory)h(of)g(the)f(user)g(executing)i(the)f(shell)f(is)h
+(substituted)f(instead.)59 b(Otherwise,)38 b(the)150
+1198 y(tilde-pre\014x)30 b(is)h(replaced)g(with)f(the)g(home)h
+(directory)g(asso)s(ciated)g(with)f(the)h(sp)s(eci\014ed)f(login)h
+(name.)275 1331 y(If)h(the)h(tilde-pre\014x)f(is)h(`)p
+Fs(~+)p Ft(',)g(the)g(v)-5 b(alue)33 b(of)g(the)g(shell)g(v)-5
+b(ariable)34 b Fs(PWD)d Ft(replaces)j(the)f(tilde-pre\014x.)47
+b(If)150 1441 y(the)31 b(tilde-pre\014x)f(is)g(`)p Fs(~-)p
+Ft(',)h(the)f(v)-5 b(alue)31 b(of)g(the)f(shell)h(v)-5
+b(ariable)31 b Fs(OLDPWD)p Ft(,)e(if)h(it)h(is)g(set,)g(is)f
+(substituted.)275 1573 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the)
+e(tilde)g(in)g(the)g(tilde-pre\014x)g(consist)g(of)g(a)h(n)m(um)m(b)s
 (er)d Fq(N)p Ft(,)j(optionally)150 1683 y(pre\014xed)22
 b(b)m(y)h(a)h(`)p Fs(+)p Ft(')f(or)h(a)f(`)p Fs(-)p Ft(',)j(the)d
-(tilde-pre\014x)e(is)i(replaced)f(with)g(the)i(corresp)s(onding)d
-(elemen)m(t)j(from)f(the)150 1792 y(directory)35 b(stac)m(k,)j(as)e(it)
-f(w)m(ould)f(b)s(e)h(displa)m(y)m(ed)f(b)m(y)i(the)f
-Fs(dirs)g Ft(builtin)d(in)m(v)m(ok)m(ed)k(with)e(the)h(c)m(haracters)
-150 1902 y(follo)m(wing)i(tilde)g(in)h(the)g(tilde-pre\014x)f(as)i(an)f
-(argumen)m(t)h(\(see)h(Section)e(6.8)i([The)e(Directory)h(Stac)m(k],)
-150 2011 y(page)d(73\).)57 b(If)35 b(the)g(tilde-pre\014x,)g(sans)g
-(the)h(tilde,)f(consists)g(of)h(a)f(n)m(um)m(b)s(er)f(without)h(a)g
-(leading)f(`)p Fs(+)p Ft(')i(or)150 2121 y(`)p Fs(-)p
-Ft(',)31 b(`)p Fs(+)p Ft(')f(is)g(assumed.)275 2253 y(If)f(the)i(login)
-e(name)i(is)e(in)m(v)-5 b(alid,)28 b(or)j(the)f(tilde)f(expansion)g
-(fails,)h(the)g(w)m(ord)g(is)g(left)g(unc)m(hanged.)275
-2386 y(Eac)m(h)f(v)-5 b(ariable)29 b(assignmen)m(t)g(is)f(c)m(hec)m(k)m
-(ed)j(for)e(unquoted)g(tilde-pre\014xes)e(immediately)h(follo)m(wing)g
-(a)150 2495 y(`)p Fs(:)p Ft(')j(or)f(`)p Fs(=)p Ft('.)42
-b(In)30 b(these)h(cases,)h(tilde)d(expansion)h(is)f(also)i(p)s
-(erformed.)40 b(Consequen)m(tly)-8 b(,)30 b(one)h(ma)m(y)h(use)e
-(\014le)150 2605 y(names)f(with)e(tildes)g(in)g(assignmen)m(ts)i(to)g
+(tilde-pre\014x)g(is)h(replaced)f(with)g(the)h(corresp)s(onding)e
+(elemen)m(t)j(from)e(the)150 1792 y(directory)36 b(stac)m(k,)i(as)e(it)
+g(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)g(the)f
+Fs(dirs)g Ft(builtin)g(in)m(v)m(ok)m(ed)i(with)e(the)g(c)m(haracters)
+150 1902 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g
+(an)f(argumen)m(t)h(\(see)h(Section)f(6.8)h([The)e(Directory)i(Stac)m
+(k],)150 2011 y(page)c(73\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans)
+e(the)h(tilde,)h(consists)f(of)g(a)f(n)m(um)m(b)s(er)f(without)i(a)f
+(leading)h(`)p Fs(+)p Ft(')g(or)150 2121 y(`)p Fs(-)p
+Ft(',)31 b(`)p Fs(+)p Ft(')f(is)h(assumed.)275 2253 y(If)e(the)i(login)
+g(name)g(is)f(in)m(v)-5 b(alid,)31 b(or)g(the)f(tilde)h(expansion)f
+(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)275
+2386 y(Eac)m(h)e(v)-5 b(ariable)31 b(assignmen)m(t)f(is)f(c)m(hec)m(k)m
+(ed)i(for)e(unquoted)g(tilde-pre\014xes)g(immediately)i(follo)m(wing)g
+(a)150 2495 y(`)p Fs(:)p Ft(')g(or)f(`)p Fs(=)p Ft('.)42
+b(In)30 b(these)h(cases,)h(tilde)f(expansion)g(is)f(also)i(p)s
+(erformed.)40 b(Consequen)m(tly)-8 b(,)31 b(one)g(ma)m(y)h(use)e
+(\014le)150 2605 y(names)f(with)f(tildes)h(in)f(assignmen)m(ts)i(to)f
 Fs(PATH)p Ft(,)f Fs(MAILPATH)p Ft(,)f(and)h Fs(CDPATH)p
-Ft(,)f(and)h(the)h(shell)e(assigns)h(the)150 2715 y(expanded)i(v)-5
-b(alue.)275 2847 y(The)29 b(follo)m(wing)g(table)i(sho)m(ws)f(ho)m(w)g
+Ft(,)f(and)h(the)h(shell)g(assigns)g(the)150 2715 y(expanded)h(v)-5
+b(alue.)275 2847 y(The)29 b(follo)m(wing)j(table)g(sho)m(ws)e(ho)m(w)g
 (Bash)h(treats)g(unquoted)e(tilde-pre\014xes:)150 3002
-y Fs(~)432 b Ft(The)30 b(v)-5 b(alue)30 b(of)g Fs($HOME)150
+y Fs(~)432 b Ft(The)30 b(v)-5 b(alue)31 b(of)f Fs($HOME)150
 3158 y(~/foo)240 b Ft(`)p Fs($HOME/foo)p Ft(')150 3313
-y Fs(~fred/foo)630 3423 y Ft(The)30 b(sub)s(directory)e
-Fs(foo)i Ft(of)g(the)h(home)f(directory)g(of)h(the)f(user)g
+y Fs(~fred/foo)630 3423 y Ft(The)30 b(sub)s(directory)f
+Fs(foo)h Ft(of)g(the)h(home)f(directory)h(of)g(the)f(user)g
 Fs(fred)150 3578 y(~+/foo)192 b Ft(`)p Fs($PWD/foo)p
 Ft(')150 3733 y Fs(~-/foo)g Ft(`)p Fs(${OLDPWD-'~-'}/foo)p
-Ft(')150 3889 y Fs(~)p Fj(N)384 b Ft(The)30 b(string)f(that)i(w)m(ould)
-e(b)s(e)h(displa)m(y)m(ed)f(b)m(y)h(`)p Fs(dirs)g(+)p
+Ft(')150 3889 y Fs(~)p Fj(N)384 b Ft(The)30 b(string)g(that)h(w)m(ould)
+f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)f(`)p Fs(dirs)g(+)p
 Fj(N)11 b Ft(')150 4044 y Fs(~+)p Fj(N)336 b Ft(The)30
-b(string)f(that)i(w)m(ould)e(b)s(e)h(displa)m(y)m(ed)f(b)m(y)h(`)p
+b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)f(`)p
 Fs(dirs)g(+)p Fj(N)11 b Ft(')150 4199 y Fs(~-)p Fj(N)336
-b Ft(The)30 b(string)f(that)i(w)m(ould)e(b)s(e)h(displa)m(y)m(ed)f(b)m
-(y)h(`)p Fs(dirs)g(-)p Fj(N)11 b Ft(')150 4418 y Fk(3.5.3)63
-b(Shell)41 b(P)m(arameter)e(Expansion)275 4660 y Ft(The)26
-b(`)p Fs($)p Ft(')i(c)m(haracter)h(in)m(tro)s(duces)d(parameter)i
-(expansion,)f(command)g(substitution,)f(or)i(arithmetic)150
-4769 y(expansion.)37 b(The)22 b(parameter)h(name)f(or)g(sym)m(b)s(ol)g
-(to)h(b)s(e)e(expanded)h(ma)m(y)h(b)s(e)f(enclosed)g(in)f(braces,)j
-(whic)m(h)150 4879 y(are)31 b(optional)e(but)h(serv)m(e)h(to)h(protect)
-f(the)g(v)-5 b(ariable)29 b(to)i(b)s(e)f(expanded)g(from)g(c)m
-(haracters)i(immediately)150 4988 y(follo)m(wing)d(it)h(whic)m(h)f
-(could)g(b)s(e)h(in)m(terpreted)g(as)g(part)h(of)f(the)h(name.)275
-5121 y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)f(ending)f
-(brace)h(is)f(the)h(\014rst)g(`)p Fs(})p Ft(')g(not)g(escap)s(ed)h(b)m
-(y)f(a)150 5230 y(bac)m(kslash)39 b(or)g(within)e(a)i(quoted)g(string,)
-i(and)d(not)i(within)c(an)j(em)m(b)s(edded)f(arithmetic)h(expansion,)
-150 5340 y(command)30 b(substitution,)e(or)j(parameter)g(expansion.)p
-eop
+b Ft(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m
+(y)f(`)p Fs(dirs)g(-)p Fj(N)11 b Ft(')150 4418 y Fk(3.5.3)63
+b(Shell)41 b(P)m(arameter)f(Expansion)275 4660 y Ft(The)26
+b(`)p Fs($)p Ft(')i(c)m(haracter)h(in)m(tro)s(duces)e(parameter)h
+(expansion,)g(command)f(substitution,)h(or)g(arithmetic)150
+4769 y(expansion.)38 b(The)22 b(parameter)h(name)f(or)g(sym)m(b)s(ol)h
+(to)g(b)s(e)e(expanded)h(ma)m(y)h(b)s(e)f(enclosed)h(in)f(braces,)i
+(whic)m(h)150 4879 y(are)31 b(optional)g(but)f(serv)m(e)h(to)h(protect)
+f(the)g(v)-5 b(ariable)31 b(to)g(b)s(e)f(expanded)g(from)g(c)m
+(haracters)i(immediately)150 4988 y(follo)m(wing)g(it)f(whic)m(h)f
+(could)g(b)s(e)g(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275
+5121 y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f
+(brace)g(is)g(the)g(\014rst)g(`)p Fs(})p Ft(')g(not)g(escap)s(ed)h(b)m
+(y)f(a)150 5230 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,)
+j(and)c(not)i(within)e(an)h(em)m(b)s(edded)f(arithmetic)j(expansion,)
+150 5340 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)p
+eop end
 %%Page: 19 25
-19 24 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2246 b(19)275 299 y(The)40 b(basic)g(form)h
-(of)g(parameter)h(expansion)d(is)h($)p Fs({)p Fq(parameter)7
-b Fs(})p Ft(.)73 b(The)40 b(v)-5 b(alue)41 b(of)g Fq(parameter)48
-b Ft(is)150 408 y(substituted.)42 b(The)31 b(braces)g(are)h(required)d
-(when)i Fq(parameter)38 b Ft(is)30 b(a)i(p)s(ositional)d(parameter)j
-(with)e(more)150 518 y(than)i(one)g(digit,)g(or)g(when)g
-Fq(parameter)39 b Ft(is)31 b(follo)m(w)m(ed)h(b)m(y)g(a)h(c)m(haracter)
-h(that)e(is)g(not)g(to)h(b)s(e)f(in)m(terpreted)150 628
-y(as)f(part)f(of)g(its)g(name.)275 772 y(If)c(the)i(\014rst)f(c)m
-(haracter)i(of)e Fq(parameter)35 b Ft(is)26 b(an)h(exclamation)h(p)s
-(oin)m(t,)f(a)h(lev)m(el)f(of)g(v)-5 b(ariable)27 b(indirection)150
-882 y(is)37 b(in)m(tro)s(duced.)61 b(Bash)38 b(uses)f(the)h(v)-5
-b(alue)37 b(of)h(the)g(v)-5 b(ariable)37 b(formed)g(from)g(the)h(rest)g
+TeXDict begin 19 24 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)275 299
+y(The)40 b(basic)h(form)g(of)g(parameter)h(expansion)e(is)h($)p
+Fs({)p Fq(parameter)7 b Fs(})p Ft(.)73 b(The)40 b(v)-5
+b(alue)42 b(of)f Fq(parameter)48 b Ft(is)150 408 y(substituted.)43
+b(The)31 b(braces)g(are)h(required)e(when)h Fq(parameter)38
+b Ft(is)31 b(a)h(p)s(ositional)g(parameter)g(with)f(more)150
+518 y(than)h(one)g(digit,)i(or)e(when)g Fq(parameter)39
+b Ft(is)32 b(follo)m(w)m(ed)i(b)m(y)e(a)h(c)m(haracter)h(that)e(is)h
+(not)f(to)h(b)s(e)f(in)m(terpreted)150 628 y(as)f(part)f(of)g(its)h
+(name.)275 772 y(If)26 b(the)i(\014rst)f(c)m(haracter)i(of)e
+Fq(parameter)35 b Ft(is)27 b(an)g(exclamation)j(p)s(oin)m(t,)e(a)g(lev)
+m(el)h(of)e(v)-5 b(ariable)29 b(indirection)150 882 y(is)38
+b(in)m(tro)s(duced.)62 b(Bash)38 b(uses)f(the)h(v)-5
+b(alue)38 b(of)g(the)g(v)-5 b(ariable)39 b(formed)e(from)g(the)h(rest)g
 (of)g Fq(parameter)45 b Ft(as)150 991 y(the)32 b(name)h(of)f(the)h(v)-5
-b(ariable;)32 b(this)f(v)-5 b(ariable)31 b(is)h(then)g(expanded)f(and)h
-(that)h(v)-5 b(alue)31 b(is)h(used)f(in)g(the)i(rest)150
-1101 y(of)h(the)f(substitution,)g(rather)g(than)g(the)h(v)-5
-b(alue)33 b(of)h Fq(parameter)40 b Ft(itself.)49 b(This)32
-b(is)g(kno)m(wn)h(as)h Fs(indirect)150 1210 y(expansion)p
-Ft(.)81 b(The)44 b(exceptions)g(to)i(this)d(are)i(the)g(expansions)e
-(of)i($)p Fs({)p Ft(!)p Fq(pre\014x*)8 b Fs(})43 b Ft(and)h($)p
+b(ariable;)34 b(this)e(v)-5 b(ariable)33 b(is)g(then)f(expanded)f(and)h
+(that)h(v)-5 b(alue)32 b(is)h(used)e(in)h(the)h(rest)150
+1101 y(of)h(the)f(substitution,)i(rather)e(than)g(the)h(v)-5
+b(alue)34 b(of)g Fq(parameter)40 b Ft(itself.)51 b(This)33
+b(is)g(kno)m(wn)g(as)h Fs(indirect)150 1210 y(expansion)p
+Ft(.)81 b(The)44 b(exceptions)h(to)h(this)e(are)h(the)g(expansions)f
+(of)h($)p Fs({)p Ft(!)p Fq(pre\014x*)8 b Fs(})43 b Ft(and)h($)p
 Fs({)p Ft(!)p Fq(name)5 b Ft([)p Fs(@)p Ft(])p Fs(})150
-1320 y Ft(describ)s(ed)27 b(b)s(elo)m(w.)40 b(The)28
-b(exclamation)h(p)s(oin)m(t)g(m)m(ust)g(immediately)e(follo)m(w)h(the)i
-(left)e(brace)i(in)e(order)g(to)150 1430 y(in)m(tro)s(duce)h
+1320 y Ft(describ)s(ed)28 b(b)s(elo)m(w.)41 b(The)28
+b(exclamation)j(p)s(oin)m(t)f(m)m(ust)f(immediately)h(follo)m(w)g(the)g
+(left)f(brace)h(in)f(order)f(to)150 1430 y(in)m(tro)s(duce)i
 (indirection.)275 1574 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m
-(w,)h Fq(w)m(ord)i Ft(is)39 b(sub)5 b(ject)40 b(to)h(tilde)d
-(expansion,)k(parameter)f(expansion,)150 1684 y(command)30
-b(substitution,)e(and)i(arithmetic)g(expansion.)275 1828
-y(When)j(not)g(p)s(erforming)e(substring)g(expansion,)j(Bash)f(tests)h
-(for)f(a)h(parameter)g(that)g(is)e(unset)h(or)150 1938
-y(n)m(ull;)j(omitting)e(the)h(colon)g(results)f(in)g(a)i(test)g(only)e
-(for)h(a)g(parameter)h(that)f(is)g(unset.)54 b(Put)35
-b(another)150 2047 y(w)m(a)m(y)-8 b(,)31 b(if)d(the)h(colon)g(is)f
-(included,)e(the)j(op)s(erator)h(tests)f(for)g(b)s(oth)f(existence)h
-(and)g(that)g(the)g(v)-5 b(alue)29 b(is)f(not)150 2157
-y(n)m(ull;)h(if)g(the)h(colon)h(is)e(omitted,)i(the)f(op)s(erator)h
-(tests)g(only)f(for)g(existence.)150 2331 y Fs(${)p Fj(parameter)11
-b Fs(:)p Fp(\000)p Fj(word)g Fs(})630 2441 y Ft(If)30
-b Fq(parameter)37 b Ft(is)29 b(unset)h(or)h(n)m(ull,)d(the)j(expansion)
-e(of)h Fq(w)m(ord)k Ft(is)29 b(substituted.)39 b(Otherwise,)630
-2550 y(the)31 b(v)-5 b(alue)29 b(of)i Fq(parameter)37
-b Ft(is)30 b(substituted.)150 2720 y Fs(${)p Fj(parameter)11
-b Fs(:=)p Fj(word)g Fs(})630 2829 y Ft(If)33 b Fq(parameter)40
-b Ft(is)32 b(unset)g(or)h(n)m(ull,)f(the)h(expansion)f(of)h
-Fq(w)m(ord)j Ft(is)c(assigned)g(to)i Fq(parameter)p Ft(.)630
-2939 y(The)c(v)-5 b(alue)31 b(of)g Fq(parameter)38 b
-Ft(is)30 b(then)h(substituted.)41 b(P)m(ositional)30
-b(parameters)h(and)f(sp)s(ecial)630 3049 y(parameters)h(ma)m(y)g(not)f
-(b)s(e)g(assigned)g(to)h(in)e(this)g(w)m(a)m(y)-8 b(.)150
+(w,)i Fq(w)m(ord)h Ft(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j
+(parameter)e(expansion,)150 1684 y(command)30 b(substitution,)g(and)g
+(arithmetic)i(expansion.)275 1828 y(When)h(not)g(p)s(erforming)f
+(substring)g(expansion,)j(Bash)e(tests)h(for)f(a)h(parameter)g(that)g
+(is)f(unset)g(or)150 1938 y(n)m(ull;)38 b(omitting)e(the)f(colon)h
+(results)f(in)g(a)h(test)g(only)f(for)g(a)g(parameter)h(that)f(is)h
+(unset.)54 b(Put)35 b(another)150 2047 y(w)m(a)m(y)-8
+b(,)31 b(if)e(the)g(colon)h(is)f(included,)f(the)h(op)s(erator)h(tests)
+f(for)g(b)s(oth)f(existence)i(and)f(that)g(the)g(v)-5
+b(alue)30 b(is)f(not)150 2157 y(n)m(ull;)i(if)f(the)g(colon)i(is)e
+(omitted,)i(the)e(op)s(erator)h(tests)g(only)g(for)f(existence.)150
+2331 y Fs(${)p Fj(parameter)11 b Fs(:)p Fp(\000)p Fj(word)g
+Fs(})630 2441 y Ft(If)30 b Fq(parameter)37 b Ft(is)30
+b(unset)g(or)h(n)m(ull,)f(the)h(expansion)f(of)g Fq(w)m(ord)k
+Ft(is)c(substituted.)40 b(Otherwise,)630 2550 y(the)31
+b(v)-5 b(alue)30 b(of)h Fq(parameter)37 b Ft(is)31 b(substituted.)150
+2720 y Fs(${)p Fj(parameter)11 b Fs(:=)p Fj(word)g Fs(})630
+2829 y Ft(If)33 b Fq(parameter)40 b Ft(is)33 b(unset)f(or)h(n)m(ull,)h
+(the)f(expansion)g(of)g Fq(w)m(ord)j Ft(is)d(assigned)g(to)h
+Fq(parameter)p Ft(.)630 2939 y(The)c(v)-5 b(alue)32 b(of)f
+Fq(parameter)38 b Ft(is)31 b(then)g(substituted.)42 b(P)m(ositional)33
+b(parameters)e(and)f(sp)s(ecial)630 3049 y(parameters)h(ma)m(y)g(not)f
+(b)s(e)g(assigned)h(to)g(in)f(this)g(w)m(a)m(y)-8 b(.)150
 3218 y Fs(${)p Fj(parameter)11 b Fs(:?)p Fj(word)g Fs(})630
-3328 y Ft(If)26 b Fq(parameter)33 b Ft(is)25 b(n)m(ull)f(or)i(unset,)h
-(the)f(expansion)f(of)h Fq(w)m(ord)k Ft(\(or)c(a)h(message)g(to)g(that)
-f(e\013ect)630 3437 y(if)h Fq(w)m(ord)k Ft(is)c(not)h(presen)m(t\))h
-(is)e(written)g(to)i(the)f(standard)f(error)h(and)f(the)h(shell,)f(if)g
-(it)h(is)f(not)630 3547 y(in)m(teractiv)m(e,)k(exits.)41
-b(Otherwise,)29 b(the)i(v)-5 b(alue)30 b(of)g Fq(parameter)38
-b Ft(is)29 b(substituted.)150 3716 y Fs(${)p Fj(parameter)11
+3328 y Ft(If)26 b Fq(parameter)33 b Ft(is)26 b(n)m(ull)g(or)g(unset,)h
+(the)f(expansion)g(of)g Fq(w)m(ord)k Ft(\(or)c(a)h(message)g(to)g(that)
+f(e\013ect)630 3437 y(if)i Fq(w)m(ord)j Ft(is)d(not)g(presen)m(t\))h
+(is)f(written)g(to)h(the)f(standard)f(error)h(and)f(the)h(shell,)h(if)f
+(it)h(is)f(not)630 3547 y(in)m(teractiv)m(e,)33 b(exits.)42
+b(Otherwise,)30 b(the)h(v)-5 b(alue)31 b(of)f Fq(parameter)38
+b Ft(is)30 b(substituted.)150 3716 y Fs(${)p Fj(parameter)11
 b Fs(:+)p Fj(word)g Fs(})630 3826 y Ft(If)35 b Fq(parameter)42
-b Ft(is)35 b(n)m(ull)e(or)j(unset,)g(nothing)f(is)f(substituted,)i
-(otherwise)e(the)i(expansion)630 3935 y(of)31 b Fq(w)m(ord)i
-Ft(is)d(substituted.)150 4105 y Fs(${)p Fj(parameter)11
+b Ft(is)36 b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i
+(otherwise)e(the)h(expansion)630 3935 y(of)31 b Fq(w)m(ord)i
+Ft(is)e(substituted.)150 4105 y Fs(${)p Fj(parameter)11
 b Fs(:)p Fj(offset)g Fs(})150 4214 y(${)p Fj(parameter)g
 Fs(:)p Fj(offset)g Fs(:)p Fj(le)o(ngt)o(h)g Fs(})630
-4324 y Ft(Expands)44 b(to)i(up)e(to)i Fq(length)f Ft(c)m(haracters)i
-(of)e Fq(parameter)53 b Ft(starting)45 b(at)h(the)f(c)m(haracter)630
-4433 y(sp)s(eci\014ed)29 b(b)m(y)i Fq(o\013set)p Ft(.)42
-b(If)31 b Fq(length)f Ft(is)g(omitted,)h(expands)f(to)h(the)g
-(substring)e(of)h Fq(parameter)630 4543 y Ft(starting)37
-b(at)h(the)f(c)m(haracter)i(sp)s(eci\014ed)d(b)m(y)h
-Fq(o\013set)p Ft(.)62 b Fq(length)37 b Ft(and)g Fq(o\013set)j
-Ft(are)e(arithmetic)630 4653 y(expressions)29 b(\(see)j(Section)f(6.5)h
-([Shell)d(Arithmetic],)h(page)i(70\).)43 b(This)29 b(is)h(referred)g
-(to)i(as)630 4762 y(Substring)c(Expansion.)630 4902 y
-Fq(length)f Ft(m)m(ust)h(ev)-5 b(aluate)28 b(to)g(a)h(n)m(um)m(b)s(er)d
-(greater)j(than)e(or)h(equal)f(to)i(zero.)40 b(If)27
+4324 y Ft(Expands)44 b(to)i(up)e(to)i Fq(length)g Ft(c)m(haracters)h
+(of)e Fq(parameter)53 b Ft(starting)46 b(at)g(the)f(c)m(haracter)630
+4433 y(sp)s(eci\014ed)30 b(b)m(y)h Fq(o\013set)p Ft(.)42
+b(If)31 b Fq(length)g Ft(is)g(omitted,)h(expands)e(to)h(the)g
+(substring)f(of)g Fq(parameter)630 4543 y Ft(starting)38
+b(at)g(the)f(c)m(haracter)i(sp)s(eci\014ed)e(b)m(y)g
+Fq(o\013set)p Ft(.)62 b Fq(length)38 b Ft(and)f Fq(o\013set)j
+Ft(are)e(arithmetic)630 4653 y(expressions)30 b(\(see)i(Section)g(6.5)g
+([Shell)f(Arithmetic],)h(page)g(70\).)43 b(This)30 b(is)h(referred)f
+(to)i(as)630 4762 y(Substring)d(Expansion.)630 4902 y
+Fq(length)f Ft(m)m(ust)g(ev)-5 b(aluate)29 b(to)f(a)h(n)m(um)m(b)s(er)d
+(greater)j(than)e(or)h(equal)g(to)h(zero.)40 b(If)27
 b Fq(o\013set)k Ft(ev)-5 b(alu-)630 5011 y(ates)24 b(to)h(a)e(n)m(um)m
-(b)s(er)f(less)h(than)g(zero,)j(the)e(v)-5 b(alue)23
-b(is)f(used)h(as)g(an)h(o\013set)g(from)f(the)g(end)g(of)h(the)630
-5121 y(v)-5 b(alue)21 b(of)g Fq(parameter)p Ft(.)38 b(If)21
-b Fq(parameter)28 b Ft(is)20 b(`)p Fs(@)p Ft(',)j(the)f(result)e(is)g
-Fq(length)h Ft(p)s(ositional)e(parameters)630 5230 y(b)s(eginning)25
-b(at)k Fq(o\013set)p Ft(.)41 b(If)28 b Fq(parameter)35
-b Ft(is)27 b(an)h(arra)m(y)h(name)f(indexed)e(b)m(y)i(`)p
+(b)s(er)f(less)i(than)f(zero,)j(the)e(v)-5 b(alue)24
+b(is)f(used)g(as)g(an)h(o\013set)g(from)f(the)g(end)g(of)h(the)630
+5121 y(v)-5 b(alue)22 b(of)f Fq(parameter)p Ft(.)38 b(If)21
+b Fq(parameter)28 b Ft(is)21 b(`)p Fs(@)p Ft(',)i(the)f(result)f(is)g
+Fq(length)h Ft(p)s(ositional)g(parameters)630 5230 y(b)s(eginning)27
+b(at)i Fq(o\013set)p Ft(.)41 b(If)28 b Fq(parameter)35
+b Ft(is)28 b(an)g(arra)m(y)h(name)f(indexed)f(b)m(y)h(`)p
 Fs(@)p Ft(')g(or)g(`)p Fs(*)p Ft(',)h(the)g(re-)630 5340
-y(sult)20 b(is)h(the)g Fq(length)g Ft(mem)m(b)s(ers)g(of)g(the)h(arra)m
-(y)f(b)s(eginning)e(with)h Fs(${)p Fj(parameter)11 b
-Fs([)p Fj(offset)g Fs(]})p Ft(.)p eop
+y(sult)21 b(is)h(the)f Fq(length)h Ft(mem)m(b)s(ers)f(of)g(the)h(arra)m
+(y)f(b)s(eginning)g(with)g Fs(${)p Fj(parameter)11 b
+Fs([)p Fj(offset)g Fs(]})p Ft(.)p eop end
 %%Page: 20 26
-20 25 bop 150 -116 a Ft(20)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y(Substring)g(indexing)h(is)g(zero-based)j(unless)d(the)i(p)s
-(ositional)d(parameters)j(are)g(used,)g(in)630 408 y(whic)m(h)29
-b(case)j(the)e(indexing)e(starts)j(at)g(1.)150 573 y
-Fs(${!)p Fj(prefix)11 b Fs(*})150 682 y(${!)p Fj(prefix)g
+TeXDict begin 20 25 bop 150 -116 a Ft(20)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(Substring)h(indexing)i(is)f
+(zero-based)i(unless)e(the)h(p)s(ositional)g(parameters)g(are)g(used,)g
+(in)630 408 y(whic)m(h)c(case)i(the)e(indexing)g(starts)h(at)g(1.)150
+573 y Fs(${!)p Fj(prefix)11 b Fs(*})150 682 y(${!)p Fj(prefix)g
 Fs(@})630 792 y Ft(Expands)34 b(to)j(the)f(names)g(of)g(v)-5
-b(ariables)35 b(whose)g(names)h(b)s(egin)e(with)h Fq(pre\014x)p
-Ft(,)h(separated)630 902 y(b)m(y)30 b(the)h(\014rst)e(c)m(haracter)j
-(of)f(the)g Fs(IFS)e Ft(sp)s(ecial)g(v)-5 b(ariable.)150
+b(ariables)37 b(whose)e(names)h(b)s(egin)f(with)h Fq(pre\014x)p
+Ft(,)g(separated)630 902 y(b)m(y)30 b(the)h(\014rst)e(c)m(haracter)j
+(of)f(the)g Fs(IFS)e Ft(sp)s(ecial)i(v)-5 b(ariable.)150
 1066 y Fs(${!)p Fj(name)11 b Fs([@]})150 1176 y(${!)p
 Fj(name)g Fs([*]})630 1285 y Ft(If)26 b Fq(name)32 b
-Ft(is)26 b(an)g(arra)m(y)h(v)-5 b(ariable,)27 b(expands)f(to)h(the)g
-(list)e(of)i(arra)m(y)g(indices)e(\(k)m(eys\))j(assigned)630
-1395 y(in)23 b Fq(name)p Ft(.)39 b(If)24 b Fq(name)30
-b Ft(is)23 b(not)i(an)f(arra)m(y)-8 b(,)27 b(expands)c(to)j(0)f(if)e
-Fq(name)30 b Ft(is)23 b(set)i(and)f(n)m(ull)e(otherwise.)630
-1504 y(When)39 b(`)p Fs(@)p Ft(')h(is)e(used)h(and)f(the)i(expansion)e
-(app)s(ears)h(within)d(double)i(quotes,)43 b(eac)m(h)d(k)m(ey)630
+Ft(is)27 b(an)f(arra)m(y)h(v)-5 b(ariable,)29 b(expands)d(to)h(the)g
+(list)g(of)g(arra)m(y)g(indices)g(\(k)m(eys\))h(assigned)630
+1395 y(in)c Fq(name)p Ft(.)39 b(If)24 b Fq(name)30 b
+Ft(is)24 b(not)h(an)f(arra)m(y)-8 b(,)27 b(expands)c(to)j(0)f(if)f
+Fq(name)30 b Ft(is)24 b(set)h(and)f(n)m(ull)g(otherwise.)630
+1504 y(When)39 b(`)p Fs(@)p Ft(')h(is)f(used)g(and)f(the)i(expansion)f
+(app)s(ears)g(within)f(double)h(quotes,)k(eac)m(h)d(k)m(ey)630
 1614 y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150
 1778 y Fs(${#)p Fj(parameter)11 b Fs(})630 1888 y Ft(The)40
-b(length)f(in)g(c)m(haracters)j(of)e(the)h(expanded)e(v)-5
-b(alue)40 b(of)g Fq(parameter)47 b Ft(is)39 b(substituted.)630
-1998 y(If)j Fq(parameter)50 b Ft(is)42 b(`)p Fs(*)p Ft(')h(or)g(`)p
-Fs(@)p Ft(',)k(the)c(v)-5 b(alue)42 b(substituted)f(is)h(the)h(n)m(um)m
+b(length)g(in)g(c)m(haracters)i(of)e(the)h(expanded)e(v)-5
+b(alue)41 b(of)f Fq(parameter)47 b Ft(is)40 b(substituted.)630
+1998 y(If)i Fq(parameter)50 b Ft(is)43 b(`)p Fs(*)p Ft(')g(or)g(`)p
+Fs(@)p Ft(',)k(the)c(v)-5 b(alue)43 b(substituted)f(is)h(the)g(n)m(um)m
 (b)s(er)f(of)h(p)s(ositional)630 2107 y(parameters.)i(If)32
-b Fq(parameter)38 b Ft(is)31 b(an)h(arra)m(y)g(name)g(subscripted)e(b)m
-(y)h(`)p Fs(*)p Ft(')h(or)g(`)p Fs(@)p Ft(',)g(the)g(v)-5
-b(alue)630 2217 y(substituted)29 b(is)g(the)i(n)m(um)m(b)s(er)e(of)h
-(elemen)m(ts)h(in)e(the)i(arra)m(y)-8 b(.)150 2381 y
+b Fq(parameter)38 b Ft(is)32 b(an)g(arra)m(y)g(name)g(subscripted)f(b)m
+(y)g(`)p Fs(*)p Ft(')h(or)g(`)p Fs(@)p Ft(',)g(the)g(v)-5
+b(alue)630 2217 y(substituted)30 b(is)g(the)h(n)m(um)m(b)s(er)e(of)h
+(elemen)m(ts)i(in)e(the)h(arra)m(y)-8 b(.)150 2381 y
 Fs(${)p Fj(parameter)11 b Fs(#)p Fj(word)g Fs(})150 2491
 y(${)p Fj(parameter)g Fs(##)p Fj(word)g Fs(})630 2600
-y Ft(The)31 b Fq(w)m(ord)k Ft(is)c(expanded)g(to)i(pro)s(duce)e(a)h
-(pattern)g(just)f(as)i(in)d(\014lename)h(expansion)g(\(see)630
-2710 y(Section)k(3.5.8)i([Filename)e(Expansion],)h(page)g(22\).)56
+y Ft(The)31 b Fq(w)m(ord)k Ft(is)d(expanded)f(to)i(pro)s(duce)e(a)h
+(pattern)g(just)f(as)i(in)e(\014lename)h(expansion)g(\(see)630
+2710 y(Section)k(3.5.8)h([Filename)g(Expansion],)g(page)f(22\).)56
 b(If)35 b(the)h(pattern)f(matc)m(hes)i(the)e(b)s(e-)630
-2819 y(ginning)26 b(of)i(the)h(expanded)e(v)-5 b(alue)28
-b(of)g Fq(parameter)p Ft(,)h(then)f(the)g(result)f(of)i(the)f
-(expansion)f(is)630 2929 y(the)36 b(expanded)f(v)-5 b(alue)35
-b(of)h Fq(parameter)43 b Ft(with)34 b(the)i(shortest)g(matc)m(hing)g
-(pattern)g(\(the)g(`)p Fs(#)p Ft(')630 3039 y(case\))26
-b(or)f(the)g(longest)f(matc)m(hing)h(pattern)g(\(the)g(`)p
-Fs(##)p Ft(')g(case\))h(deleted.)38 b(If)24 b Fq(parameter)32
-b Ft(is)24 b(`)p Fs(@)p Ft(')630 3148 y(or)k(`)p Fs(*)p
-Ft(',)i(the)e(pattern)h(remo)m(v)-5 b(al)28 b(op)s(eration)g(is)f
-(applied)g(to)i(eac)m(h)g(p)s(ositional)d(parameter)j(in)630
-3258 y(turn,)i(and)g(the)h(expansion)f(is)g(the)h(resultan)m(t)f(list.)
-43 b(If)32 b Fq(parameter)38 b Ft(is)31 b(an)h(arra)m(y)g(v)-5
-b(ariable)630 3367 y(subscripted)38 b(with)g(`)p Fs(@)p
-Ft(')i(or)g(`)p Fs(*)p Ft(',)j(the)d(pattern)h(remo)m(v)-5
-b(al)40 b(op)s(eration)f(is)g(applied)f(to)j(eac)m(h)630
-3477 y(mem)m(b)s(er)30 b(of)g(the)h(arra)m(y)g(in)e(turn,)g(and)h(the)h
-(expansion)e(is)g(the)i(resultan)m(t)f(list.)150 3641
+2819 y(ginning)28 b(of)g(the)h(expanded)e(v)-5 b(alue)29
+b(of)f Fq(parameter)p Ft(,)h(then)f(the)g(result)g(of)h(the)f
+(expansion)g(is)630 2929 y(the)36 b(expanded)f(v)-5 b(alue)36
+b(of)g Fq(parameter)43 b Ft(with)35 b(the)h(shortest)g(matc)m(hing)h
+(pattern)f(\(the)g(`)p Fs(#)p Ft(')630 3039 y(case\))26
+b(or)f(the)g(longest)g(matc)m(hing)h(pattern)f(\(the)g(`)p
+Fs(##)p Ft(')g(case\))h(deleted.)39 b(If)24 b Fq(parameter)32
+b Ft(is)25 b(`)p Fs(@)p Ft(')630 3148 y(or)j(`)p Fs(*)p
+Ft(',)i(the)e(pattern)h(remo)m(v)-5 b(al)29 b(op)s(eration)g(is)f
+(applied)h(to)g(eac)m(h)g(p)s(ositional)g(parameter)g(in)630
+3258 y(turn,)i(and)g(the)h(expansion)g(is)g(the)g(resultan)m(t)g(list.)
+45 b(If)32 b Fq(parameter)38 b Ft(is)32 b(an)g(arra)m(y)g(v)-5
+b(ariable)630 3367 y(subscripted)39 b(with)g(`)p Fs(@)p
+Ft(')h(or)g(`)p Fs(*)p Ft(',)j(the)d(pattern)h(remo)m(v)-5
+b(al)41 b(op)s(eration)f(is)g(applied)g(to)h(eac)m(h)630
+3477 y(mem)m(b)s(er)30 b(of)g(the)h(arra)m(y)g(in)f(turn,)f(and)h(the)h
+(expansion)f(is)g(the)h(resultan)m(t)g(list.)150 3641
 y Fs(${)p Fj(parameter)11 b Fs(\045)p Fj(word)g Fs(})150
 3751 y(${)p Fj(parameter)g Fs(\045\045)p Fj(word)g Fs(})630
-3861 y Ft(The)35 b Fq(w)m(ord)k Ft(is)34 b(expanded)h(to)h(pro)s(duce)e
-(a)i(pattern)f(just)g(as)h(in)e(\014lename)h(expansion.)54
-b(If)630 3970 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)d(p)s
-(ortion)g(of)i(the)g(expanded)g(v)-5 b(alue)42 b(of)h
-Fq(parameter)p Ft(,)630 4080 y(then)c(the)g(result)f(of)i(the)f
-(expansion)f(is)h(the)g(v)-5 b(alue)39 b(of)g Fq(parameter)46
-b Ft(with)38 b(the)i(shortest)630 4189 y(matc)m(hing)30
-b(pattern)f(\(the)h(`)p Fs(\045)p Ft(')g(case\))h(or)e(the)h(longest)g
-(matc)m(hing)f(pattern)h(\(the)g(`)p Fs(\045\045)p Ft(')g(case\))630
-4299 y(deleted.)48 b(If)32 b Fq(parameter)40 b Ft(is)32
-b(`)p Fs(@)p Ft(')h(or)g(`)p Fs(*)p Ft(',)h(the)f(pattern)g(remo)m(v)-5
-b(al)33 b(op)s(eration)g(is)f(applied)e(to)630 4408 y(eac)m(h)38
-b(p)s(ositional)d(parameter)j(in)e(turn,)i(and)e(the)h(expansion)f(is)h
-(the)g(resultan)m(t)g(list.)59 b(If)630 4518 y Fq(parameter)38
-b Ft(is)31 b(an)g(arra)m(y)h(v)-5 b(ariable)30 b(subscripted)f(with)h
-(`)p Fs(@)p Ft(')h(or)h(`)p Fs(*)p Ft(',)g(the)f(pattern)h(remo)m(v)-5
-b(al)630 4628 y(op)s(eration)29 b(is)g(applied)e(to)k(eac)m(h)g(mem)m
-(b)s(er)e(of)h(the)g(arra)m(y)g(in)e(turn,)h(and)g(the)h(expansion)f
-(is)630 4737 y(the)i(resultan)m(t)f(list.)150 4902 y
+3861 y Ft(The)35 b Fq(w)m(ord)k Ft(is)c(expanded)g(to)h(pro)s(duce)e(a)
+i(pattern)f(just)g(as)h(in)f(\014lename)h(expansion.)55
+b(If)630 3970 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)g(p)s
+(ortion)e(of)h(the)g(expanded)g(v)-5 b(alue)43 b(of)g
+Fq(parameter)p Ft(,)630 4080 y(then)c(the)g(result)g(of)h(the)f
+(expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f Fq(parameter)46
+b Ft(with)39 b(the)h(shortest)630 4189 y(matc)m(hing)31
+b(pattern)e(\(the)h(`)p Fs(\045)p Ft(')g(case\))h(or)e(the)h(longest)h
+(matc)m(hing)f(pattern)g(\(the)g(`)p Fs(\045\045)p Ft(')g(case\))630
+4299 y(deleted.)49 b(If)32 b Fq(parameter)40 b Ft(is)33
+b(`)p Fs(@)p Ft(')g(or)g(`)p Fs(*)p Ft(',)h(the)f(pattern)g(remo)m(v)-5
+b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 4408 y(eac)m(h)38
+b(p)s(ositional)g(parameter)g(in)f(turn,)h(and)e(the)h(expansion)g(is)h
+(the)f(resultan)m(t)h(list.)61 b(If)630 4518 y Fq(parameter)38
+b Ft(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h
+(`)p Fs(@)p Ft(')g(or)h(`)p Fs(*)p Ft(',)g(the)f(pattern)h(remo)m(v)-5
+b(al)630 4628 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m
+(b)s(er)e(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g
+(is)630 4737 y(the)h(resultan)m(t)g(list.)150 4902 y
 Fs(${)p Fj(parameter)11 b Fs(/)p Fj(pattern)g Fs(/)p
 Fj(s)o(tri)o(ng)f Fs(})150 5011 y(${)p Fj(parameter)h
 Fs(//)p Fj(pattern)g Fs(/)o Fj(str)o(ing)f Fs(})630 5121
-y Ft(The)37 b Fq(pattern)g Ft(is)f(expanded)h(to)h(pro)s(duce)e(a)h
-(pattern)g(just)g(as)h(in)d(\014lename)i(expansion.)630
-5230 y Fq(P)m(arameter)46 b Ft(is)37 b(expanded)g(and)g(the)i(longest)f
-(matc)m(h)h(of)f Fq(pattern)g Ft(against)g(its)f(v)-5
-b(alue)38 b(is)630 5340 y(replaced)e(with)f Fq(string)p
-Ft(.)57 b(In)35 b(the)i(\014rst)e(form,)j(only)d(the)i(\014rst)e(matc)m
-(h)i(is)f(replaced.)57 b(The)p eop
+y Ft(The)37 b Fq(pattern)g Ft(is)g(expanded)g(to)h(pro)s(duce)e(a)h
+(pattern)g(just)g(as)h(in)e(\014lename)i(expansion.)630
+5230 y Fq(P)m(arameter)46 b Ft(is)38 b(expanded)f(and)g(the)i(longest)g
+(matc)m(h)g(of)f Fq(pattern)g Ft(against)h(its)f(v)-5
+b(alue)39 b(is)630 5340 y(replaced)e(with)f Fq(string)p
+Ft(.)58 b(In)35 b(the)i(\014rst)e(form,)j(only)e(the)h(\014rst)e(matc)m
+(h)i(is)g(replaced.)58 b(The)p eop end
 %%Page: 21 27
-21 26 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2246 b(21)630 299 y(second)26
-b(form)g(causes)h(all)e(matc)m(hes)i(of)g Fq(pattern)f
-Ft(to)h(b)s(e)f(replaced)g(with)f Fq(string)p Ft(.)38
-b(If)26 b Fq(pattern)630 408 y Ft(b)s(egins)34 b(with)g(`)p
-Fs(#)p Ft(',)j(it)e(m)m(ust)g(matc)m(h)h(at)g(the)g(b)s(eginning)d(of)i
-(the)h(expanded)e(v)-5 b(alue)35 b(of)h Fq(pa-)630 518
-y(rameter)p Ft(.)45 b(If)32 b Fq(pattern)g Ft(b)s(egins)e(with)g(`)p
-Fs(\045)p Ft(',)j(it)e(m)m(ust)h(matc)m(h)g(at)h(the)f(end)f(of)h(the)g
-(expanded)630 628 y(v)-5 b(alue)32 b(of)h Fq(parameter)p
-Ft(.)47 b(If)32 b Fq(string)39 b Ft(is)32 b(n)m(ull,)f(matc)m(hes)i(of)
-g Fq(pattern)g Ft(are)g(deleted)f(and)g(the)g Fs(/)630
-737 y Ft(follo)m(wing)i Fq(pattern)h Ft(ma)m(y)h(b)s(e)e(omitted.)55
-b(If)35 b Fq(parameter)42 b Ft(is)35 b(`)p Fs(@)p Ft(')g(or)g(`)p
-Fs(*)p Ft(',)i(the)e(substitution)630 847 y(op)s(eration)29
-b(is)f(applied)f(to)j(eac)m(h)g(p)s(ositional)d(parameter)j(in)d(turn,)
-i(and)g(the)g(expansion)f(is)630 956 y(the)j(resultan)m(t)g(list.)43
-b(If)30 b Fq(parameter)39 b Ft(is)30 b(an)h(arra)m(y)h(v)-5
-b(ariable)30 b(subscripted)f(with)h(`)p Fs(@)p Ft(')h(or)h(`)p
-Fs(*)p Ft(',)630 1066 y(the)e(substitution)e(op)s(eration)i(is)f
-(applied)f(to)j(eac)m(h)h(mem)m(b)s(er)e(of)g(the)g(arra)m(y)h(in)e
-(turn,)h(and)630 1176 y(the)h(expansion)e(is)g(the)i(resultan)m(t)f
-(list.)150 1443 y Fk(3.5.4)63 b(Command)39 b(Substitution)275
-1709 y Ft(Command)29 b(substitution)g(allo)m(ws)h(the)h(output)g(of)g
-(a)g(command)g(to)g(replace)g(the)g(command)g(itself.)150
-1819 y(Command)e(substitution)f(o)s(ccurs)j(when)e(a)i(command)f(is)f
-(enclosed)h(as)h(follo)m(ws:)390 1975 y Fs($\()p Fj(command)11
+TeXDict begin 21 26 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)630 299
+y(second)26 b(form)g(causes)h(all)g(matc)m(hes)g(of)g
+Fq(pattern)f Ft(to)h(b)s(e)f(replaced)h(with)f Fq(string)p
+Ft(.)39 b(If)26 b Fq(pattern)630 408 y Ft(b)s(egins)35
+b(with)g(`)p Fs(#)p Ft(',)i(it)f(m)m(ust)f(matc)m(h)h(at)g(the)g(b)s
+(eginning)f(of)g(the)h(expanded)e(v)-5 b(alue)36 b(of)g
+Fq(pa-)630 518 y(rameter)p Ft(.)45 b(If)32 b Fq(pattern)g
+Ft(b)s(egins)f(with)g(`)p Fs(\045)p Ft(',)i(it)f(m)m(ust)g(matc)m(h)g
+(at)h(the)f(end)f(of)h(the)g(expanded)630 628 y(v)-5
+b(alue)33 b(of)g Fq(parameter)p Ft(.)47 b(If)32 b Fq(string)40
+b Ft(is)33 b(n)m(ull,)g(matc)m(hes)g(of)g Fq(pattern)g
+Ft(are)g(deleted)g(and)f(the)g Fs(/)630 737 y Ft(follo)m(wing)37
+b Fq(pattern)e Ft(ma)m(y)h(b)s(e)e(omitted.)56 b(If)35
+b Fq(parameter)42 b Ft(is)36 b(`)p Fs(@)p Ft(')f(or)g(`)p
+Fs(*)p Ft(',)i(the)e(substitution)630 847 y(op)s(eration)30
+b(is)f(applied)g(to)h(eac)m(h)g(p)s(ositional)g(parameter)g(in)e(turn,)
+h(and)g(the)g(expansion)g(is)630 956 y(the)i(resultan)m(t)h(list.)45
+b(If)30 b Fq(parameter)39 b Ft(is)31 b(an)g(arra)m(y)h(v)-5
+b(ariable)32 b(subscripted)e(with)h(`)p Fs(@)p Ft(')g(or)h(`)p
+Fs(*)p Ft(',)630 1066 y(the)e(substitution)g(op)s(eration)h(is)f
+(applied)g(to)h(eac)m(h)h(mem)m(b)s(er)e(of)g(the)g(arra)m(y)h(in)f
+(turn,)g(and)630 1176 y(the)h(expansion)f(is)g(the)h(resultan)m(t)g
+(list.)150 1443 y Fk(3.5.4)63 b(Command)41 b(Substitution)275
+1709 y Ft(Command)29 b(substitution)i(allo)m(ws)h(the)f(output)g(of)g
+(a)g(command)g(to)g(replace)h(the)f(command)g(itself.)150
+1819 y(Command)e(substitution)h(o)s(ccurs)h(when)e(a)i(command)f(is)g
+(enclosed)h(as)g(follo)m(ws:)390 1975 y Fs($\()p Fj(command)11
 b Fs(\))150 2131 y Ft(or)390 2288 y Fs(`)p Fj(command)g
-Fs(`)150 2444 y Ft(Bash)45 b(p)s(erforms)f(the)h(expansion)e(b)m(y)i
-(executing)h Fq(command)i Ft(and)c(replacing)g(the)h(command)g(sub-)150
-2554 y(stitution)39 b(with)g(the)h(standard)g(output)g(of)g(the)g
-(command,)j(with)c(an)m(y)i(trailing)d(newlines)g(deleted.)150
-2663 y(Em)m(b)s(edded)30 b(newlines)f(are)j(not)f(deleted,)h(but)f
-(they)g(ma)m(y)h(b)s(e)f(remo)m(v)m(ed)i(during)c(w)m(ord)i(splitting.)
-41 b(The)150 2773 y(command)21 b(substitution)e Fs($\(cat)29
-b Fj(file)11 b Fs(\))20 b Ft(can)i(b)s(e)f(replaced)f(b)m(y)i(the)g
-(equiv)-5 b(alen)m(t)20 b(but)h(faster)h Fs($\(<)30 b
-Fj(file)11 b Fs(\))p Ft(.)275 2929 y(When)33 b(the)i(old-st)m(yle)f
-(bac)m(kquote)h(form)f(of)g(substitution)e(is)h(used,)i(bac)m(kslash)e
-(retains)h(its)f(literal)150 3039 y(meaning)k(except)i(when)e(follo)m
-(w)m(ed)h(b)m(y)g(`)p Fs($)p Ft(',)j(`)p Fs(`)p Ft(',)f(or)e(`)p
+Fs(`)150 2444 y Ft(Bash)45 b(p)s(erforms)f(the)h(expansion)f(b)m(y)h
+(executing)i Fq(command)h Ft(and)c(replacing)i(the)f(command)g(sub-)150
+2554 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
+2663 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 2773 y(command)21 b(substitution)g Fs($\(cat)29
+b Fj(file)11 b Fs(\))20 b Ft(can)i(b)s(e)f(replaced)g(b)m(y)h(the)g
+(equiv)-5 b(alen)m(t)22 b(but)f(faster)h Fs($\(<)30 b
+Fj(file)11 b Fs(\))p Ft(.)275 2929 y(When)33 b(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 3039 y(meaning)k(except)h(when)e(follo)m
+(w)m(ed)j(b)m(y)e(`)p Fs($)p Ft(',)j(`)p Fs(`)p Ft(',)f(or)e(`)p
 Fs(\\)p Ft('.)64 b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g
-(b)m(y)g(a)150 3148 y(bac)m(kslash)i(terminates)g(the)g(command)g
-(substitution.)67 b(When)40 b(using)f(the)h Fs($\()p
+(b)m(y)g(a)150 3148 y(bac)m(kslash)j(terminates)g(the)f(command)g
+(substitution.)69 b(When)40 b(using)g(the)g Fs($\()p
 Fj(command)11 b Fs(\))37 b Ft(form,)42 b(all)150 3258
 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 3414 y(Command)22 b(substitutions)e(ma)m(y)k(b)s(e)e(nested.)39
-b(T)-8 b(o)23 b(nest)g(when)f(using)g(the)h(bac)m(kquoted)h(form,)g
-(escap)s(e)150 3524 y(the)31 b(inner)d(bac)m(kquotes)k(with)d(bac)m
-(kslashes.)275 3680 y(If)f(the)i(substitution)c(app)s(ears)j(within)e
-(double)g(quotes,)j(w)m(ord)f(splitting)e(and)i(\014lename)f(expansion)
-150 3790 y(are)j(not)f(p)s(erformed)f(on)h(the)h(results.)150
-4057 y Fk(3.5.5)63 b(Arithmetic)39 b(Expansion)275 4323
-y Ft(Arithmetic)31 b(expansion)g(allo)m(ws)h(the)g(ev)-5
-b(aluation)32 b(of)h(an)f(arithmetic)g(expression)f(and)h(the)g
-(substi-)150 4433 y(tution)e(of)g(the)h(result.)39 b(The)30
-b(format)h(for)f(arithmetic)g(expansion)f(is:)390 4589
+b(.)275 3414 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 3524 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m
+(kslashes.)275 3680 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 3790 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150
+4057 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)275 4323
+y Ft(Arithmetic)33 b(expansion)f(allo)m(ws)i(the)e(ev)-5
+b(aluation)34 b(of)f(an)f(arithmetic)i(expression)e(and)g(the)g
+(substi-)150 4433 y(tution)f(of)f(the)h(result.)40 b(The)30
+b(format)h(for)f(arithmetic)i(expansion)e(is:)390 4589
 y Fs($\(\()47 b Fj(expression)55 b Fs(\)\))275 4745 y
-Ft(The)33 b(expression)f(is)h(treated)h(as)g(if)f(it)g(w)m(ere)h
-(within)d(double)i(quotes,)i(but)e(a)h(double)e(quote)i(inside)150
-4855 y(the)27 b(paren)m(theses)g(is)f(not)h(treated)h(sp)s(ecially)-8
-b(.)38 b(All)25 b(tok)m(ens)j(in)d(the)i(expression)f(undergo)g
-(parameter)h(ex-)150 4965 y(pansion,)g(command)g(substitution,)f(and)h
-(quote)i(remo)m(v)-5 b(al.)40 b(Arithmetic)26 b(expansions)h(ma)m(y)h
-(b)s(e)f(nested.)275 5121 y(The)34 b(ev)-5 b(aluation)35
-b(is)g(p)s(erformed)f(according)h(to)h(the)g(rules)e(listed)g(b)s(elo)m
-(w)h(\(see)h(Section)f(6.5)i([Shell)150 5230 y(Arithmetic],)30
-b(page)h(70\).)42 b(If)30 b(the)h(expression)e(is)g(in)m(v)-5
-b(alid,)29 b(Bash)h(prin)m(ts)f(a)i(message)g(indicating)e(failure)150
-5340 y(to)i(the)g(standard)e(error)h(and)g(no)g(substitution)e(o)s
-(ccurs.)p eop
+Ft(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
+4855 y(the)27 b(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8
+b(.)41 b(All)27 b(tok)m(ens)h(in)e(the)h(expression)g(undergo)f
+(parameter)h(ex-)150 4965 y(pansion,)h(command)f(substitution,)h(and)f
+(quote)i(remo)m(v)-5 b(al.)41 b(Arithmetic)28 b(expansions)g(ma)m(y)g
+(b)s(e)f(nested.)275 5121 y(The)34 b(ev)-5 b(aluation)37
+b(is)f(p)s(erformed)e(according)i(to)g(the)g(rules)f(listed)h(b)s(elo)m
+(w)g(\(see)g(Section)g(6.5)h([Shell)150 5230 y(Arithmetic],)32
+b(page)f(70\).)42 b(If)30 b(the)h(expression)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
+5340 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s
+(ccurs.)p eop end
 %%Page: 22 28
-22 27 bop 150 -116 a Ft(22)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)275
-539 y Ft(Pro)s(cess)33 b(substitution)f(is)h(supp)s(orted)f(on)h
-(systems)h(that)h(supp)s(ort)d(named)h(pip)s(es)f(\()p
-Fl(fif)n(o)p Ft(s\))i(or)g(the)150 649 y(`)p Fs(/dev/fd)p
-Ft(')29 b(metho)s(d)h(of)g(naming)f(op)s(en)h(\014les.)40
+TeXDict begin 22 27 bop 150 -116 a Ft(22)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fk(3.5.6)63 b(Pro)s(cess)42
+b(Substitution)275 539 y Ft(Pro)s(cess)33 b(substitution)h(is)g(supp)s
+(orted)e(on)h(systems)h(that)h(supp)s(ort)d(named)h(pip)s(es)g(\()p
+Fl(fif)n(o)p Ft(s\))h(or)g(the)150 649 y(`)p Fs(/dev/fd)p
+Ft(')29 b(metho)s(d)h(of)g(naming)g(op)s(en)g(\014les.)41
 b(It)30 b(tak)m(es)i(the)f(form)f(of)390 779 y Fs(<\()p
 Fj(list)11 b Fs(\))150 910 y Ft(or)390 1041 y Fs(>\()p
-Fj(list)g Fs(\))150 1171 y Ft(The)23 b(pro)s(cess)g Fq(list)h
-Ft(is)e(run)g(with)g(its)h(input)f(or)h(output)g(connected)h(to)h(a)e
-Fl(fif)n(o)g Ft(or)h(some)g(\014le)e(in)g(`)p Fs(/dev/fd)p
-Ft('.)150 1281 y(The)28 b(name)h(of)g(this)e(\014le)h(is)g(passed)g(as)
+Fj(list)g Fs(\))150 1171 y Ft(The)23 b(pro)s(cess)g Fq(list)j
+Ft(is)d(run)f(with)h(its)h(input)f(or)g(output)g(connected)h(to)h(a)e
+Fl(fif)n(o)g Ft(or)h(some)g(\014le)f(in)g(`)p Fs(/dev/fd)p
+Ft('.)150 1281 y(The)28 b(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)f(of)h(the)150 1391 y(expansion.)39 b(If)28 b(the)h
-Fs(>\()p Fj(list)11 b Fs(\))26 b Ft(form)i(is)g(used,)g(writing)f(to)i
-(the)g(\014le)e(will)f(pro)m(vide)i(input)f(for)h Fq(list)p
-Ft(.)39 b(If)28 b(the)150 1500 y Fs(<\()p Fj(list)11
-b Fs(\))23 b Ft(form)h(is)h(used,)g(the)h(\014le)e(passed)h(as)g(an)g
-(argumen)m(t)h(should)d(b)s(e)i(read)g(to)h(obtain)f(the)g(output)g(of)
-150 1610 y Fq(list)p Ft(.)39 b(Note)31 b(that)f(no)g(space)g(ma)m(y)g
+(result)g(of)g(the)150 1391 y(expansion.)40 b(If)28 b(the)h
+Fs(>\()p Fj(list)11 b Fs(\))26 b Ft(form)i(is)h(used,)f(writing)h(to)g
+(the)g(\014le)f(will)h(pro)m(vide)g(input)f(for)g Fq(list)p
+Ft(.)41 b(If)28 b(the)150 1500 y Fs(<\()p Fj(list)11
+b Fs(\))23 b Ft(form)h(is)i(used,)f(the)h(\014le)f(passed)g(as)g(an)g
+(argumen)m(t)h(should)e(b)s(e)h(read)g(to)h(obtain)g(the)f(output)g(of)
+150 1610 y Fq(list)p Ft(.)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 Fs(<)f Ft(or)h
-Fs(>)f Ft(and)g(the)h(left)f(paren)m(thesis,)h(otherwise)150
-1719 y(the)h(construct)f(w)m(ould)f(b)s(e)h(in)m(terpreted)g(as)g(a)h
-(redirection.)275 1850 y(When)36 b(a)m(v)-5 b(ailable,)37
-b(pro)s(cess)f(substitution)f(is)g(p)s(erformed)g(sim)m(ultaneously)f
-(with)i(parameter)h(and)150 1960 y(v)-5 b(ariable)29
-b(expansion,)h(command)g(substitution,)e(and)i(arithmetic)g(expansion.)
+Fs(>)f Ft(and)g(the)h(left)g(paren)m(thesis,)h(otherwise)150
+1719 y(the)g(construct)f(w)m(ould)g(b)s(e)g(in)m(terpreted)h(as)f(a)h
+(redirection.)275 1850 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 1960 y(v)-5 b(ariable)31
+b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.)
 150 2172 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)275
-2413 y Ft(The)35 b(shell)g(scans)h(the)g(results)f(of)h(parameter)h
-(expansion,)g(command)e(substitution,)h(and)g(arith-)150
-2522 y(metic)30 b(expansion)g(that)h(did)d(not)j(o)s(ccur)f(within)e
-(double)h(quotes)i(for)f(w)m(ord)g(splitting.)275 2653
-y(The)43 b(shell)f(treats)j(eac)m(h)h(c)m(haracter)f(of)g
-Fs($IFS)e Ft(as)h(a)g(delimiter,)i(and)d(splits)f(the)j(results)d(of)j
-(the)150 2763 y(other)40 b(expansions)e(in)m(to)i(w)m(ords)f(on)h
-(these)g(c)m(haracters.)70 b(If)39 b Fs(IFS)g Ft(is)g(unset,)j(or)d
-(its)g(v)-5 b(alue)39 b(is)g(exactly)150 2872 y Fs
-(<space><tab><newline>)p Ft(,)20 b(the)25 b(default,)g(then)f(an)m(y)g
+2413 y Ft(The)35 b(shell)i(scans)f(the)g(results)g(of)g(parameter)h
+(expansion,)h(command)d(substitution,)j(and)e(arith-)150
+2522 y(metic)31 b(expansion)g(that)g(did)e(not)i(o)s(ccur)f(within)g
+(double)g(quotes)h(for)f(w)m(ord)g(splitting.)275 2653
+y(The)43 b(shell)h(treats)h(eac)m(h)h(c)m(haracter)f(of)g
+Fs($IFS)e Ft(as)h(a)g(delimiter,)49 b(and)43 b(splits)h(the)h(results)e
+(of)i(the)150 2763 y(other)40 b(expansions)f(in)m(to)i(w)m(ords)e(on)h
+(these)g(c)m(haracters.)70 b(If)39 b Fs(IFS)g Ft(is)h(unset,)i(or)d
+(its)h(v)-5 b(alue)40 b(is)g(exactly)150 2872 y Fs
+(<space><tab><newline>)p Ft(,)20 b(the)25 b(default,)h(then)e(an)m(y)g
 (sequence)h(of)g Fs(IFS)e Ft(c)m(haracters)j(serv)m(es)f(to)g(delimit)
 150 2982 y(w)m(ords.)38 b(If)21 b Fs(IFS)h Ft(has)g(a)h(v)-5
-b(alue)22 b(other)g(than)h(the)f(default,)i(then)e(sequences)g(of)h
-(the)f(whitespace)g(c)m(haracters)150 3091 y Fs(space)k
-Ft(and)h Fs(tab)g Ft(are)h(ignored)f(at)i(the)f(b)s(eginning)d(and)i
-(end)g(of)h(the)g(w)m(ord,)g(as)g(long)f(as)h(the)g(whitespace)150
-3201 y(c)m(haracter)34 b(is)e(in)f(the)i(v)-5 b(alue)32
-b(of)g Fs(IFS)g Ft(\(an)h Fs(IFS)e Ft(whitespace)i(c)m(haracter\).)49
-b(An)m(y)32 b(c)m(haracter)i(in)e Fs(IFS)f Ft(that)150
-3311 y(is)e(not)i Fs(IFS)f Ft(whitespace,)g(along)g(with)f(an)m(y)i
-(adjacen)m(t)h Fs(IFS)d Ft(whitespace)h(c)m(haracters,)i(delimits)c(a)j
-(\014eld.)150 3420 y(A)h(sequence)h(of)f Fs(IFS)f Ft(whitespace)h(c)m
-(haracters)i(is)d(also)h(treated)h(as)g(a)f(delimiter.)44
-b(If)32 b(the)g(v)-5 b(alue)32 b(of)g Fs(IFS)150 3530
-y Ft(is)d(n)m(ull,)g(no)h(w)m(ord)g(splitting)e(o)s(ccurs.)275
-3660 y(Explicit)41 b(n)m(ull)g(argumen)m(ts)i(\()p Fs("")g
-Ft(or)h Fs('')p Ft(\))f(are)g(retained.)79 b(Unquoted)43
-b(implicit)d(n)m(ull)h(argumen)m(ts,)150 3770 y(resulting)22
-b(from)h(the)g(expansion)f(of)i(parameters)g(that)g(ha)m(v)m(e)h(no)e
-(v)-5 b(alues,)24 b(are)g(remo)m(v)m(ed.)40 b(If)23 b(a)g(parameter)150
-3880 y(with)29 b(no)h(v)-5 b(alue)30 b(is)g(expanded)f(within)f(double)
-h(quotes,)i(a)g(n)m(ull)d(argumen)m(t)j(results)e(and)h(is)f(retained.)
-275 4010 y(Note)i(that)g(if)f(no)g(expansion)f(o)s(ccurs,)h(no)h
-(splitting)d(is)h(p)s(erformed.)150 4223 y Fk(3.5.8)63
-b(Filename)40 b(Expansion)275 4463 y Ft(After)22 b(w)m(ord)g
-(splitting,)g(unless)f(the)i(`)p Fs(-f)p Ft(')f(option)g(has)g(b)s(een)
-g(set)h(\(see)g(Section)g(4.3)g([The)f(Set)h(Builtin],)150
+b(alue)23 b(other)f(than)h(the)f(default,)j(then)d(sequences)g(of)h
+(the)f(whitespace)h(c)m(haracters)150 3091 y Fs(space)j
+Ft(and)h Fs(tab)g Ft(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
+3201 y(c)m(haracter)34 b(is)f(in)f(the)h(v)-5 b(alue)33
+b(of)f Fs(IFS)g Ft(\(an)h Fs(IFS)e Ft(whitespace)j(c)m(haracter\).)49
+b(An)m(y)32 b(c)m(haracter)i(in)f Fs(IFS)e Ft(that)150
+3311 y(is)f(not)h Fs(IFS)f Ft(whitespace,)h(along)g(with)f(an)m(y)h
+(adjacen)m(t)h Fs(IFS)d Ft(whitespace)i(c)m(haracters,)h(delimits)f(a)g
+(\014eld.)150 3420 y(A)h(sequence)h(of)f Fs(IFS)f Ft(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 Fs(IFS)150 3530
+y Ft(is)e(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275
+3660 y(Explicit)44 b(n)m(ull)f(argumen)m(ts)g(\()p Fs("")g
+Ft(or)h Fs('')p Ft(\))f(are)g(retained.)80 b(Unquoted)43
+b(implicit)h(n)m(ull)f(argumen)m(ts,)150 3770 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
+3880 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 4010 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 4223 y Fk(3.5.8)63
+b(Filename)41 b(Expansion)275 4463 y Ft(After)22 b(w)m(ord)g
+(splitting,)j(unless)d(the)h(`)p Fs(-f)p Ft(')f(option)h(has)f(b)s(een)
+g(set)h(\(see)g(Section)h(4.3)f([The)f(Set)h(Builtin],)150
 4573 y(page)k(50\),)i(Bash)d(scans)h(eac)m(h)h(w)m(ord)e(for)g(the)h(c)
 m(haracters)g(`)p Fs(*)p Ft(',)h(`)p Fs(?)p Ft(',)g(and)e(`)p
 Fs([)p Ft('.)39 b(If)26 b(one)h(of)g(these)f(c)m(haracters)150
-4682 y(app)s(ears,)h(then)f(the)h(w)m(ord)f(is)g(regarded)h(as)g(a)g
-Fq(pattern)p Ft(,)g(and)g(replaced)f(with)f(an)i(alphab)s(etically)d
-(sorted)150 4792 y(list)30 b(of)i(\014le)f(names)h(matc)m(hing)g(the)g
-(pattern.)45 b(If)32 b(no)f(matc)m(hing)h(\014le)f(names)h(are)g
-(found,)f(and)h(the)g(shell)150 4902 y(option)27 b Fs(nullglob)f
-Ft(is)h(disabled,)g(the)h(w)m(ord)g(is)f(left)g(unc)m(hanged.)40
-b(If)28 b(the)g Fs(nullglob)e Ft(option)h(is)g(set,)j(and)150
-5011 y(no)38 b(matc)m(hes)h(are)f(found,)h(the)f(w)m(ord)f(is)g(remo)m
-(v)m(ed.)65 b(If)37 b(the)h Fs(failglob)e Ft(shell)g(option)h(is)g
-(set,)k(and)c(no)150 5121 y(matc)m(hes)f(are)g(found,)f(an)g(error)f
-(message)j(is)d(prin)m(ted)f(and)i(the)g(command)g(is)f(not)h
-(executed.)56 b(If)35 b(the)150 5230 y(shell)c(option)i
-Fs(nocaseglob)d Ft(is)i(enabled,)h(the)h(matc)m(h)g(is)e(p)s(erformed)f
-(without)h(regard)h(to)h(the)g(case)g(of)150 5340 y(alphab)s(etic)29
-b(c)m(haracters.)p eop
+4682 y(app)s(ears,)h(then)f(the)h(w)m(ord)f(is)h(regarded)g(as)g(a)g
+Fq(pattern)p Ft(,)g(and)g(replaced)g(with)f(an)h(alphab)s(etically)h
+(sorted)150 4792 y(list)k(of)g(\014le)g(names)g(matc)m(hing)h(the)f
+(pattern.)45 b(If)32 b(no)f(matc)m(hing)i(\014le)f(names)g(are)g
+(found,)f(and)h(the)g(shell)150 4902 y(option)c Fs(nullglob)e
+Ft(is)i(disabled,)h(the)f(w)m(ord)g(is)g(left)g(unc)m(hanged.)40
+b(If)28 b(the)g Fs(nullglob)e Ft(option)i(is)g(set,)i(and)150
+5011 y(no)38 b(matc)m(hes)h(are)f(found,)h(the)f(w)m(ord)f(is)h(remo)m
+(v)m(ed.)65 b(If)37 b(the)h Fs(failglob)e Ft(shell)i(option)g(is)g
+(set,)j(and)c(no)150 5121 y(matc)m(hes)f(are)g(found,)f(an)g(error)f
+(message)j(is)e(prin)m(ted)f(and)h(the)g(command)g(is)g(not)g
+(executed.)56 b(If)35 b(the)150 5230 y(shell)e(option)h
+Fs(nocaseglob)c Ft(is)j(enabled,)h(the)g(matc)m(h)g(is)f(p)s(erformed)e
+(without)i(regard)g(to)h(the)g(case)g(of)150 5340 y(alphab)s(etic)d(c)m
+(haracters.)p eop end
 %%Page: 23 29
-23 28 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2246 b(23)275 299 y(When)21
-b(a)i(pattern)f(is)f(used)h(for)f(\014lename)h(generation,)i(the)e(c)m
-(haracter)i(`)p Fs(.)p Ft(')e(at)h(the)f(start)h(of)f(a)h(\014lename)
-150 408 y(or)g(immediately)f(follo)m(wing)g(a)i(slash)e(m)m(ust)i(b)s
-(e)f(matc)m(hed)h(explicitly)-8 b(,)23 b(unless)f(the)h(shell)f(option)
-h Fs(dotglob)150 518 y Ft(is)30 b(set.)45 b(When)31 b(matc)m(hing)g(a)h
-(\014le)e(name,)i(the)g(slash)e(c)m(haracter)j(m)m(ust)e(alw)m(a)m(ys)h
-(b)s(e)f(matc)m(hed)h(explicitly)-8 b(.)150 628 y(In)30
-b(other)g(cases,)i(the)e(`)p Fs(.)p Ft(')h(c)m(haracter)h(is)d(not)i
-(treated)g(sp)s(ecially)-8 b(.)275 772 y(See)30 b(the)g(description)d
-(of)j Fs(shopt)f Ft(in)f(Section)i(4.2)h([Bash)f(Builtins],)e(page)i
-(39,)h(for)f(a)g(description)e(of)150 882 y(the)j Fs(nocaseglob)p
-Ft(,)c Fs(nullglob)p Ft(,)i Fs(failglob)p Ft(,)f(and)i
-Fs(dotglob)e Ft(options.)275 1026 y(The)k Fs(GLOBIGNORE)f
-Ft(shell)g(v)-5 b(ariable)32 b(ma)m(y)i(b)s(e)f(used)f(to)i(restrict)f
-(the)h(set)f(of)h(\014lenames)e(matc)m(hing)i(a)150 1136
-y(pattern.)39 b(If)25 b Fs(GLOBIGNORE)e Ft(is)i(set,)i(eac)m(h)g(matc)m
-(hing)f(\014lename)f(that)h(also)g(matc)m(hes)g(one)g(of)g(the)g
-(patterns)150 1245 y(in)32 b Fs(GLOBIGNORE)e Ft(is)i(remo)m(v)m(ed)i
-(from)e(the)i(list)d(of)i(matc)m(hes.)50 b(The)33 b(\014lenames)f(`)p
-Fs(.)p Ft(')h(and)f(`)p Fs(..)p Ft(')h(are)g(alw)m(a)m(ys)150
-1355 y(ignored)f(when)f Fs(GLOBIGNORE)f Ft(is)i(set)h(and)f(not)h(n)m
-(ull.)46 b(Ho)m(w)m(ev)m(er,)35 b(setting)e Fs(GLOBIGNORE)d
-Ft(to)j(a)g(non-n)m(ull)150 1465 y(v)-5 b(alue)33 b(has)g(the)h
-(e\013ect)h(of)f(enabling)e(the)i Fs(dotglob)e Ft(shell)f(option,)k(so)
-f(all)e(other)i(\014lenames)f(b)s(eginning)150 1574 y(with)42
-b(a)i(`)p Fs(.)p Ft(')f(will)e(matc)m(h.)80 b(T)-8 b(o)44
-b(get)h(the)e(old)g(b)s(eha)m(vior)f(of)i(ignoring)d(\014lenames)i(b)s
-(eginning)e(with)h(a)150 1684 y(`)p Fs(.)p Ft(',)d(mak)m(e)g(`)p
-Fs(.*)p Ft(')e(one)g(of)g(the)h(patterns)f(in)f Fs(GLOBIGNORE)p
-Ft(.)58 b(The)37 b Fs(dotglob)e Ft(option)i(is)f(disabled)f(when)150
-1793 y Fs(GLOBIGNORE)28 b Ft(is)h(unset.)150 2037 y Fk(3.5.8.1)63
+TeXDict begin 23 28 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)275 299
+y(When)21 b(a)i(pattern)f(is)g(used)g(for)f(\014lename)i(generation,)i
+(the)d(c)m(haracter)i(`)p Fs(.)p Ft(')e(at)h(the)f(start)h(of)f(a)h
+(\014lename)150 408 y(or)g(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 Fs(dotglob)150 518 y Ft(is)31 b(set.)45
+b(When)31 b(matc)m(hing)h(a)g(\014le)f(name,)h(the)g(slash)f(c)m
+(haracter)i(m)m(ust)e(alw)m(a)m(ys)i(b)s(e)e(matc)m(hed)h(explicitly)-8
+b(.)150 628 y(In)30 b(other)g(cases,)i(the)e(`)p Fs(.)p
+Ft(')h(c)m(haracter)h(is)e(not)h(treated)g(sp)s(ecially)-8
+b(.)275 772 y(See)30 b(the)g(description)f(of)h Fs(shopt)f
+Ft(in)g(Section)i(4.2)g([Bash)f(Builtins],)h(page)f(39,)h(for)f(a)g
+(description)g(of)150 882 y(the)h Fs(nocaseglob)p Ft(,)c
+Fs(nullglob)p Ft(,)i Fs(failglob)p Ft(,)f(and)i Fs(dotglob)e
+Ft(options.)275 1026 y(The)k Fs(GLOBIGNORE)f Ft(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 1136 y(pattern.)k(If)25
+b Fs(GLOBIGNORE)e Ft(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
+1245 y(in)33 b Fs(GLOBIGNORE)d Ft(is)j(remo)m(v)m(ed)h(from)e(the)i
+(list)f(of)g(matc)m(hes.)50 b(The)33 b(\014lenames)g(`)p
+Fs(.)p Ft(')g(and)f(`)p Fs(..)p Ft(')h(are)g(alw)m(a)m(ys)150
+1355 y(ignored)g(when)e Fs(GLOBIGNORE)f Ft(is)j(set)g(and)f(not)h(n)m
+(ull.)48 b(Ho)m(w)m(ev)m(er,)35 b(setting)f Fs(GLOBIGNORE)c
+Ft(to)j(a)g(non-n)m(ull)150 1465 y(v)-5 b(alue)34 b(has)f(the)h
+(e\013ect)h(of)f(enabling)g(the)g Fs(dotglob)e Ft(shell)h(option,)j(so)
+e(all)g(other)g(\014lenames)g(b)s(eginning)150 1574 y(with)43
+b(a)h(`)p Fs(.)p Ft(')f(will)h(matc)m(h.)80 b(T)-8 b(o)44
+b(get)h(the)e(old)h(b)s(eha)m(vior)f(of)h(ignoring)f(\014lenames)h(b)s
+(eginning)f(with)g(a)150 1684 y(`)p Fs(.)p Ft(',)c(mak)m(e)g(`)p
+Fs(.*)p Ft(')e(one)g(of)g(the)h(patterns)f(in)g Fs(GLOBIGNORE)p
+Ft(.)58 b(The)37 b Fs(dotglob)e Ft(option)j(is)f(disabled)g(when)150
+1793 y Fs(GLOBIGNORE)28 b Ft(is)i(unset.)150 2037 y Fk(3.5.8.1)63
 b(P)m(attern)40 b(Matc)m(hing)275 2291 y Ft(An)m(y)33
-b(c)m(haracter)i(that)f(app)s(ears)f(in)f(a)i(pattern,)g(other)g(than)f
-(the)g(sp)s(ecial)f(pattern)i(c)m(haracters)h(de-)150
-2401 y(scrib)s(ed)29 b(b)s(elo)m(w,)h(matc)m(hes)i(itself.)41
-b(The)31 b Fl(nul)f Ft(c)m(haracter)i(ma)m(y)f(not)h(o)s(ccur)e(in)g(a)
-h(pattern.)42 b(A)31 b(bac)m(kslash)150 2511 y(escap)s(es)36
-b(the)f(follo)m(wing)f(c)m(haracter;)40 b(the)c(escaping)f(bac)m
-(kslash)g(is)f(discarded)g(when)h(matc)m(hing.)55 b(The)150
-2620 y(sp)s(ecial)29 b(pattern)h(c)m(haracters)i(m)m(ust)f(b)s(e)e
-(quoted)i(if)e(they)i(are)f(to)i(b)s(e)d(matc)m(hed)i(literally)-8
-b(.)275 2765 y(The)29 b(sp)s(ecial)g(pattern)i(c)m(haracters)h(ha)m(v)m
-(e)f(the)g(follo)m(wing)e(meanings:)150 2939 y Fs(*)432
-b Ft(Matc)m(hes)32 b(an)m(y)f(string,)e(including)e(the)k(n)m(ull)d
-(string.)150 3108 y Fs(?)432 b Ft(Matc)m(hes)32 b(an)m(y)f(single)e(c)m
+b(c)m(haracter)i(that)f(app)s(ears)f(in)g(a)h(pattern,)g(other)g(than)f
+(the)g(sp)s(ecial)h(pattern)g(c)m(haracters)h(de-)150
+2401 y(scrib)s(ed)30 b(b)s(elo)m(w,)h(matc)m(hes)h(itself.)43
+b(The)31 b Fl(nul)f Ft(c)m(haracter)i(ma)m(y)f(not)h(o)s(ccur)e(in)h(a)
+g(pattern.)42 b(A)31 b(bac)m(kslash)150 2511 y(escap)s(es)36
+b(the)f(follo)m(wing)i(c)m(haracter;)j(the)c(escaping)g(bac)m(kslash)g
+(is)f(discarded)g(when)g(matc)m(hing.)56 b(The)150 2620
+y(sp)s(ecial)31 b(pattern)f(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 2765 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 2939 y Fs(*)432
+b Ft(Matc)m(hes)32 b(an)m(y)f(string,)f(including)g(the)h(n)m(ull)f
+(string.)150 3108 y Fs(?)432 b Ft(Matc)m(hes)32 b(an)m(y)f(single)g(c)m
 (haracter.)150 3278 y Fs([...)o(])241 b Ft(Matc)m(hes)27
-b(an)m(y)e(one)g(of)g(the)g(enclosed)f(c)m(haracters.)41
-b(A)25 b(pair)e(of)i(c)m(haracters)i(separated)e(b)m(y)g(a)630
+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
 3387 y(h)m(yphen)i(denotes)h(a)g Fq(range)g(expression)p
-Ft(;)f(an)m(y)i(c)m(haracter)g(that)f(sorts)g(b)s(et)m(w)m(een)g(those)
-h(t)m(w)m(o)630 3497 y(c)m(haracters,)f(inclusiv)m(e,)c(using)f(the)i
-(curren)m(t)f(lo)s(cale's)h(collating)f(sequence)h(and)f(c)m(haracter)
-630 3606 y(set,)31 b(is)e(matc)m(hed.)42 b(If)30 b(the)g(\014rst)g(c)m
-(haracter)i(follo)m(wing)d(the)h(`)p Fs([)p Ft(')h(is)e(a)i(`)p
+Ft(;)g(an)m(y)h(c)m(haracter)g(that)f(sorts)g(b)s(et)m(w)m(een)g(those)
+h(t)m(w)m(o)630 3497 y(c)m(haracters,)f(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 3606 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 Fs([)p Ft(')h(is)f(a)h(`)p
 Fs(!)p Ft(')f(or)g(a)h(`)p Fs(^)p Ft(')g(then)f(an)m(y)630
-3716 y(c)m(haracter)c(not)f(enclosed)f(is)g(matc)m(hed.)40
+3716 y(c)m(haracter)c(not)f(enclosed)g(is)g(matc)m(hed.)40
 b(A)25 b(`)p Fp(\000)p Ft(')f(ma)m(y)i(b)s(e)e(matc)m(hed)h(b)m(y)f
-(including)e(it)i(as)h(the)630 3826 y(\014rst)32 b(or)h(last)g(c)m
-(haracter)i(in)d(the)h(set.)50 b(A)33 b(`)p Fs(])p Ft(')g(ma)m(y)h(b)s
-(e)e(matc)m(hed)i(b)m(y)f(including)d(it)i(as)i(the)630
-3935 y(\014rst)25 b(c)m(haracter)i(in)d(the)i(set.)40
-b(The)25 b(sorting)g(order)g(of)h(c)m(haracters)h(in)e(range)h
-(expressions)e(is)630 4045 y(determined)e(b)m(y)h(the)g(curren)m(t)f
-(lo)s(cale)h(and)g(the)g(v)-5 b(alue)22 b(of)h(the)h
-Fs(LC_COLLATE)c Ft(shell)h(v)-5 b(ariable,)630 4154 y(if)29
-b(set.)630 4294 y(F)-8 b(or)34 b(example,)f(in)f(the)h(default)f(C)g
-(lo)s(cale,)i(`)p Fs([a-dx-z])p Ft(')d(is)h(equiv)-5
-b(alen)m(t)32 b(to)i(`)p Fs([abcdxyz])p Ft('.)630 4403
-y(Man)m(y)68 b(lo)s(cales)f(sort)h(c)m(haracters)h(in)d(dictionary)h
-(order,)76 b(and)67 b(in)f(these)i(lo)s(cales)630 4513
-y(`)p Fs([a-dx-z])p Ft(')36 b(is)h(t)m(ypically)g(not)h(equiv)-5
-b(alen)m(t)37 b(to)i(`)p Fs([abcdxyz])p Ft(';)g(it)f(migh)m(t)f(b)s(e)g
+(including)h(it)g(as)g(the)630 3826 y(\014rst)32 b(or)h(last)h(c)m
+(haracter)h(in)e(the)g(set.)50 b(A)33 b(`)p Fs(])p Ft(')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
+3935 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 4045 y(determined)e(b)m(y)g(the)g(curren)m(t)f
+(lo)s(cale)j(and)e(the)g(v)-5 b(alue)23 b(of)g(the)h
+Fs(LC_COLLATE)c Ft(shell)j(v)-5 b(ariable,)630 4154 y(if)30
+b(set.)630 4294 y(F)-8 b(or)34 b(example,)g(in)f(the)g(default)g(C)f
+(lo)s(cale,)k(`)p Fs([a-dx-z])p Ft(')31 b(is)i(equiv)-5
+b(alen)m(t)34 b(to)g(`)p Fs([abcdxyz])p Ft('.)630 4403
+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 4513
+y(`)p Fs([a-dx-z])p Ft(')36 b(is)i(t)m(ypically)i(not)e(equiv)-5
+b(alen)m(t)39 b(to)g(`)p Fs([abcdxyz])p Ft(';)g(it)g(migh)m(t)f(b)s(e)f
 (equiv)-5 b(alen)m(t)630 4623 y(to)34 b(`)p Fs([aBbCcDdxXyYz])p
-Ft(',)c(for)j(example.)48 b(T)-8 b(o)33 b(obtain)g(the)g(traditional)e
-(in)m(terpretation)i(of)630 4732 y(ranges)g(in)e(brac)m(k)m(et)j
-(expressions,)f(y)m(ou)g(can)g(force)g(the)g(use)f(of)h(the)g(C)f(lo)s
-(cale)g(b)m(y)h(setting)630 4842 y(the)e Fs(LC_COLLATE)c
-Ft(or)k Fs(LC_ALL)d Ft(en)m(vironmen)m(t)i(v)-5 b(ariable)29
-b(to)i(the)g(v)-5 b(alue)30 b(`)p Fs(C)p Ft('.)630 4981
-y(Within)21 b(`)p Fs([)p Ft(')j(and)e(`)p Fs(])p Ft(',)j
-Fq(c)m(haracter)g(classes)i Ft(can)d(b)s(e)e(sp)s(eci\014ed)g(using)f
-(the)j(syn)m(tax)f Fs([:)p Fq(class)t Fs(:])p Ft(,)630
-5091 y(where)j Fq(class)k Ft(is)c(one)h(of)g(the)g(follo)m(wing)e
-(classes)i(de\014ned)e(in)h(the)g Fl(posix)g Ft(1003.2)k(standard:)870
+Ft(',)c(for)j(example.)49 b(T)-8 b(o)33 b(obtain)h(the)f(traditional)h
+(in)m(terpretation)h(of)630 4732 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 4842 y(the)e Fs(LC_COLLATE)c
+Ft(or)k Fs(LC_ALL)d Ft(en)m(vironmen)m(t)j(v)-5 b(ariable)31
+b(to)g(the)g(v)-5 b(alue)31 b(`)p Fs(C)p Ft('.)630 4981
+y(Within)23 b(`)p Fs([)p Ft(')h(and)e(`)p Fs(])p Ft(',)j
+Fq(c)m(haracter)g(classes)j Ft(can)c(b)s(e)e(sp)s(eci\014ed)h(using)f
+(the)i(syn)m(tax)f Fs([:)p Fq(class)t Fs(:])p Ft(,)630
+5091 y(where)j Fq(class)31 b Ft(is)c(one)g(of)g(the)g(follo)m(wing)h
+(classes)g(de\014ned)d(in)i(the)f Fl(posix)g Ft(1003.2)k(standard:)870
 5230 y Fs(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g
 (lower)870 5340 y(print)g(punct)g(space)f(upper)h(word)190
-b(xdigit)p eop
+b(xdigit)p eop end
 %%Page: 24 30
-24 29 bop 150 -116 a Ft(24)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y(A)42 b(c)m(haracter)h(class)e(matc)m(hes)i(an)m(y)f(c)m(haracter)
-h(b)s(elonging)d(to)i(that)g(class.)74 b(The)41 b Fs(word)630
-408 y Ft(c)m(haracter)32 b(class)e(matc)m(hes)i(letters,)e(digits,)g
-(and)f(the)i(c)m(haracter)h(`)p Fs(_)p Ft('.)630 544
-y(Within)23 b(`)p Fs([)p Ft(')h(and)g(`)p Fs(])p Ft(',)i(an)e
-Fq(equiv)-5 b(alence)24 b(class)k Ft(can)c(b)s(e)g(sp)s(eci\014ed)f
-(using)g(the)h(syn)m(tax)h Fs([=)p Fq(c)6 b Fs(=])p Ft(,)630
-653 y(whic)m(h)28 b(matc)m(hes)j(all)d(c)m(haracters)j(with)d(the)i
-(same)g(collation)e(w)m(eigh)m(t)i(\(as)g(de\014ned)e(b)m(y)i(the)630
-763 y(curren)m(t)g(lo)s(cale\))h(as)f(the)h(c)m(haracter)h
-Fq(c)p Ft(.)630 898 y(Within)20 b(`)p Fs([)p Ft(')h(and)g(`)p
-Fs(])p Ft(',)j(the)d(syn)m(tax)h Fs([.)p Fq(sym)m(b)s(ol)t
-Fs(.])d Ft(matc)m(hes)j(the)g(collating)f(sym)m(b)s(ol)f
-Fq(sym)m(b)s(ol)p Ft(.)275 1061 y(If)29 b(the)g Fs(extglob)f
-Ft(shell)f(option)i(is)g(enabled)f(using)g(the)i Fs(shopt)e
-Ft(builtin,)e(sev)m(eral)k(extended)g(pattern)150 1170
-y(matc)m(hing)36 b(op)s(erators)f(are)h(recognized.)57
-b(In)35 b(the)g(follo)m(wing)f(description,)h(a)h Fq(pattern-list)h
-Ft(is)e(a)h(list)e(of)150 1280 y(one)f(or)f(more)h(patterns)f
-(separated)h(b)m(y)f(a)h(`)p Fs(|)p Ft('.)47 b(Comp)s(osite)32
-b(patterns)g(ma)m(y)i(b)s(e)d(formed)h(using)f(one)i(or)150
-1389 y(more)e(of)f(the)h(follo)m(wing)d(sub-patterns:)150
+TeXDict begin 24 29 bop 150 -116 a Ft(24)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(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 Fs(word)630 408 y Ft(c)m(haracter)32 b(class)f(matc)m(hes)h
+(letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p
+Fs(_)p Ft('.)630 544 y(Within)25 b(`)p Fs([)p Ft(')f(and)g(`)p
+Fs(])p Ft(',)i(an)e Fq(equiv)-5 b(alence)26 b(class)j
+Ft(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h
+Fs([=)p Fq(c)6 b Fs(=])p Ft(,)630 653 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 763 y(curren)m(t)g(lo)s(cale\))j(as)d(the)
+h(c)m(haracter)h Fq(c)p Ft(.)630 898 y(Within)22 b(`)p
+Fs([)p Ft(')f(and)g(`)p Fs(])p Ft(',)j(the)d(syn)m(tax)h
+Fs([.)p Fq(sym)m(b)s(ol)t Fs(.])e Ft(matc)m(hes)i(the)g(collating)i
+(sym)m(b)s(ol)d Fq(sym)m(b)s(ol)p Ft(.)275 1061 y(If)29
+b(the)g Fs(extglob)f Ft(shell)h(option)h(is)g(enabled)f(using)g(the)h
+Fs(shopt)e Ft(builtin,)h(sev)m(eral)i(extended)f(pattern)150
+1170 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 Fq(pattern-list)j
+Ft(is)d(a)g(list)g(of)150 1280 y(one)d(or)f(more)h(patterns)f
+(separated)h(b)m(y)f(a)h(`)p Fs(|)p Ft('.)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
+1389 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150
 1551 y Fs(?\()p Fj(pattern-list)11 b Fs(\))630 1661 y
 Ft(Matc)m(hes)32 b(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m
-(en)f(patterns.)150 1822 y Fs(*\()p Fj(pattern-list)11
+(en)g(patterns.)150 1822 y Fs(*\()p Fj(pattern-list)11
 b Fs(\))630 1932 y Ft(Matc)m(hes)32 b(zero)f(or)g(more)f(o)s
-(ccurrences)h(of)f(the)h(giv)m(en)f(patterns.)150 2093
+(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.)150 2093
 y Fs(+\()p Fj(pattern-list)11 b Fs(\))630 2203 y Ft(Matc)m(hes)32
-b(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m(en)h(patterns.)
+b(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m(en)i(patterns.)
 150 2364 y Fs(@\()p Fj(pattern-list)11 b Fs(\))630 2473
-y Ft(Matc)m(hes)32 b(exactly)f(one)g(of)f(the)h(giv)m(en)f(patterns.)
+y Ft(Matc)m(hes)32 b(exactly)g(one)f(of)f(the)h(giv)m(en)g(patterns.)
 150 2635 y Fs(!\()p Fj(pattern-list)11 b Fs(\))630 2744
-y Ft(Matc)m(hes)32 b(an)m(ything)e(except)h(one)g(of)f(the)h(giv)m(en)f
+y Ft(Matc)m(hes)32 b(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g
 (patterns.)150 2972 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7
-b(al)275 3218 y Ft(After)32 b(the)h(preceding)e(expansions,)h(all)f
-(unquoted)h(o)s(ccurrences)g(of)h(the)f(c)m(haracters)i(`)p
+b(al)275 3218 y Ft(After)32 b(the)h(preceding)f(expansions,)h(all)g
+(unquoted)f(o)s(ccurrences)g(of)h(the)f(c)m(haracters)i(`)p
 Fs(\\)p Ft(',)f(`)p Fs(')p Ft(',)h(and)150 3327 y(`)p
-Fs(")p Ft(')d(that)g(did)d(not)j(result)e(from)h(one)h(of)f(the)h(ab)s
-(o)m(v)m(e)g(expansions)e(are)i(remo)m(v)m(ed.)150 3589
-y Fr(3.6)68 b(Redirections)275 3835 y Ft(Before)33 b(a)h(command)e(is)g
-(executed,)j(its)d(input)f(and)i(output)f(ma)m(y)i(b)s(e)e
-Fq(redirected)k Ft(using)31 b(a)i(sp)s(ecial)150 3945
-y(notation)f(in)m(terpreted)g(b)m(y)g(the)g(shell.)44
-b(Redirection)31 b(ma)m(y)i(also)f(b)s(e)g(used)f(to)i(op)s(en)e(and)h
-(close)g(\014les)f(for)150 4054 y(the)i(curren)m(t)g(shell)e(execution)
-i(en)m(vironmen)m(t.)48 b(The)33 b(follo)m(wing)e(redirection)h(op)s
-(erators)h(ma)m(y)h(precede)150 4164 y(or)29 b(app)s(ear)g(an)m(ywhere)
-g(within)e(a)j(simple)d(command)i(or)h(ma)m(y)g(follo)m(w)e(a)i
-(command.)40 b(Redirections)29 b(are)150 4274 y(pro)s(cessed)h(in)f
-(the)h(order)g(they)h(app)s(ear,)f(from)g(left)g(to)h(righ)m(t.)275
-4410 y(In)c(the)i(follo)m(wing)e(descriptions,)h(if)f(the)i(\014le)f
-(descriptor)f(n)m(um)m(b)s(er)h(is)f(omitted,)i(and)g(the)f(\014rst)g
-(c)m(har-)150 4519 y(acter)42 b(of)f(the)g(redirection)e(op)s(erator)i
-(is)f(`)p Fs(<)p Ft(',)j(the)e(redirection)e(refers)i(to)g(the)g
-(standard)f(input)e(\(\014le)150 4629 y(descriptor)32
+Fs(")p Ft(')d(that)g(did)e(not)i(result)f(from)g(one)h(of)f(the)h(ab)s
+(o)m(v)m(e)g(expansions)f(are)h(remo)m(v)m(ed.)150 3589
+y Fr(3.6)68 b(Redirections)275 3835 y Ft(Before)33 b(a)h(command)e(is)h
+(executed,)i(its)e(input)f(and)h(output)f(ma)m(y)i(b)s(e)e
+Fq(redirected)37 b Ft(using)32 b(a)h(sp)s(ecial)150 3945
+y(notation)g(in)m(terpreted)g(b)m(y)f(the)g(shell.)46
+b(Redirection)33 b(ma)m(y)g(also)g(b)s(e)f(used)f(to)i(op)s(en)e(and)h
+(close)h(\014les)f(for)150 4054 y(the)h(curren)m(t)g(shell)g(execution)
+h(en)m(vironmen)m(t.)49 b(The)33 b(follo)m(wing)h(redirection)g(op)s
+(erators)f(ma)m(y)h(precede)150 4164 y(or)29 b(app)s(ear)g(an)m(ywhere)
+g(within)g(a)h(simple)f(command)g(or)h(ma)m(y)g(follo)m(w)g(a)g
+(command.)40 b(Redirections)31 b(are)150 4274 y(pro)s(cessed)f(in)g
+(the)g(order)g(they)h(app)s(ear,)f(from)g(left)h(to)g(righ)m(t.)275
+4410 y(In)c(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g
+(descriptor)f(n)m(um)m(b)s(er)g(is)g(omitted,)i(and)f(the)f(\014rst)g
+(c)m(har-)150 4519 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g
+(is)g(`)p Fs(<)p Ft(',)i(the)e(redirection)g(refers)g(to)g(the)g
+(standard)f(input)f(\(\014le)150 4629 y(descriptor)33
 b(0\).)49 b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f
-(redirection)e(op)s(erator)j(is)e(`)p Fs(>)p Ft(',)i(the)f(redirection)
-e(refers)150 4739 y(to)g(the)g(standard)e(output)h(\(\014le)g
-(descriptor)f(1\).)275 4875 y(The)i(w)m(ord)h(follo)m(wing)f(the)i
-(redirection)e(op)s(erator)h(in)f(the)i(follo)m(wing)e(descriptions,)g
-(unless)f(other-)150 4984 y(wise)20 b(noted,)j(is)d(sub)5
-b(jected)21 b(to)h(brace)f(expansion,)h(tilde)e(expansion,)i(parameter)
-f(expansion,)h(command)150 5094 y(substitution,)29 b(arithmetic)h
-(expansion,)g(quote)i(remo)m(v)-5 b(al,)32 b(\014lename)e(expansion,)g
-(and)g(w)m(ord)h(splitting.)150 5204 y(If)f(it)g(expands)f(to)i(more)g
+(redirection)g(op)s(erator)h(is)f(`)p Fs(>)p Ft(',)h(the)f(redirection)
+g(refers)150 4739 y(to)e(the)g(standard)e(output)h(\(\014le)h
+(descriptor)f(1\).)275 4875 y(The)h(w)m(ord)h(follo)m(wing)i(the)f
+(redirection)g(op)s(erator)f(in)g(the)h(follo)m(wing)h(descriptions,)f
+(unless)e(other-)150 4984 y(wise)21 b(noted,)i(is)e(sub)5
+b(jected)21 b(to)h(brace)f(expansion,)i(tilde)f(expansion,)h(parameter)
+e(expansion,)i(command)150 5094 y(substitution,)31 b(arithmetic)h
+(expansion,)f(quote)h(remo)m(v)-5 b(al,)33 b(\014lename)e(expansion,)g
+(and)f(w)m(ord)h(splitting.)150 5204 y(If)f(it)h(expands)e(to)i(more)g
 (than)f(one)h(w)m(ord,)f(Bash)h(rep)s(orts)e(an)h(error.)275
-5340 y(Note)h(that)g(the)g(order)f(of)g(redirections)f(is)h
-(signi\014can)m(t.)39 b(F)-8 b(or)31 b(example,)g(the)f(command)p
-eop
+5340 y(Note)h(that)g(the)g(order)f(of)g(redirections)h(is)g
+(signi\014can)m(t.)41 b(F)-8 b(or)31 b(example,)h(the)e(command)p
+eop end
 %%Page: 25 31
-25 30 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2246 b(25)390 299 y Fs(ls)47
-b(>)h Fj(dirlist)56 b Fs(2>&1)150 437 y Ft(directs)27
-b(b)s(oth)g(standard)g(output)g(\(\014le)g(descriptor)f(1\))j(and)e
-(standard)f(error)i(\(\014le)f(descriptor)f(2\))i(to)h(the)150
-547 y(\014le)g Fq(dirlist)p Ft(,)f(while)g(the)j(command)390
-685 y Fs(ls)47 b(2>&1)g(>)g Fj(dirlist)150 823 y Ft(directs)33
-b(only)g(the)g(standard)g(output)g(to)h(\014le)f Fq(dirlist)p
-Ft(,)f(b)s(ecause)h(the)h(standard)f(error)g(w)m(as)h(duplicated)150
+TeXDict begin 25 30 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)390 299
+y Fs(ls)47 b(>)h Fj(dirlist)56 b Fs(2>&1)150 437 y Ft(directs)28
+b(b)s(oth)f(standard)g(output)g(\(\014le)h(descriptor)f(1\))i(and)e
+(standard)f(error)i(\(\014le)g(descriptor)f(2\))h(to)h(the)150
+547 y(\014le)h Fq(dirlist)p Ft(,)h(while)f(the)h(command)390
+685 y Fs(ls)47 b(2>&1)g(>)g Fj(dirlist)150 823 y Ft(directs)34
+b(only)g(the)f(standard)g(output)g(to)h(\014le)g Fq(dirlist)p
+Ft(,)h(b)s(ecause)e(the)h(standard)f(error)g(w)m(as)h(duplicated)150
 932 y(as)d(standard)e(output)h(b)s(efore)g(the)h(standard)e(output)h(w)
-m(as)h(redirected)f(to)h Fq(dirlist)p Ft(.)275 1070 y(Bash)26
-b(handles)e(sev)m(eral)j(\014lenames)e(sp)s(ecially)f(when)i(they)g
-(are)g(used)g(in)f(redirections,)h(as)g(describ)s(ed)150
-1180 y(in)j(the)i(follo)m(wing)d(table:)150 1345 y Fs(/dev/fd/)p
-Fj(fd)630 1454 y Ft(If)i Fq(fd)j Ft(is)c(a)i(v)-5 b(alid)29
-b(in)m(teger,)i(\014le)e(descriptor)h Fq(fd)j Ft(is)c(duplicated.)150
-1617 y Fs(/dev/stdin)630 1727 y Ft(File)h(descriptor)f(0)i(is)e
-(duplicated.)150 1890 y Fs(/dev/stdout)630 1999 y Ft(File)h(descriptor)
-f(1)i(is)e(duplicated.)150 2162 y Fs(/dev/stderr)630
-2272 y Ft(File)h(descriptor)f(2)i(is)e(duplicated.)150
+m(as)h(redirected)g(to)g Fq(dirlist)p Ft(.)275 1070 y(Bash)26
+b(handles)f(sev)m(eral)j(\014lenames)e(sp)s(ecially)h(when)f(they)g
+(are)g(used)g(in)g(redirections,)i(as)e(describ)s(ed)150
+1180 y(in)k(the)h(follo)m(wing)g(table:)150 1345 y Fs(/dev/fd/)p
+Fj(fd)630 1454 y Ft(If)f Fq(fd)j Ft(is)d(a)h(v)-5 b(alid)31
+b(in)m(teger,)h(\014le)e(descriptor)h Fq(fd)i Ft(is)d(duplicated.)150
+1617 y Fs(/dev/stdin)630 1727 y Ft(File)i(descriptor)e(0)h(is)f
+(duplicated.)150 1890 y Fs(/dev/stdout)630 1999 y Ft(File)i(descriptor)
+e(1)h(is)f(duplicated.)150 2162 y Fs(/dev/stderr)630
+2272 y Ft(File)i(descriptor)e(2)h(is)f(duplicated.)150
 2435 y Fs(/dev/tcp/)p Fj(host)11 b Fs(/)p Fj(port)630
-2544 y Ft(If)41 b Fq(host)i Ft(is)e(a)h(v)-5 b(alid)39
-b(hostname)j(or)f(In)m(ternet)h(address,)i(and)c Fq(p)s(ort)j
-Ft(is)e(an)g(in)m(teger)h(p)s(ort)630 2654 y(n)m(um)m(b)s(er)i(or)h
-(service)g(name,)k(Bash)c(attempts)h(to)g(op)s(en)f(a)g(TCP)g
-(connection)g(to)h(the)630 2764 y(corresp)s(onding)28
+2544 y Ft(If)41 b Fq(host)i Ft(is)f(a)g(v)-5 b(alid)41
+b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c Fq(p)s(ort)j
+Ft(is)f(an)f(in)m(teger)i(p)s(ort)630 2654 y(n)m(um)m(b)s(er)h(or)h
+(service)h(name,)j(Bash)c(attempts)h(to)g(op)s(en)f(a)g(TCP)g
+(connection)h(to)g(the)630 2764 y(corresp)s(onding)29
 b(so)s(c)m(k)m(et.)150 2927 y Fs(/dev/udp/)p Fj(host)11
-b Fs(/)p Fj(port)630 3036 y Ft(If)41 b Fq(host)i Ft(is)e(a)h(v)-5
-b(alid)39 b(hostname)j(or)f(In)m(ternet)h(address,)i(and)c
-Fq(p)s(ort)j Ft(is)e(an)g(in)m(teger)h(p)s(ort)630 3146
-y(n)m(um)m(b)s(er)h(or)i(service)f(name,)49 b(Bash)c(attempts)g(to)h
-(op)s(en)e(a)h(UDP)g(connection)f(to)i(the)630 3255 y(corresp)s(onding)
-28 b(so)s(c)m(k)m(et.)275 3420 y(A)i(failure)f(to)i(op)s(en)e(or)i
-(create)h(a)e(\014le)g(causes)h(the)f(redirection)f(to)i(fail.)150
+b Fs(/)p Fj(port)630 3036 y Ft(If)41 b Fq(host)i Ft(is)f(a)g(v)-5
+b(alid)41 b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c
+Fq(p)s(ort)j Ft(is)f(an)f(in)m(teger)i(p)s(ort)630 3146
+y(n)m(um)m(b)s(er)g(or)i(service)g(name,)k(Bash)c(attempts)g(to)h(op)s
+(en)e(a)h(UDP)g(connection)g(to)h(the)630 3255 y(corresp)s(onding)29
+b(so)s(c)m(k)m(et.)275 3420 y(A)h(failure)h(to)g(op)s(en)e(or)i(create)
+h(a)e(\014le)h(causes)g(the)f(redirection)h(to)g(fail.)150
 3651 y Fk(3.6.1)63 b(Redirecting)40 b(Input)275 3899
-y Ft(Redirection)33 b(of)h(input)f(causes)h(the)h(\014le)e(whose)h
-(name)h(results)e(from)h(the)g(expansion)f(of)i Fq(w)m(ord)i
-Ft(to)150 4009 y(b)s(e)d(op)s(ened)g(for)g(reading)f(on)i(\014le)e
-(descriptor)h Fs(n)p Ft(,)h(or)g(the)f(standard)g(input)f(\(\014le)h
-(descriptor)f(0\))i(if)f Fs(n)g Ft(is)150 4118 y(not)d(sp)s(eci\014ed.)
-275 4256 y(The)e(general)i(format)f(for)h(redirecting)e(input)f(is:)390
+y Ft(Redirection)35 b(of)f(input)g(causes)g(the)h(\014le)f(whose)g
+(name)h(results)f(from)g(the)g(expansion)g(of)h Fq(w)m(ord)i
+Ft(to)150 4009 y(b)s(e)d(op)s(ened)g(for)g(reading)g(on)h(\014le)f
+(descriptor)h Fs(n)p Ft(,)g(or)g(the)f(standard)g(input)g(\(\014le)h
+(descriptor)f(0\))h(if)g Fs(n)f Ft(is)150 4118 y(not)d(sp)s(eci\014ed.)
+275 4256 y(The)e(general)j(format)e(for)h(redirecting)g(input)e(is:)390
 4394 y Fs([)p Fj(n)11 b Fs(]<)p Fj(word)150 4626 y Fk(3.6.2)63
-b(Redirecting)40 b(Output)275 4873 y Ft(Redirection)29
-b(of)h(output)g(causes)h(the)g(\014le)e(whose)h(name)h(results)e(from)g
-(the)i(expansion)e(of)i Fq(w)m(ord)i Ft(to)150 4983 y(b)s(e)e(op)s
-(ened)g(for)g(writing)f(on)h(\014le)g(descriptor)f Fq(n)p
-Ft(,)i(or)f(the)h(standard)f(output)g(\(\014le)g(descriptor)f(1\))i(if)
-f Fq(n)g Ft(is)150 5092 y(not)j(sp)s(eci\014ed.)49 b(If)33
-b(the)h(\014le)f(do)s(es)g(not)h(exist)f(it)g(is)g(created;)k(if)32
-b(it)h(do)s(es)h(exist)f(it)g(is)g(truncated)h(to)g(zero)150
-5202 y(size.)275 5340 y(The)29 b(general)i(format)f(for)h(redirecting)e
-(output)h(is:)p eop
+b(Redirecting)40 b(Output)275 4873 y Ft(Redirection)31
+b(of)f(output)g(causes)h(the)g(\014le)f(whose)g(name)h(results)f(from)f
+(the)i(expansion)f(of)h Fq(w)m(ord)i Ft(to)150 4983 y(b)s(e)e(op)s
+(ened)g(for)g(writing)h(on)f(\014le)h(descriptor)f Fq(n)p
+Ft(,)h(or)f(the)h(standard)f(output)g(\(\014le)h(descriptor)f(1\))h(if)
+g Fq(n)f Ft(is)150 5092 y(not)j(sp)s(eci\014ed.)50 b(If)33
+b(the)h(\014le)g(do)s(es)f(not)h(exist)g(it)g(is)g(created;)j(if)c(it)h
+(do)s(es)g(exist)g(it)g(is)g(truncated)g(to)g(zero)150
+5202 y(size.)275 5340 y(The)29 b(general)j(format)e(for)h(redirecting)g
+(output)f(is:)p eop end
 %%Page: 26 32
-26 31 bop 150 -116 a Ft(26)2572 b(Bash)31 b(Reference)g(Man)m(ual)390
-299 y Fs([)p Fj(n)11 b Fs(]>[|])p Fj(word)275 426 y Ft(If)30
-b(the)h(redirection)e(op)s(erator)i(is)f(`)p Fs(>)p Ft(',)h(and)f(the)h
-Fs(noclobber)d Ft(option)i(to)h(the)g Fs(set)f Ft(builtin)d(has)k(b)s
-(een)150 535 y(enabled,)h(the)g(redirection)f(will)e(fail)i(if)g(the)h
-(\014le)f(whose)h(name)g(results)f(from)h(the)g(expansion)f(of)h
-Fq(w)m(ord)150 645 y Ft(exists)e(and)g(is)f(a)i(regular)f(\014le.)40
-b(If)30 b(the)h(redirection)e(op)s(erator)i(is)e(`)p
-Fs(>|)p Ft(',)i(or)f(the)h(redirection)e(op)s(erator)i(is)150
+TeXDict begin 26 31 bop 150 -116 a Ft(26)2572 b(Bash)31
+b(Reference)g(Man)m(ual)390 299 y Fs([)p Fj(n)11 b Fs(]>[|])p
+Fj(word)275 426 y Ft(If)30 b(the)h(redirection)g(op)s(erator)g(is)g(`)p
+Fs(>)p Ft(',)g(and)f(the)h Fs(noclobber)d Ft(option)j(to)g(the)g
+Fs(set)f Ft(builtin)g(has)h(b)s(een)150 535 y(enabled,)i(the)f
+(redirection)h(will)f(fail)h(if)f(the)g(\014le)g(whose)g(name)g
+(results)g(from)g(the)g(expansion)g(of)g Fq(w)m(ord)150
+645 y Ft(exists)f(and)f(is)g(a)h(regular)g(\014le.)41
+b(If)30 b(the)h(redirection)g(op)s(erator)g(is)f(`)p
+Fs(>|)p Ft(',)h(or)f(the)h(redirection)g(op)s(erator)g(is)150
 754 y(`)p Fs(>)p Ft(')36 b(and)f(the)g Fs(noclobber)e
-Ft(option)i(is)g(not)h(enabled,)g(the)f(redirection)f(is)h(attempted)h
-(ev)m(en)h(if)d(the)i(\014le)150 864 y(named)30 b(b)m(y)g
+Ft(option)j(is)g(not)g(enabled,)h(the)e(redirection)h(is)g(attempted)g
+(ev)m(en)h(if)e(the)h(\014le)150 864 y(named)30 b(b)m(y)g
 Fq(w)m(ord)k Ft(exists.)150 1065 y Fk(3.6.3)63 b(App)s(ending)42
-b(Redirected)e(Output)275 1301 y Ft(Redirection)27 b(of)i(output)f(in)f
-(this)h(fashion)f(causes)i(the)g(\014le)f(whose)g(name)h(results)e
-(from)h(the)h(expan-)150 1411 y(sion)k(of)g Fq(w)m(ord)k
-Ft(to)e(b)s(e)e(op)s(ened)g(for)g(app)s(ending)e(on)j(\014le)e
-(descriptor)h Fq(n)p Ft(,)h(or)g(the)f(standard)g(output)g(\(\014le)150
-1520 y(descriptor)c(1\))i(if)f Fq(n)g Ft(is)f(not)i(sp)s(eci\014ed.)39
-b(If)29 b(the)i(\014le)e(do)s(es)i(not)f(exist)g(it)g(is)g(created.)275
-1647 y(The)f(general)i(format)f(for)h(app)s(ending)d(output)i(is:)390
+b(Redirected)e(Output)275 1301 y Ft(Redirection)29 b(of)g(output)f(in)g
+(this)h(fashion)f(causes)h(the)g(\014le)g(whose)f(name)h(results)f
+(from)g(the)h(expan-)150 1411 y(sion)34 b(of)f Fq(w)m(ord)k
+Ft(to)e(b)s(e)e(op)s(ened)g(for)g(app)s(ending)f(on)i(\014le)f
+(descriptor)h Fq(n)p Ft(,)g(or)g(the)f(standard)g(output)g(\(\014le)150
+1520 y(descriptor)d(1\))h(if)g Fq(n)f Ft(is)g(not)h(sp)s(eci\014ed.)40
+b(If)29 b(the)i(\014le)f(do)s(es)h(not)f(exist)h(it)g(is)g(created.)275
+1647 y(The)e(general)j(format)e(for)h(app)s(ending)e(output)h(is:)390
 1774 y Fs([)p Fj(n)11 b Fs(]>>)p Fj(word)150 1975 y Fk(3.6.4)63
 b(Redirecting)40 b(Standard)h(Output)g(and)g(Standard)g(Error)275
-2211 y Ft(Bash)31 b(allo)m(ws)f(b)s(oth)g(the)h(standard)g(output)f
-(\(\014le)h(descriptor)e(1\))j(and)e(the)i(standard)e(error)g(output)
-150 2320 y(\(\014le)c(descriptor)g(2\))i(to)f(b)s(e)g(redirected)f(to)i
-(the)f(\014le)f(whose)g(name)h(is)f(the)h(expansion)f(of)h
-Fq(w)m(ord)j Ft(with)c(this)150 2430 y(construct.)275
-2557 y(There)j(are)i(t)m(w)m(o)h(formats)e(for)h(redirecting)e
-(standard)g(output)h(and)g(standard)f(error:)390 2684
+2211 y Ft(Bash)31 b(allo)m(ws)h(b)s(oth)e(the)h(standard)g(output)f
+(\(\014le)i(descriptor)e(1\))i(and)e(the)i(standard)e(error)g(output)
+150 2320 y(\(\014le)d(descriptor)g(2\))h(to)f(b)s(e)g(redirected)g(to)h
+(the)f(\014le)g(whose)f(name)h(is)g(the)g(expansion)g(of)g
+Fq(w)m(ord)j Ft(with)d(this)150 2430 y(construct.)275
+2557 y(There)i(are)i(t)m(w)m(o)h(formats)e(for)h(redirecting)g
+(standard)e(output)h(and)g(standard)f(error:)390 2684
 y Fs(&>)p Fj(word)150 2810 y Ft(and)390 2937 y Fs(>&)p
 Fj(word)150 3064 y Ft(Of)h(the)g(t)m(w)m(o)i(forms,)e(the)h(\014rst)e
-(is)h(preferred.)39 b(This)29 b(is)g(seman)m(tically)h(equiv)-5
-b(alen)m(t)30 b(to)390 3190 y Fs(>)p Fj(word)57 b Fs(2>&1)150
+(is)i(preferred.)39 b(This)30 b(is)g(seman)m(tically)j(equiv)-5
+b(alen)m(t)32 b(to)390 3190 y Fs(>)p Fj(word)57 b Fs(2>&1)150
 3391 y Fk(3.6.5)63 b(Here)41 b(Do)s(cumen)m(ts)275 3628
-y Ft(This)27 b(t)m(yp)s(e)i(of)h(redirection)e(instructs)g(the)h(shell)
-f(to)i(read)f(input)e(from)i(the)g(curren)m(t)h(source)f(un)m(til)f(a)
-150 3737 y(line)h(con)m(taining)g(only)h Fq(w)m(ord)j
-Ft(\(with)c(no)i(trailing)d(blanks\))h(is)g(seen.)41
-b(All)29 b(of)h(the)h(lines)d(read)i(up)f(to)i(that)150
-3847 y(p)s(oin)m(t)e(are)i(then)f(used)g(as)g(the)h(standard)f(input)e
-(for)i(a)h(command.)275 3973 y(The)e(format)i(of)g(here-do)s(cumen)m
+y Ft(This)28 b(t)m(yp)s(e)h(of)h(redirection)g(instructs)f(the)g(shell)
+h(to)g(read)f(input)f(from)h(the)g(curren)m(t)h(source)f(un)m(til)h(a)
+150 3737 y(line)h(con)m(taining)g(only)g Fq(w)m(ord)i
+Ft(\(with)d(no)h(trailing)g(blanks\))f(is)g(seen.)41
+b(All)31 b(of)f(the)h(lines)f(read)g(up)f(to)i(that)150
+3847 y(p)s(oin)m(t)f(are)h(then)f(used)g(as)g(the)h(standard)f(input)f
+(for)h(a)h(command.)275 3973 y(The)e(format)i(of)g(here-do)s(cumen)m
 (ts)f(is:)390 4100 y Fs(<<[)p Fp(\000)p Fs(])p Fj(word)772
 4210 y(here-document)390 4319 y(delimiter)275 4446 y
-Ft(No)j(parameter)h(expansion,)f(command)g(substitution,)f(arithmetic)h
-(expansion,)g(or)g(\014lename)f(ex-)150 4556 y(pansion)i(is)g(p)s
-(erformed)f(on)i Fq(w)m(ord)p Ft(.)55 b(If)34 b(an)m(y)i(c)m(haracters)
-g(in)e Fq(w)m(ord)k Ft(are)d(quoted,)i(the)e Fq(delimiter)40
-b Ft(is)34 b(the)150 4665 y(result)39 b(of)i(quote)g(remo)m(v)-5
-b(al)41 b(on)f Fq(w)m(ord)p Ft(,)j(and)d(the)g(lines)f(in)g(the)i
+Ft(No)j(parameter)h(expansion,)g(command)f(substitution,)h(arithmetic)h
+(expansion,)f(or)f(\014lename)g(ex-)150 4556 y(pansion)i(is)g(p)s
+(erformed)e(on)i Fq(w)m(ord)p Ft(.)55 b(If)34 b(an)m(y)i(c)m(haracters)
+g(in)f Fq(w)m(ord)j Ft(are)d(quoted,)i(the)e Fq(delimiter)43
+b Ft(is)35 b(the)150 4665 y(result)40 b(of)h(quote)g(remo)m(v)-5
+b(al)42 b(on)e Fq(w)m(ord)p Ft(,)j(and)d(the)g(lines)h(in)f(the)h
 (here-do)s(cumen)m(t)f(are)h(not)f(expanded.)150 4775
-y(If)32 b Fq(w)m(ord)k Ft(is)c(unquoted,)g(all)g(lines)f(of)h(the)h
+y(If)32 b Fq(w)m(ord)k Ft(is)d(unquoted,)f(all)i(lines)f(of)f(the)h
 (here-do)s(cumen)m(t)g(are)g(sub)5 b(jected)32 b(to)i(parameter)f
-(expansion,)150 4884 y(command)25 b(substitution,)e(and)i(arithmetic)f
-(expansion.)38 b(In)24 b(the)h(latter)g(case,)i(the)e(c)m(haracter)i
-(sequence)150 4994 y Fs(\\newline)h Ft(is)i(ignored,)f(and)h(`)p
+(expansion,)150 4884 y(command)25 b(substitution,)g(and)g(arithmetic)h
+(expansion.)39 b(In)24 b(the)h(latter)h(case,)h(the)e(c)m(haracter)i
+(sequence)150 4994 y Fs(\\newline)h Ft(is)j(ignored,)f(and)g(`)p
 Fs(\\)p Ft(')h(m)m(ust)f(b)s(e)g(used)f(to)i(quote)g(the)g(c)m
 (haracters)h(`)p Fs(\\)p Ft(',)e(`)p Fs($)p Ft(',)h(and)f(`)p
-Fs(`)p Ft('.)275 5121 y(If)21 b(the)i(redirection)e(op)s(erator)i(is)e
-(`)p Fs(<<-)p Ft(',)j(then)e(all)f(leading)g(tab)i(c)m(haracters)h(are)
-e(stripp)s(ed)e(from)i(input)150 5230 y(lines)31 b(and)h(the)h(line)f
-(con)m(taining)g Fq(delimiter)p Ft(.)46 b(This)31 b(allo)m(ws)h
-(here-do)s(cumen)m(ts)h(within)d(shell)i(scripts)f(to)150
-5340 y(b)s(e)f(inden)m(ted)f(in)g(a)i(natural)e(fashion.)p
-eop
+Fs(`)p Ft('.)275 5121 y(If)21 b(the)i(redirection)g(op)s(erator)g(is)f
+(`)p Fs(<<-)p Ft(',)i(then)e(all)h(leading)g(tab)g(c)m(haracters)h(are)
+e(stripp)s(ed)f(from)h(input)150 5230 y(lines)33 b(and)f(the)h(line)h
+(con)m(taining)g Fq(delimiter)p Ft(.)49 b(This)32 b(allo)m(ws)i
+(here-do)s(cumen)m(ts)f(within)f(shell)i(scripts)e(to)150
+5340 y(b)s(e)e(inden)m(ted)g(in)g(a)h(natural)f(fashion.)p
+eop end
 %%Page: 27 33
-27 32 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2246 b(27)150 299 y Fk(3.6.6)63
-b(Here)41 b(Strings)275 551 y Ft(A)30 b(v)-5 b(arian)m(t)30
-b(of)h(here)f(do)s(cumen)m(ts,)g(the)h(format)g(is:)390
+TeXDict begin 27 32 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)150 299
+y Fk(3.6.6)63 b(Here)41 b(Strings)275 551 y Ft(A)30 b(v)-5
+b(arian)m(t)31 b(of)g(here)f(do)s(cumen)m(ts,)g(the)h(format)g(is:)390
 694 y Fs(<<<)47 b Fj(word)275 836 y Ft(The)29 b Fq(w)m(ord)34
-b Ft(is)29 b(expanded)h(and)g(supplied)d(to)k(the)f(command)h(on)f(its)
-g(standard)f(input.)150 1077 y Fk(3.6.7)63 b(Duplicating)41
-b(File)g(Descriptors)275 1329 y Ft(The)29 b(redirection)g(op)s(erator)
+b Ft(is)c(expanded)g(and)g(supplied)f(to)i(the)f(command)h(on)f(its)h
+(standard)e(input.)150 1077 y Fk(3.6.7)63 b(Duplicating)41
+b(File)g(Descriptors)275 1329 y Ft(The)29 b(redirection)i(op)s(erator)
 390 1471 y Fs([)p Fj(n)11 b Fs(]<&)p Fj(word)150 1614
-y Ft(is)34 b(used)f(to)j(duplicate)d(input)g(\014le)g(descriptors.)52
-b(If)34 b Fq(w)m(ord)k Ft(expands)c(to)h(one)g(or)g(more)g(digits,)f
-(the)h(\014le)150 1724 y(descriptor)d(denoted)i(b)m(y)g
-Fq(n)f Ft(is)f(made)i(to)g(b)s(e)f(a)h(cop)m(y)g(of)g(that)g(\014le)f
-(descriptor.)49 b(If)33 b(the)h(digits)e(in)g Fq(w)m(ord)150
-1833 y Ft(do)d(not)h(sp)s(ecify)e(a)i(\014le)e(descriptor)g(op)s(en)h
-(for)g(input,)f(a)i(redirection)e(error)h(o)s(ccurs.)40
+y Ft(is)35 b(used)e(to)j(duplicate)f(input)f(\014le)g(descriptors.)53
+b(If)34 b Fq(w)m(ord)k Ft(expands)c(to)h(one)g(or)g(more)g(digits,)h
+(the)f(\014le)150 1724 y(descriptor)e(denoted)h(b)m(y)g
+Fq(n)f Ft(is)g(made)h(to)g(b)s(e)f(a)h(cop)m(y)g(of)g(that)g(\014le)g
+(descriptor.)50 b(If)33 b(the)h(digits)g(in)f Fq(w)m(ord)150
+1833 y Ft(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
 b(If)29 b Fq(w)m(ord)j Ft(ev)-5 b(aluates)150 1943 y(to)31
-b(`)p Fs(-)p Ft(',)g(\014le)f(descriptor)g Fq(n)g Ft(is)f(closed.)42
-b(If)30 b Fq(n)g Ft(is)f(not)i(sp)s(eci\014ed,)e(the)i(standard)f
-(input)f(\(\014le)h(descriptor)f(0\))150 2052 y(is)g(used.)275
-2195 y(The)g(op)s(erator)390 2337 y Fs([)p Fj(n)11 b
-Fs(]>&)p Fj(word)150 2480 y Ft(is)39 b(used)h(similarly)d(to)k
-(duplicate)d(output)i(\014le)g(descriptors.)69 b(If)40
-b Fq(n)f Ft(is)h(not)g(sp)s(eci\014ed,)h(the)g(standard)150
-2590 y(output)30 b(\(\014le)f(descriptor)g(1\))i(is)e(used.)39
-b(If)30 b(the)g(digits)f(in)f Fq(w)m(ord)34 b Ft(do)29
-b(not)i(sp)s(ecify)d(a)j(\014le)e(descriptor)g(op)s(en)150
-2699 y(for)38 b(output,)i(a)e(redirection)f(error)h(o)s(ccurs.)63
-b(As)38 b(a)h(sp)s(ecial)d(case,)42 b(if)37 b Fq(n)g
-Ft(is)g(omitted,)k(and)c Fq(w)m(ord)k Ft(do)s(es)150
-2809 y(not)28 b(expand)f(to)i(one)f(or)f(more)h(digits,)g(the)g
-(standard)e(output)i(and)f(standard)g(error)g(are)i(redirected)e(as)150
-2918 y(describ)s(ed)h(previously)-8 b(.)150 3159 y Fk(3.6.8)63
-b(Mo)m(ving)41 b(File)h(Descriptors)275 3411 y Ft(The)29
-b(redirection)g(op)s(erator)390 3554 y Fs([)p Fj(n)11
-b Fs(]<&)p Fj(digit)p Fs(-)150 3696 y Ft(mo)m(v)m(es)33
-b(the)f(\014le)f(descriptor)f Fq(digit)j Ft(to)f(\014le)f(descriptor)g
-Fq(n)p Ft(,)g(or)h(the)g(standard)f(input)e(\(\014le)j(descriptor)e
-(0\))150 3806 y(if)f Fq(n)h Ft(is)g(not)g(sp)s(eci\014ed.)39
-b Fq(digit)31 b Ft(is)f(closed)g(after)h(b)s(eing)e(duplicated)f(to)j
-Fq(n)p Ft(.)275 3948 y(Similarly)-8 b(,)27 b(the)j(redirection)f(op)s
+b(`)p Fs(-)p Ft(',)g(\014le)g(descriptor)g Fq(n)f Ft(is)g(closed.)43
+b(If)30 b Fq(n)g Ft(is)g(not)h(sp)s(eci\014ed,)f(the)h(standard)f
+(input)g(\(\014le)h(descriptor)f(0\))150 2052 y(is)g(used.)275
+2195 y(The)f(op)s(erator)390 2337 y Fs([)p Fj(n)11 b
+Fs(]>&)p Fj(word)150 2480 y Ft(is)40 b(used)g(similarly)h(to)g
+(duplicate)f(output)g(\014le)h(descriptors.)70 b(If)40
+b Fq(n)f Ft(is)i(not)f(sp)s(eci\014ed,)i(the)f(standard)150
+2590 y(output)30 b(\(\014le)g(descriptor)g(1\))h(is)f(used.)39
+b(If)30 b(the)g(digits)h(in)e Fq(w)m(ord)34 b Ft(do)29
+b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g(op)s(en)150
+2699 y(for)38 b(output,)i(a)e(redirection)h(error)f(o)s(ccurs.)63
+b(As)38 b(a)h(sp)s(ecial)f(case,)k(if)c Fq(n)f Ft(is)h(omitted,)k(and)
+37 b Fq(w)m(ord)k Ft(do)s(es)150 2809 y(not)28 b(expand)f(to)i(one)f
+(or)f(more)h(digits,)i(the)e(standard)e(output)i(and)f(standard)g
+(error)g(are)i(redirected)f(as)150 2918 y(describ)s(ed)h(previously)-8
+b(.)150 3159 y Fk(3.6.8)63 b(Mo)m(ving)41 b(File)h(Descriptors)275
+3411 y Ft(The)29 b(redirection)i(op)s(erator)390 3554
+y Fs([)p Fj(n)11 b Fs(]<&)p Fj(digit)p Fs(-)150 3696
+y Ft(mo)m(v)m(es)33 b(the)f(\014le)g(descriptor)f Fq(digit)k
+Ft(to)d(\014le)g(descriptor)g Fq(n)p Ft(,)f(or)h(the)g(standard)f
+(input)f(\(\014le)j(descriptor)e(0\))150 3806 y(if)f
+Fq(n)g Ft(is)h(not)f(sp)s(eci\014ed.)40 b Fq(digit)33
+b Ft(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h
+Fq(n)p Ft(.)275 3948 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s
 (erator)390 4091 y Fs([)p Fj(n)11 b Fs(]>&)p Fj(digit)p
-Fs(-)150 4233 y Ft(mo)m(v)m(es)29 b(the)g(\014le)e(descriptor)f
-Fq(digit)j Ft(to)g(\014le)e(descriptor)g Fq(n)p Ft(,)h(or)g(the)g
-(standard)f(output)h(\(\014le)f(descriptor)g(1\))150
-4343 y(if)i Fq(n)h Ft(is)g(not)g(sp)s(eci\014ed.)150
-4583 y Fk(3.6.9)63 b(Op)s(ening)42 b(File)f(Descriptors)h(for)f
-(Reading)g(and)g(W)-10 b(riting)275 4836 y Ft(The)29
-b(redirection)g(op)s(erator)390 4978 y Fs([)p Fj(n)11
-b Fs(]<>)p Fj(word)150 5121 y Ft(causes)39 b(the)g(\014le)f(whose)h
-(name)g(is)f(the)h(expansion)f(of)h Fq(w)m(ord)j Ft(to)d(b)s(e)g(op)s
-(ened)f(for)g(b)s(oth)h(reading)f(and)150 5230 y(writing)31
-b(on)h(\014le)g(descriptor)f Fq(n)p Ft(,)i(or)g(on)f(\014le)g
-(descriptor)g(0)h(if)e Fq(n)h Ft(is)g(not)h(sp)s(eci\014ed.)46
-b(If)32 b(the)h(\014le)e(do)s(es)i(not)150 5340 y(exist,)d(it)g(is)g
-(created.)p eop
+Fs(-)150 4233 y Ft(mo)m(v)m(es)29 b(the)g(\014le)f(descriptor)f
+Fq(digit)k Ft(to)e(\014le)f(descriptor)g Fq(n)p Ft(,)g(or)g(the)g
+(standard)f(output)h(\(\014le)g(descriptor)g(1\))150
+4343 y(if)i Fq(n)g Ft(is)h(not)f(sp)s(eci\014ed.)150
+4583 y Fk(3.6.9)63 b(Op)s(ening)42 b(File)f(Descriptors)h(for)g
+(Reading)f(and)g(W)-10 b(riting)275 4836 y Ft(The)29
+b(redirection)i(op)s(erator)390 4978 y Fs([)p Fj(n)11
+b Fs(]<>)p Fj(word)150 5121 y Ft(causes)39 b(the)g(\014le)g(whose)g
+(name)g(is)g(the)g(expansion)g(of)g Fq(w)m(ord)j Ft(to)d(b)s(e)g(op)s
+(ened)f(for)g(b)s(oth)h(reading)g(and)150 5230 y(writing)33
+b(on)f(\014le)h(descriptor)f Fq(n)p Ft(,)h(or)g(on)f(\014le)h
+(descriptor)g(0)g(if)f Fq(n)g Ft(is)h(not)g(sp)s(eci\014ed.)47
+b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 5340 y(exist,)e(it)g(is)g
+(created.)p eop end
 %%Page: 28 34
-28 33 bop 150 -116 a Ft(28)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fr(3.7)68 b(Executing)46 b(Commands)150 632 y Fk(3.7.1)63
-b(Simple)40 b(Command)g(Expansion)275 876 y Ft(When)35
-b(a)h(simple)d(command)j(is)e(executed,)k(the)e(shell)e(p)s(erforms)g
-(the)i(follo)m(wing)e(expansions,)h(as-)150 985 y(signmen)m(ts,)30
-b(and)g(redirections,)f(from)h(left)g(to)h(righ)m(t.)199
-1119 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)37 b(assignmen)m(ts)h(\(those)h(preceding)e
-(the)330 1229 y(command)30 b(name\))h(and)f(redirections)f(are)h(sa)m
-(v)m(ed)i(for)e(later)g(pro)s(cessing.)199 1363 y(2.)61
-b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5 b(ariable)38
-b(assignmen)m(ts)i(or)f(redirections)g(are)h(expanded)f(\(see)h(Sec-)
-330 1473 y(tion)c(3.5)j([Shell)c(Expansions],)i(page)h(16\).)61
-b(If)37 b(an)m(y)g(w)m(ords)f(remain)g(after)i(expansion,)g(the)f
-(\014rst)330 1582 y(w)m(ord)31 b(is)f(tak)m(en)i(to)g(b)s(e)f(the)g
-(name)h(of)f(the)h(command)f(and)f(the)i(remaining)d(w)m(ords)i(are)g
-(the)h(argu-)330 1692 y(men)m(ts.)199 1826 y(3.)61 b(Redirections)23
-b(are)h(p)s(erformed)f(as)h(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)g
-(Section)f(3.6)h([Redirections],)g(page)f(24\).)199 1961
-y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Fs(=)p Ft(')h(in)d(eac)m(h)
-k(v)-5 b(ariable)23 b(assignmen)m(t)i(undergo)s(es)f(tilde)g
-(expansion,)h(parameter)330 2070 y(expansion,)48 b(command)e
-(substitution,)h(arithmetic)d(expansion,)49 b(and)c(quote)h(remo)m(v)-5
-b(al)45 b(b)s(efore)330 2180 y(b)s(eing)29 b(assigned)h(to)h(the)f(v)-5
-b(ariable.)275 2339 y(If)32 b(no)i(command)f(name)g(results,)g(the)h(v)
--5 b(ariable)32 b(assignmen)m(ts)h(a\013ect)i(the)f(curren)m(t)f(shell)
-f(en)m(viron-)150 2448 y(men)m(t.)39 b(Otherwise,)26
-b(the)f(v)-5 b(ariables)24 b(are)i(added)f(to)h(the)f(en)m(vironmen)m
-(t)g(of)h(the)f(executed)h(command)g(and)150 2558 y(do)35
-b(not)f(a\013ect)j(the)d(curren)m(t)h(shell)e(en)m(vironmen)m(t.)53
-b(If)34 b(an)m(y)h(of)g(the)f(assignmen)m(ts)h(attempts)g(to)h(assign)
-150 2667 y(a)j(v)-5 b(alue)38 b(to)h(a)g(readonly)e(v)-5
-b(ariable,)40 b(an)e(error)g(o)s(ccurs,)j(and)c(the)i(command)f(exits)g
-(with)g(a)g(non-zero)150 2777 y(status.)275 2911 y(If)33
-b(no)g(command)g(name)h(results,)f(redirections)f(are)i(p)s(erformed,)f
-(but)g(do)h(not)f(a\013ect)i(the)f(curren)m(t)150 3021
-y(shell)29 b(en)m(vironmen)m(t.)40 b(A)30 b(redirection)f(error)h
-(causes)h(the)g(command)f(to)h(exit)f(with)f(a)i(non-zero)g(status.)275
-3155 y(If)26 b(there)i(is)e(a)i(command)f(name)h(left)f(after)h
-(expansion,)f(execution)h(pro)s(ceeds)f(as)g(describ)s(ed)e(b)s(elo)m
-(w.)150 3265 y(Otherwise,)38 b(the)f(command)g(exits.)61
-b(If)37 b(one)g(of)g(the)h(expansions)e(con)m(tained)h(a)h(command)f
-(substitu-)150 3374 y(tion,)h(the)e(exit)g(status)h(of)f(the)h(command)
-f(is)g(the)g(exit)g(status)h(of)f(the)h(last)f(command)g(substitution)
-150 3484 y(p)s(erformed.)55 b(If)35 b(there)g(w)m(ere)h(no)g(command)f
-(substitutions,)g(the)g(command)h(exits)f(with)f(a)i(status)g(of)150
-3593 y(zero.)150 3817 y Fk(3.7.2)63 b(Command)39 b(Searc)m(h)h(and)h
-(Execution)275 4061 y Ft(After)35 b(a)h(command)f(has)h(b)s(een)e
-(split)g(in)m(to)h(w)m(ords,)i(if)d(it)h(results)g(in)f(a)i(simple)d
-(command)i(and)g(an)150 4170 y(optional)30 b(list)f(of)h(argumen)m(ts,)
-h(the)g(follo)m(wing)d(actions)j(are)g(tak)m(en.)199
-4304 y(1.)61 b(If)24 b(the)g(command)g(name)g(con)m(tains)h(no)f
-(slashes,)h(the)f(shell)f(attempts)i(to)g(lo)s(cate)g(it.)38
-b(If)24 b(there)g(exists)330 4414 y(a)h(shell)e(function)g(b)m(y)h
-(that)h(name,)h(that)f(function)e(is)h(in)m(v)m(ok)m(ed)h(as)f(describ)
-s(ed)f(in)g(Section)h(3.3)i([Shell)330 4524 y(F)-8 b(unctions],)30
-b(page)i(13.)199 4658 y(2.)61 b(If)41 b(the)g(name)h(do)s(es)f(not)g
-(matc)m(h)i(a)e(function,)i(the)f(shell)d(searc)m(hes)k(for)e(it)g(in)f
-(the)h(list)f(of)i(shell)330 4767 y(builtins.)37 b(If)30
-b(a)h(matc)m(h)g(is)e(found,)h(that)h(builtin)c(is)i(in)m(v)m(ok)m(ed.)
-199 4902 y(3.)61 b(If)40 b(the)g(name)h(is)e(neither)h(a)g(shell)f
-(function)g(nor)h(a)g(builtin,)g(and)g(con)m(tains)g(no)h(slashes,)h
-(Bash)330 5011 y(searc)m(hes)d(eac)m(h)g(elemen)m(t)f(of)h
-Fs($PATH)d Ft(for)i(a)g(directory)g(con)m(taining)f(an)h(executable)g
-(\014le)f(b)m(y)h(that)330 5121 y(name.)56 b(Bash)36
-b(uses)f(a)h(hash)e(table)i(to)g(remem)m(b)s(er)f(the)h(full)d
-(pathnames)i(of)h(executable)g(\014les)e(to)330 5230
-y(a)m(v)m(oid)e(m)m(ultiple)d Fs(PATH)i Ft(searc)m(hes)i(\(see)f(the)g
-(description)e(of)h Fs(hash)g Ft(in)f(Section)i(4.1)g([Bourne)g(Shell)
-330 5340 y(Builtins],)i(page)i(33\).)55 b(A)35 b(full)e(searc)m(h)i(of)
-g(the)g(directories)f(in)g Fs($PATH)f Ft(is)h(p)s(erformed)g(only)g(if)
-g(the)p eop
+TeXDict begin 28 33 bop 150 -116 a Ft(28)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fr(3.7)68 b(Executing)46
+b(Commands)150 632 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)275
+876 y Ft(When)35 b(a)h(simple)f(command)h(is)f(executed,)j(the)e(shell)
+g(p)s(erforms)e(the)i(follo)m(wing)h(expansions,)f(as-)150
+985 y(signmen)m(ts,)31 b(and)f(redirections,)h(from)f(left)h(to)g(righ)
+m(t.)199 1119 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 1229 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
+1363 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 1473 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g
+(16\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h
+(the)e(\014rst)330 1582 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 1692 y(men)m(ts.)199 1826 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(24\).)199
+1961 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Fs(=)p
+Ft(')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 2070 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 2180 y(b)s(eing)30
+b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 2339 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 2448 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 2558 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 2667 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
+2777 y(status.)275 2911 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 3021 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
+(with)f(a)h(non-zero)g(status.)275 3155 y(If)26 b(there)i(is)f(a)h
+(command)f(name)h(left)g(after)g(expansion,)g(execution)h(pro)s(ceeds)e
+(as)g(describ)s(ed)f(b)s(elo)m(w.)150 3265 y(Otherwise,)39
+b(the)e(command)g(exits.)62 b(If)37 b(one)g(of)g(the)h(expansions)f
+(con)m(tained)h(a)g(command)f(substitu-)150 3374 y(tion,)i(the)d(exit)h
+(status)g(of)f(the)h(command)f(is)h(the)f(exit)h(status)g(of)f(the)h
+(last)g(command)f(substitution)150 3484 y(p)s(erformed.)55
+b(If)35 b(there)g(w)m(ere)h(no)g(command)f(substitutions,)i(the)e
+(command)h(exits)g(with)f(a)h(status)g(of)150 3593 y(zero.)150
+3817 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h(Execution)275
+4061 y Ft(After)35 b(a)h(command)f(has)h(b)s(een)e(split)i(in)m(to)g(w)
+m(ords,)h(if)e(it)h(results)g(in)f(a)h(simple)f(command)g(and)g(an)150
+4170 y(optional)d(list)f(of)f(argumen)m(ts,)h(the)g(follo)m(wing)g
+(actions)h(are)f(tak)m(en.)199 4304 y(1.)61 b(If)24 b(the)g(command)g
+(name)g(con)m(tains)i(no)e(slashes,)i(the)e(shell)h(attempts)g(to)g(lo)
+s(cate)h(it.)39 b(If)24 b(there)g(exists)330 4414 y(a)h(shell)g
+(function)f(b)m(y)g(that)h(name,)h(that)f(function)f(is)h(in)m(v)m(ok)m
+(ed)h(as)e(describ)s(ed)g(in)g(Section)h(3.3)h([Shell)330
+4524 y(F)-8 b(unctions],)31 b(page)h(13.)199 4658 y(2.)61
+b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e(function,)j(the)e
+(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h(of)g(shell)330
+4767 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g(that)h(builtin)
+f(is)g(in)m(v)m(ok)m(ed.)199 4902 y(3.)61 b(If)40 b(the)g(name)h(is)f
+(neither)h(a)f(shell)h(function)f(nor)g(a)g(builtin,)j(and)d(con)m
+(tains)h(no)g(slashes,)i(Bash)330 5011 y(searc)m(hes)c(eac)m(h)g
+(elemen)m(t)g(of)g Fs($PATH)d Ft(for)i(a)g(directory)h(con)m(taining)g
+(an)f(executable)h(\014le)f(b)m(y)g(that)330 5121 y(name.)56
+b(Bash)36 b(uses)f(a)h(hash)e(table)j(to)f(remem)m(b)s(er)f(the)h(full)
+f(pathnames)g(of)h(executable)h(\014les)e(to)330 5230
+y(a)m(v)m(oid)e(m)m(ultiple)f Fs(PATH)f Ft(searc)m(hes)i(\(see)f(the)g
+(description)g(of)f Fs(hash)g Ft(in)g(Section)i(4.1)f([Bourne)g(Shell)
+330 5340 y(Builtins],)37 b(page)f(33\).)55 b(A)35 b(full)g(searc)m(h)g
+(of)g(the)g(directories)h(in)f Fs($PATH)e Ft(is)i(p)s(erformed)f(only)h
+(if)g(the)p eop end
 %%Page: 29 35
-29 34 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2246 b(29)330 299 y(command)31
-b(is)f(not)h(found)f(in)f(the)j(hash)e(table.)42 b(If)31
-b(the)g(searc)m(h)h(is)e(unsuccessful,)f(the)i(shell)e(prin)m(ts)330
-408 y(an)h(error)g(message)i(and)e(returns)f(an)h(exit)g(status)h(of)f
-(127.)199 544 y(4.)61 b(If)33 b(the)g(searc)m(h)h(is)f(successful,)g
-(or)g(if)f(the)i(command)f(name)g(con)m(tains)h(one)g(or)f(more)g
-(slashes,)h(the)330 653 y(shell)f(executes)j(the)f(named)f(program)g
-(in)g(a)h(separate)h(execution)e(en)m(vironmen)m(t.)54
-b(Argumen)m(t)35 b(0)330 763 y(is)29 b(set)i(to)h(the)e(name)h(giv)m
-(en,)f(and)g(the)h(remaining)d(argumen)m(ts)j(to)g(the)g(command)f(are)
-h(set)g(to)g(the)330 872 y(argumen)m(ts)g(supplied,)c(if)i(an)m(y)-8
-b(.)199 1008 y(5.)61 b(If)35 b(this)g(execution)h(fails)e(b)s(ecause)i
-(the)f(\014le)g(is)g(not)h(in)e(executable)j(format,)g(and)e(the)h
-(\014le)f(is)g(not)330 1117 y(a)e(directory)-8 b(,)33
-b(it)f(is)g(assumed)f(to)j(b)s(e)d(a)i Fq(shell)e(script)i
-Ft(and)f(the)h(shell)d(executes)k(it)e(as)h(describ)s(ed)d(in)330
-1227 y(Section)g(3.8)i([Shell)c(Scripts],)h(page)j(31.)199
+TeXDict begin 29 34 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)330 299
+y(command)31 b(is)g(not)g(found)f(in)g(the)i(hash)e(table.)43
+b(If)31 b(the)g(searc)m(h)h(is)f(unsuccessful,)f(the)h(shell)g(prin)m
+(ts)330 408 y(an)f(error)g(message)i(and)e(returns)f(an)h(exit)h
+(status)g(of)f(127.)199 544 y(4.)61 b(If)33 b(the)g(searc)m(h)h(is)g
+(successful,)g(or)f(if)g(the)h(command)f(name)g(con)m(tains)i(one)f(or)
+f(more)g(slashes,)i(the)330 653 y(shell)g(executes)h(the)f(named)f
+(program)g(in)h(a)g(separate)h(execution)f(en)m(vironmen)m(t.)55
+b(Argumen)m(t)35 b(0)330 763 y(is)30 b(set)h(to)h(the)e(name)h(giv)m
+(en,)g(and)f(the)h(remaining)f(argumen)m(ts)h(to)g(the)g(command)f(are)
+h(set)g(to)g(the)330 872 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8
+b(.)199 1008 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g
+(the)f(\014le)h(is)g(not)g(in)f(executable)j(format,)f(and)e(the)h
+(\014le)g(is)g(not)330 1117 y(a)d(directory)-8 b(,)34
+b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fq(shell)g(script)h
+Ft(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330
+1227 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(31.)199
 1362 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async)
-m(hronously)-8 b(,)41 b(the)d(shell)f(w)m(aits)i(for)f(the)h(command)f
-(to)330 1472 y(complete)31 b(and)f(collects)g(its)g(exit)g(status.)150
-1698 y Fk(3.7.3)63 b(Command)39 b(Execution)h(En)m(vironmen)m(t)275
-1944 y Ft(The)29 b(shell)g(has)h(an)g Fq(execution)h(en)m(vironmen)m(t)
-p Ft(,)f(whic)m(h)f(consists)h(of)h(the)f(follo)m(wing:)225
-2080 y Fp(\017)60 b Ft(op)s(en)32 b(\014les)f(inherited)f(b)m(y)j(the)f
-(shell)f(at)i(in)m(v)m(o)s(cation,)h(as)e(mo)s(di\014ed)f(b)m(y)h
-(redirections)f(supplied)e(to)330 2189 y(the)i Fs(exec)e
+m(hronously)-8 b(,)42 b(the)c(shell)h(w)m(aits)h(for)e(the)h(command)f
+(to)330 1472 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150
+1698 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)275
+1944 y Ft(The)29 b(shell)i(has)f(an)g Fq(execution)i(en)m(vironmen)m(t)
+p Ft(,)f(whic)m(h)f(consists)h(of)g(the)f(follo)m(wing:)225
+2080 y Fp(\017)60 b Ft(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f
+(shell)h(at)g(in)m(v)m(o)s(cation,)j(as)c(mo)s(di\014ed)g(b)m(y)g
+(redirections)h(supplied)e(to)330 2189 y(the)g Fs(exec)e
 Ft(builtin)225 2325 y Fp(\017)60 b Ft(the)28 b(curren)m(t)g(w)m(orking)
-g(directory)g(as)g(set)h(b)m(y)f Fs(cd)p Ft(,)g Fs(pushd)p
-Ft(,)g(or)g Fs(popd)p Ft(,)g(or)g(inherited)e(b)m(y)i(the)h(shell)d(at)
+h(directory)g(as)f(set)h(b)m(y)f Fs(cd)p Ft(,)g Fs(pushd)p
+Ft(,)g(or)g Fs(popd)p Ft(,)g(or)g(inherited)g(b)m(y)g(the)h(shell)f(at)
 330 2434 y(in)m(v)m(o)s(cation)225 2569 y Fp(\017)60
-b Ft(the)31 b(\014le)e(creation)i(mo)s(de)f(mask)g(as)h(set)g(b)m(y)f
-Fs(umask)f Ft(or)h(inherited)e(from)i(the)h(shell's)d(paren)m(t)225
+b Ft(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as)h(set)g(b)m(y)f
+Fs(umask)f Ft(or)h(inherited)g(from)g(the)h(shell's)f(paren)m(t)225
 2705 y Fp(\017)60 b Ft(curren)m(t)30 b(traps)g(set)h(b)m(y)f
-Fs(trap)225 2840 y Fp(\017)60 b Ft(shell)28 b(parameters)h(that)h(are)g
-(set)g(b)m(y)g(v)-5 b(ariable)28 b(assignmen)m(t)h(or)h(with)e
-Fs(set)g Ft(or)i(inherited)d(from)i(the)330 2949 y(shell's)g(paren)m(t)
-h(in)f(the)i(en)m(vironmen)m(t)225 3084 y Fp(\017)60
-b Ft(shell)42 b(functions)g(de\014ned)g(during)g(execution)i(or)f
-(inherited)f(from)h(the)h(shell's)e(paren)m(t)h(in)g(the)330
-3194 y(en)m(vironmen)m(t)225 3329 y Fp(\017)60 b Ft(options)32
-b(enabled)g(at)i(in)m(v)m(o)s(cation)f(\(either)g(b)m(y)g(default)f(or)
-h(with)f(command-line)f(argumen)m(ts\))j(or)330 3439
-y(b)m(y)c Fs(set)225 3574 y Fp(\017)60 b Ft(options)30
-b(enabled)f(b)m(y)h Fs(shopt)225 3709 y Fp(\017)60 b
-Ft(shell)29 b(aliases)g(de\014ned)h(with)f Fs(alias)g
-Ft(\(see)i(Section)f(6.6)i([Aliases],)e(page)h(71\))225
-3844 y Fp(\017)60 b Ft(v)-5 b(arious)49 b(pro)s(cess)g
-Fl(id)p Ft(s,)55 b(including)46 b(those)51 b(of)e(bac)m(kground)h(jobs)
-f(\(see)i(Section)f(3.2.3)h([Lists],)330 3954 y(page)31
-b(9\),)g(the)g(v)-5 b(alue)30 b(of)g Fs($$)p Ft(,)g(and)g(the)h(v)-5
-b(alue)30 b(of)g Fs($PPID)275 4115 y Ft(When)k(a)g(simple)f(command)h
-(other)g(than)g(a)h(builtin)c(or)j(shell)f(function)g(is)g(to)i(b)s(e)f
-(executed,)i(it)e(is)150 4225 y(in)m(v)m(ok)m(ed)24 b(in)f(a)h
-(separate)h(execution)f(en)m(vironmen)m(t)g(that)g(consists)f(of)i(the)
-f(follo)m(wing.)37 b(Unless)23 b(otherwise)150 4335 y(noted,)31
-b(the)f(v)-5 b(alues)30 b(are)h(inherited)d(from)i(the)g(shell.)225
-4470 y Fp(\017)60 b Ft(the)31 b(shell's)f(op)s(en)g(\014les,)h(plus)e
-(an)m(y)i(mo)s(di\014cations)f(and)g(additions)f(sp)s(eci\014ed)h(b)m
-(y)h(redirections)e(to)330 4580 y(the)i(command)225 4715
-y Fp(\017)60 b Ft(the)31 b(curren)m(t)f(w)m(orking)f(directory)225
-4850 y Fp(\017)60 b Ft(the)31 b(\014le)e(creation)i(mo)s(de)f(mask)225
-4986 y Fp(\017)60 b Ft(shell)30 b(v)-5 b(ariables)31
-b(and)g(functions)g(mark)m(ed)h(for)g(exp)s(ort,)g(along)g(with)f(v)-5
-b(ariables)30 b(exp)s(orted)i(for)g(the)330 5095 y(command,)e(passed)g
-(in)f(the)i(en)m(vironmen)m(t)f(\(see)h(Section)f(3.7.4)j([En)m
-(vironmen)m(t],)d(page)h(30\))225 5230 y Fp(\017)60 b
-Ft(traps)31 b(caugh)m(t)h(b)m(y)f(the)g(shell)f(are)h(reset)h(to)g(the)
-f(v)-5 b(alues)31 b(inherited)d(from)j(the)g(shell's)f(paren)m(t,)i
-(and)330 5340 y(traps)e(ignored)g(b)m(y)g(the)g(shell)f(are)i(ignored)p
-eop
+Fs(trap)225 2840 y Fp(\017)60 b Ft(shell)30 b(parameters)f(that)h(are)g
+(set)g(b)m(y)g(v)-5 b(ariable)30 b(assignmen)m(t)g(or)g(with)f
+Fs(set)f Ft(or)i(inherited)f(from)g(the)330 2949 y(shell's)i(paren)m(t)
+f(in)g(the)h(en)m(vironmen)m(t)225 3084 y Fp(\017)60
+b Ft(shell)44 b(functions)f(de\014ned)f(during)h(execution)i(or)e
+(inherited)h(from)f(the)h(shell's)g(paren)m(t)f(in)h(the)330
+3194 y(en)m(vironmen)m(t)225 3329 y Fp(\017)60 b Ft(options)33
+b(enabled)g(at)h(in)m(v)m(o)s(cation)h(\(either)f(b)m(y)f(default)g(or)
+g(with)g(command-line)g(argumen)m(ts\))h(or)330 3439
+y(b)m(y)c Fs(set)225 3574 y Fp(\017)60 b Ft(options)31
+b(enabled)f(b)m(y)g Fs(shopt)225 3709 y Fp(\017)60 b
+Ft(shell)31 b(aliases)g(de\014ned)f(with)g Fs(alias)f
+Ft(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(71\))225
+3844 y Fp(\017)60 b Ft(v)-5 b(arious)50 b(pro)s(cess)f
+Fl(id)p Ft(s,)55 b(including)49 b(those)i(of)e(bac)m(kground)h(jobs)f
+(\(see)i(Section)g(3.2.3)g([Lists],)330 3954 y(page)31
+b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Fs($$)p Ft(,)g(and)g(the)h(v)-5
+b(alue)31 b(of)f Fs($PPID)275 4115 y Ft(When)k(a)g(simple)h(command)f
+(other)g(than)g(a)h(builtin)f(or)g(shell)h(function)f(is)g(to)h(b)s(e)f
+(executed,)i(it)f(is)150 4225 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g
+(separate)h(execution)g(en)m(vironmen)m(t)g(that)f(consists)g(of)h(the)
+f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 4335 y(noted,)31
+b(the)f(v)-5 b(alues)31 b(are)g(inherited)f(from)g(the)g(shell.)225
+4470 y Fp(\017)60 b Ft(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e
+(an)m(y)h(mo)s(di\014cations)h(and)e(additions)h(sp)s(eci\014ed)g(b)m
+(y)g(redirections)g(to)330 4580 y(the)g(command)225 4715
+y Fp(\017)60 b Ft(the)31 b(curren)m(t)f(w)m(orking)g(directory)225
+4850 y Fp(\017)60 b Ft(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225
+4986 y Fp(\017)60 b Ft(shell)32 b(v)-5 b(ariables)33
+b(and)e(functions)h(mark)m(ed)g(for)g(exp)s(ort,)g(along)h(with)f(v)-5
+b(ariables)32 b(exp)s(orted)g(for)g(the)330 5095 y(command,)e(passed)g
+(in)g(the)h(en)m(vironmen)m(t)g(\(see)g(Section)g(3.7.4)i([En)m
+(vironmen)m(t],)e(page)g(30\))225 5230 y Fp(\017)60 b
+Ft(traps)31 b(caugh)m(t)h(b)m(y)f(the)g(shell)h(are)f(reset)h(to)g(the)
+f(v)-5 b(alues)32 b(inherited)e(from)h(the)g(shell's)h(paren)m(t,)g
+(and)330 5340 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored)p
+eop end
 %%Page: 30 36
-30 35 bop 150 -116 a Ft(30)2572 b(Bash)31 b(Reference)g(Man)m(ual)275
-299 y(A)41 b(command)g(in)m(v)m(ok)m(ed)h(in)e(this)h(separate)h(en)m
-(vironmen)m(t)f(cannot)h(a\013ect)h(the)f(shell's)e(execution)150
-408 y(en)m(vironmen)m(t.)275 540 y(Command)35 b(substitution,)h
-(commands)g(group)s(ed)f(with)h(paren)m(theses,)i(and)e(async)m
-(hronous)g(com-)150 650 y(mands)c(are)h(in)m(v)m(ok)m(ed)h(in)d(a)j
-(subshell)c(en)m(vironmen)m(t)i(that)i(is)e(a)h(duplicate)f(of)h(the)g
-(shell)e(en)m(vironmen)m(t,)150 760 y(except)k(that)g(traps)f(caugh)m
-(t)h(b)m(y)f(the)h(shell)d(are)i(reset)h(to)g(the)f(v)-5
-b(alues)34 b(that)h(the)f(shell)f(inherited)e(from)150
-869 y(its)h(paren)m(t)g(at)h(in)m(v)m(o)s(cation.)47
-b(Builtin)29 b(commands)j(that)h(are)g(in)m(v)m(ok)m(ed)g(as)f(part)g
-(of)h(a)f(pip)s(eline)d(are)k(also)150 979 y(executed)41
-b(in)e(a)i(subshell)c(en)m(vironmen)m(t.)71 b(Changes)40
-b(made)g(to)h(the)g(subshell)c(en)m(vironmen)m(t)j(cannot)150
-1088 y(a\013ect)32 b(the)f(shell's)d(execution)j(en)m(vironmen)m(t.)275
-1220 y(If)38 b(a)h(command)f(is)f(follo)m(w)m(ed)i(b)m(y)f(a)h(`)p
-Fs(&)p Ft(')g(and)f(job)g(con)m(trol)h(is)e(not)i(activ)m(e,)j(the)d
-(default)f(standard)150 1330 y(input)e(for)h(the)h(command)f(is)g(the)h
-(empt)m(y)g(\014le)e(`)p Fs(/dev/null)p Ft('.)61 b(Otherwise,)38
-b(the)g(in)m(v)m(ok)m(ed)g(command)150 1440 y(inherits)28
-b(the)j(\014le)e(descriptors)g(of)i(the)f(calling)f(shell)g(as)h(mo)s
-(di\014ed)f(b)m(y)h(redirections.)150 1656 y Fk(3.7.4)63
-b(En)m(vironmen)m(t)275 1898 y Ft(When)31 b(a)g(program)h(is)e(in)m(v)m
-(ok)m(ed)i(it)f(is)f(giv)m(en)h(an)h(arra)m(y)g(of)f(strings)f(called)h
-(the)g Fq(en)m(vironmen)m(t)p Ft(.)44 b(This)150 2007
-y(is)29 b(a)i(list)e(of)i(name-v)-5 b(alue)30 b(pairs,)f(of)i(the)f
-(form)g Fs(name=value)p Ft(.)275 2139 y(Bash)39 b(pro)m(vides)f(sev)m
-(eral)i(w)m(a)m(ys)h(to)f(manipulate)d(the)j(en)m(vironmen)m(t.)68
-b(On)38 b(in)m(v)m(o)s(cation,)k(the)e(shell)150 2249
-y(scans)g(its)g(o)m(wn)g(en)m(vironmen)m(t)g(and)g(creates)i(a)f
-(parameter)f(for)g(eac)m(h)i(name)e(found,)i(automatically)150
-2359 y(marking)25 b(it)g(for)h Fq(exp)s(ort)h Ft(to)g(c)m(hild)d(pro)s
-(cesses.)39 b(Executed)26 b(commands)g(inherit)e(the)i(en)m(vironmen)m
-(t.)38 b(The)150 2468 y Fs(export)d Ft(and)i(`)p Fs(declare)29
-b(-x)p Ft(')36 b(commands)h(allo)m(w)g(parameters)g(and)g(functions)f
-(to)i(b)s(e)e(added)h(to)h(and)150 2578 y(deleted)20
-b(from)g(the)h(en)m(vironmen)m(t.)37 b(If)20 b(the)h(v)-5
-b(alue)20 b(of)h(a)g(parameter)g(in)e(the)h(en)m(vironmen)m(t)h(is)e
-(mo)s(di\014ed,)i(the)150 2687 y(new)31 b(v)-5 b(alue)31
-b(b)s(ecomes)g(part)h(of)f(the)h(en)m(vironmen)m(t,)f(replacing)g(the)g
-(old.)43 b(The)31 b(en)m(vironmen)m(t)g(inherited)150
-2797 y(b)m(y)g(an)m(y)g(executed)h(command)f(consists)f(of)h(the)g
-(shell's)f(initial)e(en)m(vironmen)m(t,)j(whose)g(v)-5
-b(alues)30 b(ma)m(y)i(b)s(e)150 2907 y(mo)s(di\014ed)25
-b(in)g(the)i(shell,)f(less)g(an)m(y)h(pairs)e(remo)m(v)m(ed)j(b)m(y)f
+TeXDict begin 30 35 bop 150 -116 a Ft(30)2572 b(Bash)31
+b(Reference)g(Man)m(ual)275 299 y(A)41 b(command)g(in)m(v)m(ok)m(ed)i
+(in)e(this)h(separate)g(en)m(vironmen)m(t)g(cannot)g(a\013ect)h(the)f
+(shell's)g(execution)150 408 y(en)m(vironmen)m(t.)275
+540 y(Command)35 b(substitution,)j(commands)e(group)s(ed)f(with)i
+(paren)m(theses,)h(and)e(async)m(hronous)g(com-)150 650
+y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i(subshell)e(en)m(vironmen)m
+(t)h(that)h(is)f(a)g(duplicate)h(of)f(the)g(shell)g(en)m(vironmen)m(t,)
+150 760 y(except)i(that)g(traps)f(caugh)m(t)h(b)m(y)f(the)h(shell)f
+(are)g(reset)h(to)g(the)f(v)-5 b(alues)35 b(that)g(the)f(shell)h
+(inherited)e(from)150 869 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s
+(cation.)49 b(Builtin)32 b(commands)g(that)h(are)g(in)m(v)m(ok)m(ed)h
+(as)e(part)g(of)h(a)f(pip)s(eline)g(are)h(also)150 979
+y(executed)41 b(in)f(a)h(subshell)e(en)m(vironmen)m(t.)72
+b(Changes)40 b(made)g(to)h(the)g(subshell)e(en)m(vironmen)m(t)i(cannot)
+150 1088 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m
+(t.)275 1220 y(If)38 b(a)h(command)f(is)g(follo)m(w)m(ed)j(b)m(y)d(a)h
+(`)p Fs(&)p Ft(')g(and)f(job)g(con)m(trol)i(is)e(not)h(activ)m(e,)k
+(the)c(default)g(standard)150 1330 y(input)e(for)g(the)h(command)f(is)h
+(the)g(empt)m(y)g(\014le)f(`)p Fs(/dev/null)p Ft('.)61
+b(Otherwise,)39 b(the)f(in)m(v)m(ok)m(ed)h(command)150
+1440 y(inherits)30 b(the)h(\014le)f(descriptors)g(of)h(the)f(calling)i
+(shell)f(as)f(mo)s(di\014ed)g(b)m(y)g(redirections.)150
+1656 y Fk(3.7.4)63 b(En)m(vironmen)m(t)275 1898 y Ft(When)31
+b(a)g(program)h(is)f(in)m(v)m(ok)m(ed)i(it)f(is)f(giv)m(en)h(an)g(arra)
+m(y)g(of)f(strings)g(called)i(the)e Fq(en)m(vironmen)m(t)p
+Ft(.)45 b(This)150 2007 y(is)30 b(a)h(list)g(of)g(name-v)-5
+b(alue)31 b(pairs,)f(of)h(the)f(form)g Fs(name=value)p
+Ft(.)275 2139 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w)m(a)m(ys)g(to)f
+(manipulate)f(the)h(en)m(vironmen)m(t.)69 b(On)38 b(in)m(v)m(o)s
+(cation,)44 b(the)c(shell)150 2249 y(scans)g(its)h(o)m(wn)f(en)m
+(vironmen)m(t)h(and)f(creates)i(a)f(parameter)f(for)g(eac)m(h)i(name)e
+(found,)i(automatically)150 2359 y(marking)26 b(it)g(for)g
+Fq(exp)s(ort)h Ft(to)g(c)m(hild)f(pro)s(cesses.)39 b(Executed)26
+b(commands)g(inherit)g(the)g(en)m(vironmen)m(t.)39 b(The)150
+2468 y Fs(export)c Ft(and)i(`)p Fs(declare)29 b(-x)p
+Ft(')36 b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g(to)h(b)s
+(e)e(added)h(to)h(and)150 2578 y(deleted)21 b(from)f(the)h(en)m
+(vironmen)m(t.)38 b(If)20 b(the)h(v)-5 b(alue)21 b(of)g(a)g(parameter)g
+(in)f(the)g(en)m(vironmen)m(t)i(is)e(mo)s(di\014ed,)i(the)150
+2687 y(new)31 b(v)-5 b(alue)32 b(b)s(ecomes)f(part)h(of)f(the)h(en)m
+(vironmen)m(t,)g(replacing)h(the)e(old.)44 b(The)31 b(en)m(vironmen)m
+(t)h(inherited)150 2797 y(b)m(y)f(an)m(y)g(executed)h(command)f
+(consists)g(of)g(the)g(shell's)h(initial)g(en)m(vironmen)m(t,)g(whose)f
+(v)-5 b(alues)31 b(ma)m(y)h(b)s(e)150 2907 y(mo)s(di\014ed)26
+b(in)g(the)h(shell,)h(less)f(an)m(y)g(pairs)f(remo)m(v)m(ed)i(b)m(y)f
 (the)g Fs(unset)e Ft(and)h(`)p Fs(export)j(-n)p Ft(')e(commands,)g
-(plus)150 3016 y(an)m(y)k(additions)d(via)i(the)h Fs(export)d
+(plus)150 3016 y(an)m(y)k(additions)f(via)h(the)g Fs(export)d
 Ft(and)i(`)p Fs(declare)f(-x)p Ft(')h(commands.)275 3148
-y(The)j(en)m(vironmen)m(t)h(for)g(an)m(y)g(simple)f(command)h(or)g
-(function)f(ma)m(y)h(b)s(e)g(augmen)m(ted)h(temp)s(orarily)150
-3258 y(b)m(y)c(pre\014xing)d(it)i(with)g(parameter)h(assignmen)m(ts,)g
-(as)f(describ)s(ed)f(in)g(Section)i(3.4)h([Shell)c(P)m(arameters],)150
-3367 y(page)i(15.)41 b(These)29 b(assignmen)m(t)h(statemen)m(ts)h
-(a\013ect)f(only)f(the)g(en)m(vironmen)m(t)g(seen)h(b)m(y)f(that)h
-(command.)275 3499 y(If)h(the)i(`)p Fs(-k)p Ft(')f(option)g(is)f(set)i
-(\(see)g(Section)f(4.3)h([The)f(Set)h(Builtin],)d(page)j(50\),)h(then)e
-(all)f(parameter)150 3609 y(assignmen)m(ts)e(are)h(placed)g(in)e(the)i
-(en)m(vironmen)m(t)f(for)h(a)g(command,)f(not)h(just)f(those)i(that)f
+y(The)j(en)m(vironmen)m(t)i(for)f(an)m(y)g(simple)h(command)f(or)g
+(function)g(ma)m(y)g(b)s(e)g(augmen)m(ted)h(temp)s(orarily)150
+3258 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h
+(as)e(describ)s(ed)g(in)g(Section)i(3.4)g([Shell)e(P)m(arameters],)150
+3367 y(page)g(15.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g
+(a\013ect)f(only)g(the)f(en)m(vironmen)m(t)h(seen)g(b)m(y)f(that)h
+(command.)275 3499 y(If)h(the)i(`)p Fs(-k)p Ft(')f(option)h(is)f(set)h
+(\(see)g(Section)g(4.3)g([The)f(Set)h(Builtin],)g(page)g(50\),)h(then)e
+(all)h(parameter)150 3609 y(assignmen)m(ts)d(are)g(placed)h(in)e(the)h
+(en)m(vironmen)m(t)g(for)g(a)g(command,)f(not)h(just)f(those)i(that)f
 (precede)g(the)150 3719 y(command)g(name.)275 3851 y(When)f(Bash)h(in)m
-(v)m(ok)m(es)h(an)f(external)f(command,)h(the)g(v)-5
-b(ariable)29 b(`)p Fs($_)p Ft(')h(is)f(set)h(to)h(the)f(full)d(path)j
+(v)m(ok)m(es)i(an)e(external)g(command,)g(the)g(v)-5
+b(ariable)31 b(`)p Fs($_)p Ft(')f(is)g(set)g(to)h(the)f(full)f(path)h
 (name)150 3960 y(of)h(the)f(command)g(and)g(passed)g(to)h(that)g
-(command)f(in)f(its)h(en)m(vironmen)m(t.)150 4177 y Fk(3.7.5)63
-b(Exit)40 b(Status)275 4418 y Ft(F)-8 b(or)32 b(the)g(shell's)e(purp)s
-(oses,)g(a)j(command)e(whic)m(h)g(exits)g(with)g(a)h(zero)g(exit)g
-(status)g(has)f(succeeded.)150 4528 y(A)e(non-zero)h(exit)f(status)h
-(indicates)e(failure.)38 b(This)27 b(seemingly)h(coun)m(ter-in)m
-(tuitiv)m(e)h(sc)m(heme)h(is)e(used)h(so)150 4638 y(there)34
-b(is)f(one)h(w)m(ell-de\014ned)e(w)m(a)m(y)i(to)h(indicate)e(success)h
-(and)f(a)h(v)-5 b(ariet)m(y)34 b(of)g(w)m(a)m(ys)h(to)f(indicate)f(v)-5
-b(arious)150 4747 y(failure)36 b(mo)s(des.)62 b(When)38
-b(a)g(command)f(terminates)h(on)f(a)i(fatal)f(signal)e(whose)i(n)m(um)m
-(b)s(er)e(is)h Fq(N)p Ft(,)h(Bash)150 4857 y(uses)30
-b(the)g(v)-5 b(alue)30 b(128)p Fs(+)p Fq(N)42 b Ft(as)30
-b(the)h(exit)f(status.)275 4989 y(If)35 b(a)h(command)g(is)f(not)h
-(found,)g(the)g(c)m(hild)f(pro)s(cess)g(created)i(to)g(execute)g(it)f
-(returns)e(a)j(status)f(of)150 5098 y(127.)42 b(If)30
-b(a)h(command)f(is)f(found)g(but)h(is)f(not)i(executable,)g(the)g
-(return)e(status)i(is)e(126.)275 5230 y(If)j(a)i(command)f(fails)e(b)s
-(ecause)i(of)h(an)f(error)f(during)f(expansion)h(or)h(redirection,)g
-(the)h(exit)f(status)150 5340 y(is)c(greater)j(than)e(zero.)p
-eop
+(command)f(in)g(its)h(en)m(vironmen)m(t.)150 4177 y Fk(3.7.5)63
+b(Exit)40 b(Status)275 4418 y Ft(F)-8 b(or)32 b(the)g(shell's)g(purp)s
+(oses,)e(a)j(command)e(whic)m(h)h(exits)g(with)g(a)g(zero)g(exit)h
+(status)f(has)f(succeeded.)150 4528 y(A)e(non-zero)h(exit)g(status)g
+(indicates)g(failure.)40 b(This)28 b(seemingly)i(coun)m(ter-in)m
+(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 4638 y(there)34
+b(is)g(one)g(w)m(ell-de\014ned)g(w)m(a)m(y)g(to)h(indicate)g(success)f
+(and)f(a)h(v)-5 b(ariet)m(y)35 b(of)f(w)m(a)m(ys)h(to)f(indicate)h(v)-5
+b(arious)150 4747 y(failure)38 b(mo)s(des.)62 b(When)38
+b(a)g(command)f(terminates)i(on)e(a)i(fatal)g(signal)f(whose)g(n)m(um)m
+(b)s(er)e(is)i Fq(N)p Ft(,)g(Bash)150 4857 y(uses)30
+b(the)g(v)-5 b(alue)31 b(128)p Fs(+)p Fq(N)42 b Ft(as)30
+b(the)h(exit)g(status.)275 4989 y(If)k(a)h(command)g(is)g(not)g(found,)
+g(the)g(c)m(hild)h(pro)s(cess)e(created)i(to)g(execute)g(it)g(returns)d
+(a)j(status)f(of)150 5098 y(127.)42 b(If)30 b(a)h(command)f(is)g(found)
+f(but)h(is)g(not)h(executable,)h(the)f(return)e(status)i(is)f(126.)275
+5230 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f
+(during)g(expansion)h(or)g(redirection,)i(the)f(exit)g(status)150
+5340 y(is)c(greater)i(than)e(zero.)p eop end
 %%Page: 31 37
-31 36 bop 150 -116 a Ft(Chapter)30 b(3:)41 b(Basic)31
-b(Shell)d(F)-8 b(eatures)2246 b(31)275 299 y(The)38 b(exit)g(status)h
-(is)f(used)g(b)m(y)g(the)h(Bash)g(conditional)e(commands)h(\(see)h
-(Section)g(3.2.4.2)i([Con-)150 408 y(ditional)f(Constructs],)k(page)f
-(10\))g(and)e(some)i(of)f(the)g(list)e(constructs)i(\(see)h(Section)e
-(3.2.3)j([Lists],)150 518 y(page)31 b(9\).)275 651 y(All)38
-b(of)i(the)h(Bash)f(builtins)c(return)j(an)h(exit)g(status)h(of)f(zero)
-h(if)e(they)h(succeed)g(and)g(a)g(non-zero)150 760 y(status)34
-b(on)f(failure,)g(so)h(they)g(ma)m(y)g(b)s(e)f(used)g(b)m(y)g(the)h
-(conditional)e(and)h(list)f(constructs.)50 b(All)33 b(builtins)150
-870 y(return)c(an)i(exit)f(status)h(of)f(2)h(to)g(indicate)e(incorrect)
-i(usage.)150 1089 y Fk(3.7.6)63 b(Signals)275 1332 y
-Ft(When)27 b(Bash)h(is)g(in)m(teractiv)m(e,)h(in)e(the)h(absence)h(of)f
-(an)m(y)g(traps,)h(it)e(ignores)h Fs(SIGTERM)e Ft(\(so)i(that)h(`)p
-Fs(kill)150 1441 y(0)p Ft(')k(do)s(es)g(not)g(kill)d(an)j(in)m
-(teractiv)m(e)h(shell\),)f(and)f Fs(SIGINT)f Ft(is)h(caugh)m(t)i(and)f
-(handled)e(\(so)i(that)h(the)f Fs(wait)150 1551 y Ft(builtin)21
-b(is)j(in)m(terruptible\).)36 b(When)24 b(Bash)g(receiv)m(es)i(a)e
-Fs(SIGINT)p Ft(,)h(it)f(breaks)g(out)h(of)f(an)m(y)h(executing)g(lo)s
-(ops.)150 1660 y(In)31 b(all)f(cases,)j(Bash)f(ignores)f
-Fs(SIGQUIT)p Ft(.)42 b(If)32 b(job)f(con)m(trol)h(is)e(in)h(e\013ect)i
-(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 1770 y(page)f(79\),)h
-(Bash)e(ignores)g Fs(SIGTTIN)p Ft(,)f Fs(SIGTTOU)p Ft(,)g(and)g
-Fs(SIGTSTP)p Ft(.)275 1903 y(Non-builtin)f(commands)j(started)g(b)m(y)g
-(Bash)h(ha)m(v)m(e)g(signal)e(handlers)f(set)j(to)g(the)g(v)-5
-b(alues)30 b(inherited)150 2012 y(b)m(y)37 b(the)h(shell)e(from)h(its)g
-(paren)m(t.)62 b(When)38 b(job)f(con)m(trol)h(is)e(not)i(in)e
-(e\013ect,)41 b(async)m(hronous)c(commands)150 2122 y(ignore)e
-Fs(SIGINT)f Ft(and)h Fs(SIGQUIT)e Ft(in)i(addition)e(to)k(these)f
-(inherited)d(handlers.)54 b(Commands)35 b(run)f(as)i(a)150
-2232 y(result)26 b(of)i(command)f(substitution)f(ignore)h(the)h(k)m
-(eyb)s(oard-generated)g(job)g(con)m(trol)g(signals)e
-Fs(SIGTTIN)p Ft(,)150 2341 y Fs(SIGTTOU)p Ft(,)j(and)g
-Fs(SIGTSTP)p Ft(.)275 2474 y(The)h(shell)g(exits)h(b)m(y)g(default)f
-(up)s(on)g(receipt)h(of)g(a)h Fs(SIGHUP)p Ft(.)42 b(Before)32
-b(exiting,)f(an)g(in)m(teractiv)m(e)h(shell)150 2584
-y(resends)41 b(the)i Fs(SIGHUP)e Ft(to)i(all)e(jobs,)k(running)40
-b(or)i(stopp)s(ed.)76 b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g
-Fs(SIGCONT)d Ft(to)150 2693 y(ensure)32 b(that)h(they)g(receiv)m(e)h
-(the)f Fs(SIGHUP)p Ft(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell)
-e(from)i(sending)e(the)i Fs(SIGHUP)e Ft(signal)150 2803
-y(to)i(a)g(particular)e(job,)i(it)f(should)f(b)s(e)h(remo)m(v)m(ed)h
-(from)g(the)f(jobs)g(table)h(with)e(the)i Fs(disown)e
-Ft(builtin)e(\(see)150 2912 y(Section)h(7.2)h([Job)f(Con)m(trol)g
-(Builtins],)e(page)j(80\))h(or)e(mark)m(ed)g(to)h(not)f(receiv)m(e)h
-Fs(SIGHUP)e Ft(using)g Fs(disown)150 3022 y(-h)p Ft(.)275
-3155 y(If)i(the)h Fs(huponexit)d Ft(shell)i(option)g(has)h(b)s(een)f
-(set)h(with)f Fs(shopt)f Ft(\(see)j(Section)f(4.2)h([Bash)f(Builtins],)
-150 3264 y(page)f(39\),)h(Bash)e(sends)g(a)h Fs(SIGHUP)d
-Ft(to)j(all)f(jobs)g(when)f(an)h(in)m(teractiv)m(e)h(login)f(shell)e
-(exits.)275 3397 y(If)38 b(Bash)h(is)f(w)m(aiting)g(for)h(a)g(command)f
-(to)i(complete)f(and)f(receiv)m(es)i(a)f(signal)f(for)g(whic)m(h)g(a)h
-(trap)150 3507 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)d(not)j(b)s
-(e)f(executed)i(un)m(til)d(the)i(command)f(completes.)54
-b(When)35 b(Bash)g(is)150 3616 y(w)m(aiting)h(for)h(an)g(async)m
-(hronous)g(command)g(via)g(the)g Fs(wait)f Ft(builtin,)f(the)j
-(reception)f(of)g(a)g(signal)f(for)150 3726 y(whic)m(h)e(a)h(trap)g
-(has)g(b)s(een)f(set)h(will)e(cause)i(the)g Fs(wait)f
-Ft(builtin)e(to)j(return)f(immediately)f(with)h(an)h(exit)150
-3836 y(status)c(greater)g(than)f(128,)i(immediately)d(after)i(whic)m(h)
-e(the)i(trap)f(is)f(executed.)150 4088 y Fr(3.8)68 b(Shell)45
-b(Scripts)275 4330 y Ft(A)c(shell)f(script)h(is)g(a)h(text)h(\014le)e
-(con)m(taining)g(shell)f(commands.)75 b(When)41 b(suc)m(h)h(a)g(\014le)
-f(is)g(used)g(as)150 4440 y(the)33 b(\014rst)f(non-option)g(argumen)m
-(t)i(when)e(in)m(v)m(oking)g(Bash,)i(and)e(neither)g(the)h(`)p
-Fs(-c)p Ft(')g(nor)g(`)p Fs(-s)p Ft(')f(option)h(is)150
-4550 y(supplied)i(\(see)40 b(Section)f(6.1)g([In)m(v)m(oking)g(Bash],)i
+TeXDict begin 31 36 bop 150 -116 a Ft(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)275 299
+y(The)38 b(exit)h(status)g(is)g(used)f(b)m(y)g(the)h(Bash)g
+(conditional)h(commands)e(\(see)h(Section)h(3.2.4.2)h([Con-)150
+408 y(ditional)i(Constructs],)h(page)f(10\))g(and)e(some)i(of)f(the)g
+(list)g(constructs)g(\(see)h(Section)f(3.2.3)i([Lists],)150
+518 y(page)31 b(9\).)275 651 y(All)40 b(of)g(the)h(Bash)f(builtins)f
+(return)g(an)h(exit)h(status)g(of)f(zero)h(if)f(they)g(succeed)g(and)g
+(a)g(non-zero)150 760 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m(y)
+g(b)s(e)f(used)g(b)m(y)g(the)h(conditional)h(and)e(list)h(constructs.)
+50 b(All)35 b(builtins)150 870 y(return)29 b(an)i(exit)g(status)g(of)f
+(2)h(to)g(indicate)g(incorrect)h(usage.)150 1089 y Fk(3.7.6)63
+b(Signals)275 1332 y Ft(When)27 b(Bash)h(is)h(in)m(teractiv)m(e,)i(in)d
+(the)g(absence)h(of)f(an)m(y)g(traps,)h(it)f(ignores)h
+Fs(SIGTERM)d Ft(\(so)i(that)h(`)p Fs(kill)150 1441 y(0)p
+Ft(')k(do)s(es)g(not)g(kill)g(an)g(in)m(teractiv)m(e)j(shell\),)f(and)d
+Fs(SIGINT)f Ft(is)i(caugh)m(t)h(and)f(handled)f(\(so)h(that)h(the)f
+Fs(wait)150 1551 y Ft(builtin)24 b(is)h(in)m(terruptible\).)39
+b(When)24 b(Bash)g(receiv)m(es)j(a)d Fs(SIGINT)p Ft(,)h(it)g(breaks)f
+(out)h(of)f(an)m(y)h(executing)h(lo)s(ops.)150 1660 y(In)31
+b(all)h(cases,)h(Bash)f(ignores)g Fs(SIGQUIT)p Ft(.)42
+b(If)32 b(job)f(con)m(trol)i(is)e(in)h(e\013ect)h(\(see)f(Chapter)f(7)h
+([Job)g(Con)m(trol],)150 1770 y(page)f(79\),)h(Bash)e(ignores)h
+Fs(SIGTTIN)p Ft(,)e Fs(SIGTTOU)p Ft(,)g(and)g Fs(SIGTSTP)p
+Ft(.)275 1903 y(Non-builtin)i(commands)g(started)g(b)m(y)g(Bash)h(ha)m
+(v)m(e)g(signal)g(handlers)e(set)i(to)g(the)g(v)-5 b(alues)31
+b(inherited)150 2012 y(b)m(y)37 b(the)h(shell)g(from)f(its)h(paren)m
+(t.)62 b(When)38 b(job)f(con)m(trol)i(is)e(not)h(in)f(e\013ect,)k
+(async)m(hronous)c(commands)150 2122 y(ignore)f Fs(SIGINT)e
+Ft(and)h Fs(SIGQUIT)e Ft(in)j(addition)f(to)i(these)f(inherited)f
+(handlers.)55 b(Commands)35 b(run)f(as)i(a)150 2232 y(result)27
+b(of)h(command)f(substitution)h(ignore)g(the)g(k)m(eyb)s
+(oard-generated)g(job)g(con)m(trol)h(signals)f Fs(SIGTTIN)p
+Ft(,)150 2341 y Fs(SIGTTOU)p Ft(,)h(and)g Fs(SIGTSTP)p
+Ft(.)275 2474 y(The)h(shell)i(exits)g(b)m(y)f(default)g(up)s(on)f
+(receipt)i(of)f(a)h Fs(SIGHUP)p Ft(.)42 b(Before)32 b(exiting,)h(an)e
+(in)m(teractiv)m(e)j(shell)150 2584 y(resends)41 b(the)i
+Fs(SIGHUP)e Ft(to)i(all)g(jobs,)i(running)c(or)h(stopp)s(ed.)76
+b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g Fs(SIGCONT)d
+Ft(to)150 2693 y(ensure)32 b(that)h(they)g(receiv)m(e)i(the)e
+Fs(SIGHUP)p Ft(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell)g(from)
+g(sending)f(the)h Fs(SIGHUP)e Ft(signal)150 2803 y(to)i(a)g(particular)
+g(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h(from)g(the)f(jobs)g
+(table)i(with)e(the)h Fs(disown)e Ft(builtin)h(\(see)150
+2912 y(Section)f(7.2)g([Job)f(Con)m(trol)h(Builtins],)g(page)g(80\))h
+(or)e(mark)m(ed)g(to)h(not)f(receiv)m(e)i Fs(SIGHUP)d
+Ft(using)h Fs(disown)150 3022 y(-h)p Ft(.)275 3155 y(If)h(the)h
+Fs(huponexit)d Ft(shell)k(option)f(has)g(b)s(een)f(set)h(with)g
+Fs(shopt)e Ft(\(see)j(Section)g(4.2)g([Bash)f(Builtins],)150
+3264 y(page)f(39\),)h(Bash)e(sends)g(a)h Fs(SIGHUP)d
+Ft(to)j(all)h(jobs)e(when)f(an)h(in)m(teractiv)m(e)j(login)f(shell)e
+(exits.)275 3397 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g(command)f
+(to)i(complete)g(and)e(receiv)m(es)j(a)e(signal)h(for)e(whic)m(h)h(a)g
+(trap)150 3507 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g(not)g(b)s
+(e)f(executed)i(un)m(til)f(the)g(command)f(completes.)55
+b(When)35 b(Bash)g(is)150 3616 y(w)m(aiting)j(for)f(an)g(async)m
+(hronous)g(command)g(via)h(the)f Fs(wait)f Ft(builtin,)i(the)g
+(reception)g(of)f(a)g(signal)h(for)150 3726 y(whic)m(h)d(a)g(trap)g
+(has)g(b)s(een)f(set)h(will)h(cause)f(the)g Fs(wait)f
+Ft(builtin)h(to)g(return)f(immediately)i(with)f(an)g(exit)150
+3836 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 4088 y Fr(3.8)68 b(Shell)45
+b(Scripts)275 4330 y Ft(A)c(shell)h(script)g(is)g(a)g(text)h(\014le)f
+(con)m(taining)h(shell)f(commands.)75 b(When)41 b(suc)m(h)h(a)g(\014le)
+g(is)g(used)f(as)150 4440 y(the)33 b(\014rst)f(non-option)h(argumen)m
+(t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)e(neither)h(the)g(`)p
+Fs(-c)p Ft(')g(nor)g(`)p Fs(-s)p Ft(')f(option)i(is)150
+4550 y(supplied)j(\(see)j(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)h
 (page)f(63\),)i(Bash)d(reads)f(and)g(executes)i(commands)150
-4659 y(from)31 b(the)h(\014le,)g(then)f(exits.)45 b(This)30
-b(mo)s(de)h(of)h(op)s(eration)g(creates)h(a)f(non-in)m(teractiv)m(e)g
-(shell.)43 b(The)32 b(shell)150 4769 y(\014rst)26 b(searc)m(hes)h(for)f
-(the)g(\014le)g(in)f(the)h(curren)m(t)h(directory)-8
-b(,)27 b(and)f(lo)s(oks)f(in)h(the)g(directories)f(in)g
-Fs($PATH)g Ft(if)h(not)150 4878 y(found)j(there.)275
-5011 y(When)34 b(Bash)h(runs)e(a)i(shell)e(script,)h(it)h(sets)g(the)f
-(sp)s(ecial)g(parameter)h Fs(0)f Ft(to)h(the)g(name)g(of)g(the)g
-(\014le,)150 5121 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)h
-(and)f(the)h(p)s(ositional)d(parameters)i(are)h(set)g(to)g(the)g
-(remain-)150 5230 y(ing)e(argumen)m(ts,)k(if)c(an)m(y)h(are)g(giv)m
-(en.)66 b(If)39 b(no)g(additional)d(argumen)m(ts)k(are)f(supplied,)f
-(the)h(p)s(ositional)150 5340 y(parameters)31 b(are)f(unset.)p
-eop
+4659 y(from)31 b(the)h(\014le,)h(then)e(exits.)46 b(This)31
+b(mo)s(de)g(of)h(op)s(eration)h(creates)g(a)f(non-in)m(teractiv)m(e)i
+(shell.)45 b(The)32 b(shell)150 4769 y(\014rst)26 b(searc)m(hes)h(for)f
+(the)g(\014le)h(in)f(the)g(curren)m(t)h(directory)-8
+b(,)28 b(and)e(lo)s(oks)g(in)h(the)f(directories)h(in)f
+Fs($PATH)f Ft(if)i(not)150 4878 y(found)i(there.)275
+5011 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 Fs(0)f Ft(to)h(the)g(name)g(of)g(the)g
+(\014le,)150 5121 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 5230 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 5340 y(parameters)31 b(are)f(unset.)p
+eop end
 %%Page: 32 38
-32 37 bop 150 -116 a Ft(32)2572 b(Bash)31 b(Reference)g(Man)m(ual)275
-299 y(A)39 b(shell)f(script)g(ma)m(y)i(b)s(e)f(made)h(executable)g(b)m
-(y)f(using)f(the)i Fs(chmod)e Ft(command)h(to)h(turn)e(on)i(the)150
-408 y(execute)j(bit.)72 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h
-(\014le)e(while)f(searc)m(hing)i(the)g Fs($PATH)f Ft(for)h(a)h
-(command,)h(it)150 518 y(spa)m(wns)30 b(a)g(subshell)e(to)j(execute)h
-(it.)40 b(In)30 b(other)g(w)m(ords,)g(executing)390 653
-y Fs(filename)46 b Fj(arguments)150 787 y Ft(is)29 b(equiv)-5
-b(alen)m(t)30 b(to)h(executing)390 922 y Fs(bash)47 b(filename)e
-Fj(arguments)150 1056 y Ft(if)29 b Fs(filename)e Ft(is)i(an)g
-(executable)i(shell)d(script.)39 b(This)28 b(subshell)f(reinitializes)f
-(itself,)j(so)h(that)h(the)e(e\013ect)150 1166 y(is)35
-b(as)i(if)f(a)g(new)g(shell)f(had)h(b)s(een)g(in)m(v)m(ok)m(ed)g(to)i
-(in)m(terpret)d(the)i(script,)g(with)e(the)i(exception)g(that)g(the)150
-1275 y(lo)s(cations)23 b(of)i(commands)e(remem)m(b)s(ered)h(b)m(y)g
-(the)g(paren)m(t)g(\(see)h(the)f(description)e(of)i Fs(hash)f
-Ft(in)g(Section)h(4.1)150 1385 y([Bourne)30 b(Shell)f(Builtins],)f
-(page)j(33\))h(are)e(retained)g(b)m(y)g(the)h(c)m(hild.)275
-1519 y(Most)36 b(v)m(ersions)f(of)h(Unix)e(mak)m(e)i(this)f(a)h(part)f
-(of)h(the)g(op)s(erating)f(system's)g(command)h(execution)150
-1629 y(mec)m(hanism.)49 b(If)33 b(the)g(\014rst)g(line)f(of)h(a)h
-(script)e(b)s(egins)g(with)g(the)h(t)m(w)m(o)i(c)m(haracters)g(`)p
-Fs(#!)p Ft(',)f(the)g(remainder)150 1738 y(of)d(the)g(line)f(sp)s
-(eci\014es)f(an)i(in)m(terpreter)f(for)h(the)g(program.)43
-b(Th)m(us,)30 b(y)m(ou)h(can)h(sp)s(ecify)d(Bash,)j Fs(awk)p
-Ft(,)e(P)m(erl,)150 1848 y(or)g(some)h(other)g(in)m(terpreter)f(and)f
-(write)h(the)g(rest)h(of)g(the)f(script)f(\014le)h(in)f(that)i
+TeXDict begin 32 37 bop 150 -116 a Ft(32)2572 b(Bash)31
+b(Reference)g(Man)m(ual)275 299 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 Fs(chmod)e
+Ft(command)h(to)h(turn)e(on)i(the)150 408 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 Fs($PATH)f Ft(for)h(a)h(command,)h(it)150
+518 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 653 y Fs(filename)46
+b Fj(arguments)150 787 y Ft(is)30 b(equiv)-5 b(alen)m(t)32
+b(to)f(executing)390 922 y Fs(bash)47 b(filename)e Fj(arguments)150
+1056 y Ft(if)30 b Fs(filename)d Ft(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 1166 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 1275 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 Fs(hash)f Ft(in)h(Section)h(4.1)150
+1385 y([Bourne)30 b(Shell)h(Builtins],)g(page)g(33\))h(are)e(retained)h
+(b)m(y)f(the)h(c)m(hild.)275 1519 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 1629 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 Fs(#!)p Ft(',)f(the)g(remainder)150
+1738 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
+Fs(awk)p Ft(,)e(P)m(erl,)150 1848 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 1983 y(The)40 b(argumen)m(ts)h(to)g(the)g(in)m
-(terpreter)f(consist)g(of)h(a)g(single)f(optional)f(argumen)m(t)j
-(follo)m(wing)d(the)150 2092 y(in)m(terpreter)32 b(name)i(on)f(the)g
-(\014rst)f(line)g(of)h(the)g(script)f(\014le,)h(follo)m(w)m(ed)g(b)m(y)
-g(the)g(name)g(of)g(the)h(script)e(\014le,)150 2202 y(follo)m(w)m(ed)f
-(b)m(y)h(the)f(rest)h(of)g(the)f(argumen)m(ts.)45 b(Bash)31
-b(will)e(p)s(erform)h(this)h(action)h(on)f(op)s(erating)g(systems)150
-2311 y(that)24 b(do)g(not)f(handle)f(it)h(themselv)m(es.)39
-b(Note)25 b(that)f(some)g(older)f(v)m(ersions)f(of)i(Unix)e(limit)g
-(the)i(in)m(terpreter)150 2421 y(name)30 b(and)g(argumen)m(t)h(to)g(a)g
-(maxim)m(um)e(of)i(32)g(c)m(haracters.)275 2555 y(Bash)h(scripts)f
-(often)h(b)s(egin)f(with)g Fs(#!)f(/bin/bash)g Ft(\(assuming)h(that)i
-(Bash)f(has)g(b)s(een)f(installed)f(in)150 2665 y(`)p
-Fs(/bin)p Ft('\),)25 b(since)d(this)g(ensures)g(that)i(Bash)f(will)e(b)
-s(e)h(used)h(to)h(in)m(terpret)e(the)h(script,)h(ev)m(en)g(if)e(it)h
+(terpreter)g(consist)g(of)g(a)g(single)h(optional)f(argumen)m(t)h
+(follo)m(wing)g(the)150 2092 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 2202 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
+2311 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 2421 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 2555 y(Bash)h(scripts)g
+(often)g(b)s(egin)g(with)g Fs(#!)e(/bin/bash)g Ft(\(assuming)i(that)h
+(Bash)f(has)g(b)s(een)f(installed)i(in)150 2665 y(`)p
+Fs(/bin)p Ft('\),)25 b(since)e(this)g(ensures)f(that)i(Bash)f(will)h(b)
+s(e)e(used)h(to)h(in)m(terpret)f(the)g(script,)i(ev)m(en)f(if)f(it)h
 (is)f(executed)150 2775 y(under)29 b(another)h(shell.)p
-eop
+eop end
 %%Page: 33 39
-33 38 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)28
-b(Builtin)g(Commands)2069 b(33)150 299 y Fo(4)80 b(Shell)55
-b(Builtin)g(Commands)275 525 y Ft(Builtin)22 b(commands)i(are)h(con)m
-(tained)g(within)d(the)j(shell)e(itself.)38 b(When)24
-b(the)h(name)g(of)g(a)g(builtin)c(com-)150 635 y(mand)26
-b(is)h(used)f(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)f(simple)f(command)
-h(\(see)h(Section)f(3.2.1)i([Simple)d(Commands],)150
-745 y(page)21 b(8\),)j(the)d(shell)e(executes)j(the)f(command)f
-(directly)-8 b(,)22 b(without)e(in)m(v)m(oking)g(another)h(program.)37
-b(Builtin)150 854 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)e
-(functionalit)m(y)g(imp)s(ossible)e(or)k(incon)m(v)m(enien)m(t)f(to)h
-(obtain)150 964 y(with)29 b(separate)i(utilities.)275
-1097 y(This)i(section)i(brie\015y)f(the)h(builtins)d(whic)m(h)i(Bash)h
-(inherits)e(from)i(the)g(Bourne)g(Shell,)g(as)g(w)m(ell)g(as)150
-1206 y(the)c(builtin)26 b(commands)k(whic)m(h)g(are)g(unique)f(to)i(or)
-f(ha)m(v)m(e)i(b)s(een)e(extended)g(in)f(Bash.)275 1339
-y(Sev)m(eral)44 b(builtin)c(commands)k(are)h(describ)s(ed)d(in)h(other)
-h(c)m(hapters:)69 b(builtin)40 b(commands)k(whic)m(h)150
-1449 y(pro)m(vide)22 b(the)i(Bash)f(in)m(terface)h(to)g(the)g(job)f
-(con)m(trol)h(facilities)d(\(see)j(Section)g(7.2)g([Job)f(Con)m(trol)g
-(Builtins],)150 1558 y(page)40 b(80\),)j(the)c(directory)g(stac)m(k)h
-(\(see)g(Section)f(6.8.1)i([Directory)f(Stac)m(k)g(Builtins],)f(page)h
-(73\),)j(the)150 1668 y(command)23 b(history)g(\(see)h(Section)f(9.2)i
-([Bash)f(History)f(Builtins],)f(page)j(109\),)h(and)d(the)h
-(programmable)150 1778 y(completion)30 b(facilities)e(\(see)k(Section)e
-(8.7)h([Programmable)f(Completion)f(Builtins],)f(page)k(105\).)275
-1911 y(Man)m(y)f(of)f(the)h(builtins)26 b(ha)m(v)m(e)32
-b(b)s(een)e(extended)g(b)m(y)g Fl(posix)g Ft(or)g(Bash.)275
-2044 y(Unless)19 b(otherwise)h(noted,)i(eac)m(h)g(builtin)17
-b(command)j(do)s(cumen)m(ted)g(as)h(accepting)g(options)e(preceded)150
-2153 y(b)m(y)30 b(`)p Fs(-)p Ft(')h(accepts)g(`)p Fs(--)p
-Ft(')g(to)g(signify)d(the)j(end)f(of)g(the)h(options.)150
-2406 y Fr(4.1)68 b(Bourne)45 b(Shell)g(Builtins)275 2648
-y Ft(The)31 b(follo)m(wing)f(shell)f(builtin)g(commands)i(are)h
-(inherited)d(from)i(the)h(Bourne)f(Shell.)43 b(These)31
-b(com-)150 2758 y(mands)e(are)i(implemen)m(ted)e(as)i(sp)s(eci\014ed)d
-(b)m(y)j(the)f Fl(posix)g Ft(1003.2)j(standard.)150 2914
-y Fs(:)d Ft(\(a)h(colon\))870 3024 y Fs(:)47 b([)p Fj(arguments)11
-b Fs(])630 3157 y Ft(Do)43 b(nothing)e(b)s(ey)m(ond)h(expanding)e
-Fq(argumen)m(ts)46 b Ft(and)c(p)s(erforming)e(redirections.)74
-b(The)630 3267 y(return)29 b(status)i(is)e(zero.)150
-3423 y Fs(.)h Ft(\(a)h(p)s(erio)s(d\))870 3532 y Fs(.)47
+TeXDict begin 33 38 bop 150 -116 a Ft(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(33)150 299 y Fo(4)80
+b(Shell)53 b(Builtin)f(Commands)275 525 y Ft(Builtin)25
+b(commands)f(are)h(con)m(tained)h(within)e(the)h(shell)g(itself.)40
+b(When)24 b(the)h(name)g(of)g(a)g(builtin)f(com-)150
+635 y(mand)i(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
+745 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 854 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 964 y(with)30 b(separate)h(utilities.)275
+1097 y(This)j(section)i(brie\015y)f(the)g(builtins)g(whic)m(h)g(Bash)g
+(inherits)g(from)g(the)g(Bourne)g(Shell,)i(as)e(w)m(ell)i(as)150
+1206 y(the)31 b(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)e(extended)g(in)g(Bash.)275 1339
+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
+1449 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 1558 y(page)40 b(80\),)j(the)c(directory)h(stac)m(k)g
+(\(see)g(Section)g(6.8.1)h([Directory)g(Stac)m(k)f(Builtins],)i(page)e
+(73\),)j(the)150 1668 y(command)23 b(history)h(\(see)g(Section)g(9.2)h
+([Bash)f(History)g(Builtins],)h(page)g(109\),)h(and)d(the)h
+(programmable)150 1778 y(completion)32 b(facilities)g(\(see)g(Section)f
+(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(105\).)275
+1911 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 Fl(posix)g Ft(or)g(Bash.)275 2044 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 2153 y(b)m(y)30
+b(`)p Fs(-)p Ft(')h(accepts)g(`)p Fs(--)p Ft(')g(to)g(signify)f(the)h
+(end)f(of)g(the)h(options.)150 2406 y Fr(4.1)68 b(Bourne)45
+b(Shell)g(Builtins)275 2648 y Ft(The)31 b(follo)m(wing)i(shell)e
+(builtin)h(commands)f(are)h(inherited)f(from)g(the)h(Bourne)f(Shell.)45
+b(These)31 b(com-)150 2758 y(mands)e(are)i(implemen)m(ted)g(as)g(sp)s
+(eci\014ed)e(b)m(y)i(the)f Fl(posix)g Ft(1003.2)j(standard.)150
+2914 y Fs(:)d Ft(\(a)h(colon\))870 3024 y Fs(:)47 b([)p
+Fj(arguments)11 b Fs(])630 3157 y Ft(Do)43 b(nothing)f(b)s(ey)m(ond)g
+(expanding)f Fq(argumen)m(ts)46 b Ft(and)c(p)s(erforming)f
+(redirections.)76 b(The)630 3267 y(return)29 b(status)i(is)f(zero.)150
+3423 y Fs(.)g Ft(\(a)h(p)s(erio)s(d\))870 3532 y Fs(.)47
 b Fj(filename)57 b Fs([)p Fj(arguments)11 b Fs(])630
 3665 y Ft(Read)34 b(and)f(execute)i(commands)e(from)g(the)h
-Fq(\014lename)k Ft(argumen)m(t)c(in)e(the)i(curren)m(t)g(shell)630
-3775 y(con)m(text.)45 b(If)31 b Fq(\014lename)36 b Ft(do)s(es)31
-b(not)g(con)m(tain)h(a)f(slash,)g(the)h Fs(PATH)e Ft(v)-5
-b(ariable)30 b(is)g(used)g(to)i(\014nd)630 3885 y Fq(\014lename)p
-Ft(.)51 b(When)34 b(Bash)g(is)g(not)g(in)f Fl(posix)g
-Ft(mo)s(de,)i(the)g(curren)m(t)f(directory)f(is)g(searc)m(hed)630
-3994 y(if)d Fq(\014lename)35 b Ft(is)30 b(not)i(found)d(in)h
+Fq(\014lename)39 b Ft(argumen)m(t)34 b(in)f(the)h(curren)m(t)g(shell)
+630 3775 y(con)m(text.)45 b(If)31 b Fq(\014lename)37
+b Ft(do)s(es)31 b(not)g(con)m(tain)i(a)e(slash,)h(the)g
+Fs(PATH)e Ft(v)-5 b(ariable)32 b(is)f(used)f(to)i(\014nd)630
+3885 y Fq(\014lename)p Ft(.)52 b(When)34 b(Bash)g(is)h(not)f(in)g
+Fl(posix)f Ft(mo)s(de,)i(the)g(curren)m(t)f(directory)g(is)g(searc)m
+(hed)630 3994 y(if)d Fq(\014lename)36 b Ft(is)31 b(not)h(found)d(in)i
 Fs($PATH)p Ft(.)41 b(If)31 b(an)m(y)g Fq(argumen)m(ts)k
-Ft(are)c(supplied,)d(they)k(b)s(ecome)630 4104 y(the)e(p)s(ositional)e
-(parameters)j(when)e Fq(\014lename)34 b Ft(is)29 b(executed.)42
-b(Otherwise)29 b(the)h(p)s(ositional)630 4213 y(parameters)43
-b(are)h(unc)m(hanged.)79 b(The)42 b(return)g(status)i(is)e(the)h(exit)g
-(status)h(of)f(the)g(last)630 4323 y(command)37 b(executed,)k(or)c
-(zero)h(if)f(no)g(commands)g(are)h(executed.)63 b(If)36
-b Fq(\014lename)42 b Ft(is)37 b(not)630 4433 y(found,)22
-b(or)f(cannot)g(b)s(e)f(read,)j(the)e(return)f(status)h(is)f(non-zero.)
-38 b(This)19 b(builtin)f(is)h(equiv)-5 b(alen)m(t)630
+Ft(are)c(supplied,)f(they)i(b)s(ecome)630 4104 y(the)e(p)s(ositional)h
+(parameters)g(when)e Fq(\014lename)35 b Ft(is)30 b(executed.)42
+b(Otherwise)30 b(the)g(p)s(ositional)630 4213 y(parameters)43
+b(are)h(unc)m(hanged.)79 b(The)42 b(return)g(status)i(is)f(the)g(exit)h
+(status)g(of)f(the)g(last)630 4323 y(command)37 b(executed,)k(or)c
+(zero)h(if)g(no)f(commands)g(are)h(executed.)63 b(If)36
+b Fq(\014lename)43 b Ft(is)38 b(not)630 4433 y(found,)22
+b(or)f(cannot)g(b)s(e)f(read,)j(the)e(return)f(status)h(is)g(non-zero.)
+38 b(This)20 b(builtin)h(is)f(equiv)-5 b(alen)m(t)630
 4542 y(to)31 b Fs(source)p Ft(.)150 4699 y Fs(break)870
-4831 y(break)46 b([)p Fj(n)11 b Fs(])630 4964 y Ft(Exit)44
-b(from)g(a)g Fs(for)p Ft(,)k Fs(while)p Ft(,)e Fs(until)p
-Ft(,)h(or)d Fs(select)f Ft(lo)s(op.)82 b(If)44 b Fq(n)g
-Ft(is)f(supplied,)i(the)g Fq(n)p Ft(th)630 5074 y(enclosing)39
-b(lo)s(op)g(is)h(exited.)69 b Fq(n)40 b Ft(m)m(ust)g(b)s(e)f(greater)j
-(than)d(or)i(equal)e(to)i(1.)70 b(The)40 b(return)630
-5184 y(status)31 b(is)e(zero)i(unless)e Fq(n)h Ft(is)f(not)i(greater)g
-(than)g(or)f(equal)g(to)h(1.)150 5340 y Fs(cd)p eop
+4831 y(break)46 b([)p Fj(n)11 b Fs(])630 4964 y Ft(Exit)45
+b(from)f(a)g Fs(for)p Ft(,)k Fs(while)p Ft(,)e Fs(until)p
+Ft(,)h(or)d Fs(select)f Ft(lo)s(op.)83 b(If)44 b Fq(n)g
+Ft(is)g(supplied,)j(the)e Fq(n)p Ft(th)630 5074 y(enclosing)c(lo)s(op)f
+(is)h(exited.)70 b Fq(n)40 b Ft(m)m(ust)g(b)s(e)f(greater)j(than)d(or)i
+(equal)f(to)h(1.)70 b(The)40 b(return)630 5184 y(status)31
+b(is)f(zero)h(unless)f Fq(n)g Ft(is)g(not)h(greater)g(than)g(or)f
+(equal)h(to)g(1.)150 5340 y Fs(cd)p eop end
 %%Page: 34 40
-34 39 bop 150 -116 a Ft(34)2572 b(Bash)31 b(Reference)g(Man)m(ual)870
-299 y Fs(cd)47 b([-L|-P])f([)p Fj(directory)11 b Fs(])630
-431 y Ft(Change)37 b(the)g(curren)m(t)f(w)m(orking)h(directory)f(to)i
-Fq(directory)p Ft(.)59 b(If)37 b Fq(directory)44 b Ft(is)36
-b(not)h(giv)m(en,)630 541 y(the)31 b(v)-5 b(alue)30 b(of)h(the)g
-Fs(HOME)e Ft(shell)g(v)-5 b(ariable)30 b(is)g(used.)40
-b(If)31 b(the)g(shell)e(v)-5 b(ariable)29 b Fs(CDPATH)g
-Ft(exists,)630 650 y(it)e(is)f(used)g(as)h(a)h(searc)m(h)f(path.)40
-b(If)26 b Fq(directory)34 b Ft(b)s(egins)26 b(with)g(a)h(slash,)g
-Fs(CDPATH)e Ft(is)h(not)h(used.)630 783 y(The)h(`)p Fs(-P)p
-Ft(')h(option)f(means)g(to)h(not)g(follo)m(w)f(sym)m(b)s(olic)f(links;)
-g(sym)m(b)s(olic)g(links)f(are)j(follo)m(w)m(ed)630 892
-y(b)m(y)23 b(default)g(or)h(with)e(the)i(`)p Fs(-L)p
-Ft(')f(option.)38 b(If)23 b Fq(directory)31 b Ft(is)22
-b(`)p Fs(-)p Ft(',)k(it)d(is)f(equiv)-5 b(alen)m(t)23
-b(to)i Fs($OLDPWD)p Ft(.)630 1025 y(If)33 b(a)h(non-empt)m(y)g
-(directory)f(name)g(from)g Fs(CDPATH)f Ft(is)g(used,)i(or)g(if)e(`)p
-Fs(-)p Ft(')i(is)e(the)i(\014rst)f(argu-)630 1134 y(men)m(t,)28
-b(and)e(the)h(directory)f(c)m(hange)i(is)e(successful,)h(the)g
-(absolute)f(pathname)h(of)f(the)h(new)630 1244 y(w)m(orking)j
-(directory)g(is)f(written)g(to)j(the)e(standard)g(output.)630
-1377 y(The)f(return)g(status)h(is)e(zero)j(if)d(the)i(directory)f(is)g
-(successfully)f(c)m(hanged,)i(non-zero)g(oth-)630 1486
+TeXDict begin 34 39 bop 150 -116 a Ft(34)2572 b(Bash)31
+b(Reference)g(Man)m(ual)870 299 y Fs(cd)47 b([-L|-P])f([)p
+Fj(directory)11 b Fs(])630 431 y Ft(Change)37 b(the)g(curren)m(t)f(w)m
+(orking)i(directory)f(to)h Fq(directory)p Ft(.)60 b(If)37
+b Fq(directory)45 b Ft(is)37 b(not)g(giv)m(en,)630 541
+y(the)31 b(v)-5 b(alue)31 b(of)g(the)g Fs(HOME)e Ft(shell)i(v)-5
+b(ariable)32 b(is)f(used.)40 b(If)31 b(the)g(shell)g(v)-5
+b(ariable)31 b Fs(CDPATH)e Ft(exists,)630 650 y(it)f(is)f(used)f(as)h
+(a)h(searc)m(h)f(path.)40 b(If)26 b Fq(directory)35 b
+Ft(b)s(egins)27 b(with)g(a)g(slash,)h Fs(CDPATH)d Ft(is)i(not)g(used.)
+630 783 y(The)h(`)p Fs(-P)p Ft(')h(option)g(means)f(to)h(not)g(follo)m
+(w)h(sym)m(b)s(olic)f(links;)g(sym)m(b)s(olic)g(links)f(are)h(follo)m
+(w)m(ed)630 892 y(b)m(y)23 b(default)h(or)g(with)f(the)h(`)p
+Fs(-L)p Ft(')f(option.)39 b(If)23 b Fq(directory)32 b
+Ft(is)23 b(`)p Fs(-)p Ft(',)j(it)e(is)f(equiv)-5 b(alen)m(t)25
+b(to)g Fs($OLDPWD)p Ft(.)630 1025 y(If)33 b(a)h(non-empt)m(y)g
+(directory)g(name)f(from)g Fs(CDPATH)f Ft(is)h(used,)h(or)g(if)f(`)p
+Fs(-)p Ft(')h(is)f(the)h(\014rst)f(argu-)630 1134 y(men)m(t,)28
+b(and)e(the)h(directory)g(c)m(hange)h(is)f(successful,)h(the)f
+(absolute)g(pathname)g(of)f(the)h(new)630 1244 y(w)m(orking)k
+(directory)g(is)f(written)g(to)i(the)e(standard)g(output.)630
+1377 y(The)f(return)g(status)h(is)f(zero)i(if)e(the)h(directory)g(is)g
+(successfully)g(c)m(hanged,)g(non-zero)g(oth-)630 1486
 y(erwise.)150 1641 y Fs(continue)870 1774 y(continue)46
-b([)p Fj(n)11 b Fs(])630 1906 y Ft(Resume)32 b(the)g(next)g(iteration)g
-(of)g(an)g(enclosing)f Fs(for)p Ft(,)h Fs(while)p Ft(,)f
+b([)p Fj(n)11 b Fs(])630 1906 y Ft(Resume)32 b(the)g(next)g(iteration)i
+(of)e(an)g(enclosing)h Fs(for)p Ft(,)f Fs(while)p Ft(,)f
 Fs(until)p Ft(,)g(or)h Fs(select)f Ft(lo)s(op.)630 2016
-y(If)f Fq(n)h Ft(is)f(supplied,)d(the)32 b(execution)f(of)g(the)g
-Fq(n)p Ft(th)f(enclosing)g(lo)s(op)g(is)f(resumed.)42
+y(If)f Fq(n)h Ft(is)g(supplied,)e(the)j(execution)g(of)f(the)g
+Fq(n)p Ft(th)f(enclosing)i(lo)s(op)f(is)f(resumed.)42
 b Fq(n)30 b Ft(m)m(ust)h(b)s(e)630 2125 y(greater)39
-b(than)f(or)g(equal)f(to)i(1.)63 b(The)38 b(return)e(status)j(is)d
-(zero)j(unless)d Fq(n)i Ft(is)f(not)h(greater)630 2235
-y(than)30 b(or)g(equal)g(to)h(1.)150 2390 y Fs(eval)870
+b(than)f(or)g(equal)g(to)h(1.)63 b(The)38 b(return)e(status)j(is)e
+(zero)i(unless)e Fq(n)h Ft(is)g(not)g(greater)630 2235
+y(than)30 b(or)g(equal)h(to)g(1.)150 2390 y Fs(eval)870
 2523 y(eval)47 b([)p Fj(arguments)11 b Fs(])630 2655
-y Ft(The)25 b(argumen)m(ts)h(are)g(concatenated)i(together)f(in)m(to)e
-(a)h(single)f(command,)h(whic)m(h)f(is)f(then)630 2765
-y(read)35 b(and)g(executed,)j(and)d(its)g(exit)g(status)h(returned)e
-(as)h(the)h(exit)f(status)h(of)g Fs(eval)p Ft(.)54 b(If)630
-2874 y(there)31 b(are)f(no)h(argumen)m(ts)f(or)h(only)e(empt)m(y)i
-(argumen)m(ts,)g(the)f(return)g(status)g(is)g(zero.)150
+y Ft(The)25 b(argumen)m(ts)h(are)g(concatenated)i(together)f(in)m(to)f
+(a)g(single)h(command,)f(whic)m(h)g(is)f(then)630 2765
+y(read)35 b(and)g(executed,)j(and)d(its)h(exit)g(status)g(returned)e
+(as)h(the)h(exit)g(status)g(of)g Fs(eval)p Ft(.)54 b(If)630
+2874 y(there)31 b(are)f(no)h(argumen)m(ts)f(or)h(only)f(empt)m(y)h
+(argumen)m(ts,)g(the)f(return)g(status)g(is)h(zero.)150
 3029 y Fs(exec)870 3162 y(exec)47 b([-cl])f([-a)h Fj(name)11
 b Fs(])46 b([)p Fj(command)56 b Fs([)p Fj(arguments)11
-b Fs(]])630 3294 y Ft(If)28 b Fq(command)j Ft(is)d(supplied,)d(it)j
-(replaces)g(the)g(shell)f(without)g(creating)i(a)f(new)g(pro)s(cess.)39
-b(If)630 3404 y(the)25 b(`)p Fs(-l)p Ft(')f(option)h(is)e(supplied,)g
-(the)i(shell)e(places)h(a)h(dash)f(at)i(the)f(b)s(eginning)d(of)i(the)h
+b Fs(]])630 3294 y Ft(If)28 b Fq(command)j Ft(is)e(supplied,)e(it)i
+(replaces)g(the)f(shell)h(without)f(creating)i(a)e(new)g(pro)s(cess.)39
+b(If)630 3404 y(the)25 b(`)p Fs(-l)p Ft(')f(option)i(is)e(supplied,)h
+(the)g(shell)g(places)g(a)g(dash)f(at)i(the)f(b)s(eginning)f(of)g(the)h
 (zeroth)630 3513 y(arg)h(passed)f(to)h Fq(command)p Ft(.)39
-b(This)23 b(is)i(what)g(the)h Fs(login)d Ft(program)j(do)s(es.)38
+b(This)24 b(is)i(what)f(the)h Fs(login)d Ft(program)j(do)s(es.)38
 b(The)25 b(`)p Fs(-c)p Ft(')g(option)630 3623 y(causes)g
-Fq(command)i Ft(to)e(b)s(e)f(executed)h(with)e(an)h(empt)m(y)h(en)m
-(vironmen)m(t.)38 b(If)24 b(`)p Fs(-a)p Ft(')g(is)f(supplied,)630
-3733 y(the)32 b(shell)e(passes)i Fq(name)37 b Ft(as)c(the)f(zeroth)h
+Fq(command)i Ft(to)e(b)s(e)f(executed)h(with)f(an)g(empt)m(y)h(en)m
+(vironmen)m(t.)39 b(If)24 b(`)p Fs(-a)p Ft(')g(is)g(supplied,)630
+3733 y(the)32 b(shell)g(passes)g Fq(name)37 b Ft(as)c(the)f(zeroth)h
 (argumen)m(t)f(to)h Fq(command)p Ft(.)45 b(If)32 b(no)g
-Fq(command)j Ft(is)630 3842 y(sp)s(eci\014ed,)f(redirections)f(ma)m(y)i
-(b)s(e)f(used)f(to)i(a\013ect)h(the)f(curren)m(t)f(shell)f(en)m
-(vironmen)m(t.)52 b(If)630 3952 y(there)34 b(are)h(no)f(redirection)f
-(errors,)i(the)f(return)f(status)i(is)e(zero;)k(otherwise)d(the)g
-(return)630 4061 y(status)d(is)e(non-zero.)150 4217 y
+Fq(command)j Ft(is)630 3842 y(sp)s(eci\014ed,)g(redirections)g(ma)m(y)g
+(b)s(e)f(used)f(to)i(a\013ect)h(the)f(curren)m(t)f(shell)h(en)m
+(vironmen)m(t.)53 b(If)630 3952 y(there)34 b(are)h(no)f(redirection)h
+(errors,)g(the)f(return)f(status)i(is)f(zero;)j(otherwise)e(the)f
+(return)630 4061 y(status)d(is)f(non-zero.)150 4217 y
 Fs(exit)870 4349 y(exit)47 b([)p Fj(n)11 b Fs(])630 4482
-y Ft(Exit)29 b(the)h(shell,)f(returning)e(a)k(status)f(of)g
-Fq(n)f Ft(to)h(the)g(shell's)e(paren)m(t.)41 b(If)30
-b Fq(n)f Ft(is)g(omitted,)h(the)630 4591 y(exit)c(status)h(is)f(that)h
-(of)g(the)g(last)f(command)g(executed.)41 b(An)m(y)26
-b(trap)h(on)f Fs(EXIT)f Ft(is)h(executed)630 4701 y(b)s(efore)k(the)h
-(shell)d(terminates.)150 4856 y Fs(export)870 4988 y(export)46
+y Ft(Exit)30 b(the)g(shell,)h(returning)d(a)j(status)f(of)g
+Fq(n)f Ft(to)h(the)g(shell's)g(paren)m(t.)41 b(If)30
+b Fq(n)f Ft(is)h(omitted,)h(the)630 4591 y(exit)c(status)g(is)g(that)g
+(of)g(the)g(last)g(command)f(executed.)41 b(An)m(y)26
+b(trap)h(on)f Fs(EXIT)f Ft(is)i(executed)630 4701 y(b)s(efore)j(the)h
+(shell)f(terminates.)150 4856 y Fs(export)870 4988 y(export)46
 b([-fn])g([-p])h([)p Fj(name)11 b Fs([=)p Fj(value)g
 Fs(]])630 5121 y Ft(Mark)40 b(eac)m(h)h Fq(name)k Ft(to)40
-b(b)s(e)f(passed)g(to)i(c)m(hild)d(pro)s(cesses)h(in)f(the)i(en)m
-(vironmen)m(t.)69 b(If)39 b(the)630 5230 y(`)p Fs(-f)p
-Ft(')29 b(option)g(is)g(supplied,)e(the)i Fq(name)5 b
-Ft(s)30 b(refer)f(to)h(shell)e(functions;)g(otherwise)h(the)h(names)630
-5340 y(refer)36 b(to)i(shell)c(v)-5 b(ariables.)58 b(The)36
-b(`)p Fs(-n)p Ft(')h(option)f(means)g(to)h(no)g(longer)f(mark)g(eac)m
-(h)i Fq(name)p eop
+b(b)s(e)f(passed)g(to)i(c)m(hild)f(pro)s(cesses)f(in)g(the)h(en)m
+(vironmen)m(t.)70 b(If)39 b(the)630 5230 y(`)p Fs(-f)p
+Ft(')29 b(option)h(is)g(supplied,)f(the)g Fq(name)5 b
+Ft(s)30 b(refer)f(to)h(shell)g(functions;)f(otherwise)h(the)g(names)630
+5340 y(refer)36 b(to)i(shell)e(v)-5 b(ariables.)60 b(The)36
+b(`)p Fs(-n)p Ft(')h(option)g(means)f(to)h(no)g(longer)g(mark)f(eac)m
+(h)i Fq(name)p eop end
 %%Page: 35 41
-35 40 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)28
-b(Builtin)g(Commands)2069 b(35)630 299 y(for)39 b(exp)s(ort.)65
-b(If)39 b(no)g Fq(names)j Ft(are)d(supplied,)f(or)h(if)f(the)h(`)p
-Fs(-p)p Ft(')g(option)f(is)g(giv)m(en,)j(a)e(list)f(of)630
-408 y(exp)s(orted)e(names)h(is)e(displa)m(y)m(ed.)58
-b(The)37 b(`)p Fs(-p)p Ft(')f(option)g(displa)m(ys)f(output)h(in)f(a)i
-(form)f(that)630 518 y(ma)m(y)c(b)s(e)e(reused)g(as)i(input.)41
-b(If)30 b(a)i(v)-5 b(ariable)29 b(name)j(is)e(follo)m(w)m(ed)g(b)m(y)h
-(=)p Fq(v)-5 b(alue)p Ft(,)31 b(the)g(v)-5 b(alue)31
-b(of)630 628 y(the)g(v)-5 b(ariable)29 b(is)g(set)i(to)g
-Fq(v)-5 b(alue)p Ft(.)630 761 y(The)29 b(return)e(status)j(is)e(zero)i
-(unless)d(an)i(in)m(v)-5 b(alid)26 b(option)j(is)f(supplied,)e(one)k
-(of)f(the)g(names)630 870 y(is)g(not)i(a)f(v)-5 b(alid)29
-b(shell)f(v)-5 b(ariable)29 b(name,)h(or)h(`)p Fs(-f)p
-Ft(')f(is)f(supplied)e(with)h(a)j(name)f(that)h(is)e(not)i(a)630
-980 y(shell)e(function.)150 1136 y Fs(getopts)870 1270
+TeXDict begin 35 40 bop 150 -116 a Ft(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(35)630 299 y(for)39
+b(exp)s(ort.)65 b(If)39 b(no)g Fq(names)j Ft(are)d(supplied,)h(or)f(if)
+g(the)g(`)p Fs(-p)p Ft(')g(option)g(is)g(giv)m(en,)j(a)d(list)h(of)630
+408 y(exp)s(orted)c(names)h(is)f(displa)m(y)m(ed.)60
+b(The)37 b(`)p Fs(-p)p Ft(')f(option)h(displa)m(ys)g(output)f(in)g(a)h
+(form)f(that)630 518 y(ma)m(y)c(b)s(e)e(reused)g(as)i(input.)42
+b(If)30 b(a)i(v)-5 b(ariable)31 b(name)h(is)f(follo)m(w)m(ed)h(b)m(y)f
+(=)p Fq(v)-5 b(alue)p Ft(,)32 b(the)f(v)-5 b(alue)32
+b(of)630 628 y(the)f(v)-5 b(ariable)31 b(is)f(set)h(to)g
+Fq(v)-5 b(alue)p Ft(.)630 761 y(The)29 b(return)e(status)j(is)f(zero)h
+(unless)e(an)h(in)m(v)-5 b(alid)29 b(option)h(is)f(supplied,)f(one)i
+(of)f(the)g(names)630 870 y(is)h(not)h(a)f(v)-5 b(alid)31
+b(shell)f(v)-5 b(ariable)31 b(name,)f(or)h(`)p Fs(-f)p
+Ft(')f(is)g(supplied)f(with)g(a)i(name)f(that)h(is)f(not)h(a)630
+980 y(shell)g(function.)150 1136 y Fs(getopts)870 1270
 y(getopts)46 b Fj(optstring)56 b(name)h Fs([)p Fj(args)11
-b Fs(])630 1403 y(getopts)28 b Ft(is)h(used)h(b)m(y)g(shell)e(scripts)h
-(to)h(parse)g(p)s(ositional)e(parameters.)41 b Fq(optstring)c
-Ft(con-)630 1512 y(tains)k(the)h(option)e(c)m(haracters)j(to)g(b)s(e)d
-(recognized;)48 b(if)41 b(a)g(c)m(haracter)j(is)c(follo)m(w)m(ed)h(b)m
-(y)h(a)630 1622 y(colon,)32 b(the)g(option)f(is)g(exp)s(ected)h(to)h
-(ha)m(v)m(e)g(an)e(argumen)m(t,)i(whic)m(h)e(should)e(b)s(e)i
-(separated)630 1731 y(from)37 b(it)g(b)m(y)g(white)g(space.)63
-b(The)37 b(colon)g(\(`)p Fs(:)p Ft('\))i(and)d(question)h(mark)g(\(`)p
-Fs(?)p Ft('\))i(ma)m(y)f(not)g(b)s(e)630 1841 y(used)g(as)g(option)g(c)
-m(haracters.)67 b(Eac)m(h)39 b(time)f(it)g(is)f(in)m(v)m(ok)m(ed,)k
-Fs(getopts)c Ft(places)h(the)h(next)630 1951 y(option)28
-b(in)f(the)i(shell)e(v)-5 b(ariable)28 b Fq(name)p Ft(,)h(initializing)
-c Fq(name)34 b Ft(if)27 b(it)h(do)s(es)h(not)g(exist,)g(and)f(the)630
-2060 y(index)k(of)h(the)h(next)f(argumen)m(t)h(to)g(b)s(e)e(pro)s
-(cessed)h(in)m(to)g(the)h(v)-5 b(ariable)32 b Fs(OPTIND)p
-Ft(.)48 b Fs(OPTIND)630 2170 y Ft(is)40 b(initialized)e(to)k(1)f(eac)m
-(h)h(time)f(the)g(shell)e(or)i(a)g(shell)e(script)h(is)g(in)m(v)m(ok)m
-(ed.)73 b(When)41 b(an)630 2279 y(option)35 b(requires)e(an)i(argumen)m
-(t,)i Fs(getopts)c Ft(places)i(that)h(argumen)m(t)g(in)m(to)f(the)g(v)
+b Fs(])630 1403 y(getopts)28 b Ft(is)i(used)g(b)m(y)g(shell)g(scripts)g
+(to)g(parse)g(p)s(ositional)h(parameters.)41 b Fq(optstring)d
+Ft(con-)630 1512 y(tains)k(the)g(option)f(c)m(haracters)i(to)g(b)s(e)d
+(recognized;)49 b(if)42 b(a)f(c)m(haracter)j(is)d(follo)m(w)m(ed)i(b)m
+(y)f(a)630 1622 y(colon,)33 b(the)f(option)g(is)g(exp)s(ected)g(to)h
+(ha)m(v)m(e)g(an)e(argumen)m(t,)i(whic)m(h)f(should)e(b)s(e)h
+(separated)630 1731 y(from)37 b(it)h(b)m(y)f(white)h(space.)63
+b(The)37 b(colon)h(\(`)p Fs(:)p Ft('\))h(and)d(question)i(mark)f(\(`)p
+Fs(?)p Ft('\))i(ma)m(y)f(not)g(b)s(e)630 1841 y(used)g(as)g(option)h(c)
+m(haracters.)67 b(Eac)m(h)39 b(time)g(it)g(is)f(in)m(v)m(ok)m(ed,)k
+Fs(getopts)37 b Ft(places)i(the)g(next)630 1951 y(option)29
+b(in)f(the)h(shell)g(v)-5 b(ariable)30 b Fq(name)p Ft(,)f(initializing)
+i Fq(name)j Ft(if)28 b(it)h(do)s(es)g(not)g(exist,)h(and)e(the)630
+2060 y(index)33 b(of)g(the)h(next)f(argumen)m(t)h(to)g(b)s(e)e(pro)s
+(cessed)h(in)m(to)h(the)g(v)-5 b(ariable)34 b Fs(OPTIND)p
+Ft(.)48 b Fs(OPTIND)630 2170 y Ft(is)41 b(initialized)i(to)f(1)f(eac)m
+(h)h(time)g(the)f(shell)g(or)g(a)g(shell)g(script)g(is)g(in)m(v)m(ok)m
+(ed.)74 b(When)41 b(an)630 2279 y(option)36 b(requires)e(an)h(argumen)m
+(t,)i Fs(getopts)c Ft(places)j(that)g(argumen)m(t)g(in)m(to)g(the)f(v)
 -5 b(ariable)630 2389 y Fs(OPTARG)p Ft(.)55 b(The)35
-b(shell)e(do)s(es)j(not)g(reset)g Fs(OPTIND)e Ft(automatically;)k(it)d
-(m)m(ust)g(b)s(e)g(man)m(ually)630 2498 y(reset)i(b)s(et)m(w)m(een)g(m)
-m(ultiple)e(calls)g(to)i Fs(getopts)e Ft(within)f(the)j(same)g(shell)d
-(in)m(v)m(o)s(cation)j(if)f(a)630 2608 y(new)30 b(set)h(of)f
-(parameters)h(is)e(to)j(b)s(e)d(used.)630 2741 y(When)41
-b(the)h(end)e(of)i(options)f(is)f(encoun)m(tered,)45
-b Fs(getopts)39 b Ft(exits)i(with)f(a)i(return)e(v)-5
-b(alue)630 2851 y(greater)32 b(than)e(zero.)41 b Fs(OPTIND)29
-b Ft(is)g(set)i(to)g(the)g(index)e(of)h(the)h(\014rst)f(non-option)f
-(argumen)m(t,)630 2960 y(and)h Fs(name)f Ft(is)g(set)i(to)g(`)p
-Fs(?)p Ft('.)630 3093 y Fs(getopts)c Ft(normally)h(parses)g(the)i(p)s
-(ositional)d(parameters,)j(but)e(if)h(more)g(argumen)m(ts)h(are)630
-3203 y(giv)m(en)g(in)f Fq(args)p Ft(,)i Fs(getopts)e
+b(shell)g(do)s(es)h(not)g(reset)g Fs(OPTIND)e Ft(automatically;)41
+b(it)36 b(m)m(ust)f(b)s(e)g(man)m(ually)630 2498 y(reset)i(b)s(et)m(w)m
+(een)g(m)m(ultiple)h(calls)f(to)g Fs(getopts)e Ft(within)h(the)h(same)g
+(shell)f(in)m(v)m(o)s(cation)j(if)e(a)630 2608 y(new)30
+b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.)630
+2741 y(When)41 b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k
+Fs(getopts)39 b Ft(exits)j(with)f(a)h(return)e(v)-5 b(alue)630
+2851 y(greater)32 b(than)e(zero.)41 b Fs(OPTIND)29 b
+Ft(is)h(set)h(to)g(the)g(index)f(of)g(the)h(\014rst)f(non-option)g
+(argumen)m(t,)630 2960 y(and)g Fs(name)f Ft(is)h(set)h(to)g(`)p
+Fs(?)p Ft('.)630 3093 y Fs(getopts)c Ft(normally)j(parses)e(the)i(p)s
+(ositional)g(parameters,)g(but)e(if)i(more)f(argumen)m(ts)h(are)630
+3203 y(giv)m(en)h(in)f Fq(args)p Ft(,)h Fs(getopts)e
 Ft(parses)h(those)h(instead.)630 3336 y Fs(getopts)h
-Ft(can)h(rep)s(ort)g(errors)g(in)g(t)m(w)m(o)i(w)m(a)m(ys.)51
-b(If)33 b(the)h(\014rst)e(c)m(haracter)k(of)d Fq(optstring)41
-b Ft(is)33 b(a)630 3446 y(colon,)i Fq(silen)m(t)h Ft(error)d(rep)s
-(orting)g(is)h(used.)51 b(In)33 b(normal)h(op)s(eration)f(diagnostic)h
-(messages)630 3555 y(are)c(prin)m(ted)d(when)h(in)m(v)-5
-b(alid)27 b(options)i(or)g(missing)e(option)h(argumen)m(ts)i(are)f
-(encoun)m(tered.)630 3665 y(If)34 b(the)g(v)-5 b(ariable)33
-b Fs(OPTERR)f Ft(is)h(set)i(to)f(0,)i(no)e(error)g(messages)h(will)c(b)
-s(e)i(displa)m(y)m(ed,)h(ev)m(en)h(if)630 3774 y(the)c(\014rst)e(c)m
-(haracter)j(of)f Fs(optstring)d Ft(is)h(not)i(a)f(colon.)630
-3907 y(If)39 b(an)h(in)m(v)-5 b(alid)38 b(option)h(is)g(seen,)j
-Fs(getopts)c Ft(places)i(`)p Fs(?)p Ft(')g(in)m(to)g
-Fq(name)45 b Ft(and,)d(if)d(not)h(silen)m(t,)630 4017
-y(prin)m(ts)e(an)i(error)f(message)h(and)f(unsets)g Fs(OPTARG)p
-Ft(.)67 b(If)39 b Fs(getopts)f Ft(is)h(silen)m(t,)i(the)e(option)630
-4127 y(c)m(haracter)32 b(found)d(is)g(placed)h(in)f Fs(OPTARG)g
-Ft(and)h(no)g(diagnostic)g(message)h(is)f(prin)m(ted.)630
-4260 y(If)d(a)g(required)e(argumen)m(t)j(is)e(not)h(found,)g(and)f
-Fs(getopts)f Ft(is)h(not)i(silen)m(t,)f(a)g(question)f(mark)630
-4369 y(\(`)p Fs(?)p Ft('\))i(is)f(placed)g(in)f Fq(name)p
-Ft(,)i Fs(OPTARG)e Ft(is)g(unset,)i(and)f(a)g(diagnostic)g(message)i
-(is)d(prin)m(ted.)38 b(If)630 4479 y Fs(getopts)28 b
-Ft(is)g(silen)m(t,)h(then)g(a)h(colon)g(\(`)p Fs(:)p
-Ft('\))g(is)f(placed)g(in)f Fq(name)35 b Ft(and)29 b
-Fs(OPTARG)f Ft(is)g(set)i(to)h(the)630 4589 y(option)f(c)m(haracter)i
+Ft(can)h(rep)s(ort)g(errors)g(in)h(t)m(w)m(o)h(w)m(a)m(ys.)51
+b(If)33 b(the)h(\014rst)e(c)m(haracter)k(of)d Fq(optstring)42
+b Ft(is)34 b(a)630 3446 y(colon,)i Fq(silen)m(t)i Ft(error)33
+b(rep)s(orting)h(is)h(used.)51 b(In)33 b(normal)i(op)s(eration)f
+(diagnostic)i(messages)630 3555 y(are)30 b(prin)m(ted)e(when)g(in)m(v)
+-5 b(alid)30 b(options)g(or)f(missing)g(option)g(argumen)m(ts)h(are)f
+(encoun)m(tered.)630 3665 y(If)34 b(the)g(v)-5 b(ariable)35
+b Fs(OPTERR)d Ft(is)i(set)h(to)f(0,)i(no)e(error)g(messages)h(will)f(b)
+s(e)f(displa)m(y)m(ed,)j(ev)m(en)f(if)630 3774 y(the)c(\014rst)e(c)m
+(haracter)j(of)f Fs(optstring)d Ft(is)i(not)h(a)f(colon.)630
+3907 y(If)39 b(an)h(in)m(v)-5 b(alid)41 b(option)f(is)g(seen,)i
+Fs(getopts)c Ft(places)j(`)p Fs(?)p Ft(')f(in)m(to)h
+Fq(name)k Ft(and,)d(if)e(not)g(silen)m(t,)630 4017 y(prin)m(ts)f(an)h
+(error)f(message)h(and)f(unsets)g Fs(OPTARG)p Ft(.)67
+b(If)39 b Fs(getopts)f Ft(is)i(silen)m(t,)j(the)c(option)630
+4127 y(c)m(haracter)32 b(found)d(is)h(placed)h(in)f Fs(OPTARG)f
+Ft(and)h(no)g(diagnostic)i(message)f(is)g(prin)m(ted.)630
+4260 y(If)c(a)g(required)f(argumen)m(t)i(is)f(not)g(found,)g(and)f
+Fs(getopts)f Ft(is)i(not)h(silen)m(t,)h(a)e(question)g(mark)630
+4369 y(\(`)p Fs(?)p Ft('\))h(is)g(placed)g(in)f Fq(name)p
+Ft(,)h Fs(OPTARG)e Ft(is)h(unset,)h(and)f(a)g(diagnostic)i(message)g
+(is)e(prin)m(ted.)39 b(If)630 4479 y Fs(getopts)28 b
+Ft(is)h(silen)m(t,)i(then)e(a)h(colon)h(\(`)p Fs(:)p
+Ft('\))f(is)g(placed)g(in)f Fq(name)35 b Ft(and)29 b
+Fs(OPTARG)f Ft(is)h(set)h(to)h(the)630 4589 y(option)g(c)m(haracter)h
 (found.)150 4745 y Fs(hash)870 4878 y(hash)47 b([-'r])f([-p)h
 Fj(filename)11 b Fs(])45 b([-dt])h([)p Fj(name)11 b Fs(])630
-5011 y Ft(Remem)m(b)s(er)36 b(the)g(full)e(pathnames)i(of)g(commands)g
-(sp)s(eci\014ed)f(as)h Fq(name)41 b Ft(argumen)m(ts,)e(so)630
+5011 y Ft(Remem)m(b)s(er)36 b(the)g(full)g(pathnames)g(of)g(commands)g
+(sp)s(eci\014ed)g(as)g Fq(name)41 b Ft(argumen)m(ts,)e(so)630
 5121 y(they)34 b(need)h(not)f(b)s(e)g(searc)m(hed)h(for)f(on)g
-(subsequen)m(t)f(in)m(v)m(o)s(cations.)53 b(The)34 b(commands)g(are)630
-5230 y(found)39 b(b)m(y)i(searc)m(hing)f(through)g(the)h(directories)e
-(listed)g(in)g Fs($PATH)p Ft(.)70 b(The)40 b(`)p Fs(-p)p
-Ft(')g(option)630 5340 y(inhibits)35 b(the)k(path)g(searc)m(h,)j(and)c
-Fq(\014lename)43 b Ft(is)38 b(used)g(as)i(the)f(lo)s(cation)f(of)h
-Fq(name)p Ft(.)66 b(The)p eop
+(subsequen)m(t)f(in)m(v)m(o)s(cations.)55 b(The)34 b(commands)g(are)630
+5230 y(found)39 b(b)m(y)i(searc)m(hing)g(through)f(the)h(directories)g
+(listed)g(in)f Fs($PATH)p Ft(.)70 b(The)40 b(`)p Fs(-p)p
+Ft(')g(option)630 5340 y(inhibits)e(the)h(path)g(searc)m(h,)j(and)c
+Fq(\014lename)44 b Ft(is)39 b(used)f(as)i(the)f(lo)s(cation)h(of)f
+Fq(name)p Ft(.)66 b(The)p eop end
 %%Page: 36 42
-36 41 bop 150 -116 a Ft(36)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y(`)p Fs(-r)p Ft(')d(option)f(causes)h(the)g(shell)f(to)h(forget)h
-(all)e(remem)m(b)s(ered)g(lo)s(cations.)39 b(The)28 b(`)p
-Fs(-d)p Ft(')f(option)630 408 y(causes)38 b(the)g(shell)e(to)i(forget)g
-(the)g(remem)m(b)s(ered)f(lo)s(cation)g(of)h(eac)m(h)h
-Fq(name)p Ft(.)62 b(If)37 b(the)h(`)p Fs(-t)p Ft(')630
-518 y(option)21 b(is)g(supplied,)f(the)i(full)d(pathname)j(to)g(whic)m
-(h)f(eac)m(h)h Fq(name)27 b Ft(corresp)s(onds)20 b(is)h(prin)m(ted.)630
-628 y(If)33 b(m)m(ultiple)e Fq(name)38 b Ft(argumen)m(ts)c(are)f
-(supplied)d(with)i(`)p Fs(-t)p Ft(')h(the)h Fq(name)k
-Ft(is)33 b(prin)m(ted)e(b)s(efore)630 737 y(the)i(hashed)f(full)e
-(pathname.)48 b(The)32 b(`)p Fs(-l)p Ft(')h(option)f(causes)h(output)f
-(to)i(b)s(e)e(displa)m(y)m(ed)f(in)h(a)630 847 y(format)g(that)g(ma)m
-(y)g(b)s(e)f(reused)g(as)g(input.)42 b(If)31 b(no)h(argumen)m(ts)g(are)
-f(giv)m(en,)i(or)e(if)f(only)h(`)p Fs(-l)p Ft(')630 956
-y(is)j(supplied,)e(information)h(ab)s(out)i(remem)m(b)s(ered)f
-(commands)g(is)g(prin)m(ted.)52 b(The)34 b(return)630
-1066 y(status)d(is)e(zero)i(unless)e(a)i Fq(name)k Ft(is)30
-b(not)g(found)f(or)i(an)f(in)m(v)-5 b(alid)28 b(option)i(is)f
-(supplied.)150 1217 y Fs(pwd)870 1347 y(pwd)47 b([-LP])630
-1477 y Ft(Prin)m(t)23 b(the)i(absolute)f(pathname)h(of)f(the)h(curren)m
-(t)f(w)m(orking)g(directory)-8 b(.)39 b(If)23 b(the)i(`)p
-Fs(-P)p Ft(')f(option)630 1587 y(is)35 b(supplied,)e(the)j(pathname)f
-(prin)m(ted)f(will)f(not)j(con)m(tain)g(sym)m(b)s(olic)e(links.)53
-b(If)35 b(the)h(`)p Fs(-L)p Ft(')630 1696 y(option)43
-b(is)g(supplied,)h(the)g(pathname)f(prin)m(ted)g(ma)m(y)h(con)m(tain)g
-(sym)m(b)s(olic)e(links.)78 b(The)630 1806 y(return)26
-b(status)h(is)g(zero)h(unless)d(an)i(error)g(is)f(encoun)m(tered)h
-(while)f(determining)f(the)i(name)630 1915 y(of)k(the)f(curren)m(t)g
-(directory)g(or)g(an)h(in)m(v)-5 b(alid)28 b(option)i(is)f(supplied.)
-150 2066 y Fs(readonly)870 2196 y(readonly)46 b([-apf])g([)p
-Fj(name)11 b Fs([=)p Fj(value)g Fs(]])43 b(...)630 2326
-y Ft(Mark)24 b(eac)m(h)h Fq(name)k Ft(as)24 b(readonly)-8
-b(.)38 b(The)24 b(v)-5 b(alues)23 b(of)h(these)g(names)g(ma)m(y)g(not)g
-(b)s(e)g(c)m(hanged)g(b)m(y)630 2436 y(subsequen)m(t)e(assignmen)m(t.)
-38 b(If)22 b(the)h(`)p Fs(-f)p Ft(')f(option)h(is)e(supplied,)g(eac)m
-(h)j Fq(name)k Ft(refers)22 b(to)i(a)f(shell)630 2545
-y(function.)51 b(The)34 b(`)p Fs(-a)p Ft(')g(option)g(means)h(eac)m(h)g
+TeXDict begin 36 41 bop 150 -116 a Ft(36)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(`)p Fs(-r)p Ft(')d(option)g(causes)g
+(the)g(shell)h(to)f(forget)h(all)g(remem)m(b)s(ered)e(lo)s(cations.)41
+b(The)28 b(`)p Fs(-d)p Ft(')f(option)630 408 y(causes)38
+b(the)g(shell)g(to)g(forget)g(the)g(remem)m(b)s(ered)f(lo)s(cation)i
+(of)f(eac)m(h)h Fq(name)p Ft(.)62 b(If)37 b(the)h(`)p
+Fs(-t)p Ft(')630 518 y(option)22 b(is)g(supplied,)g(the)g(full)f
+(pathname)h(to)g(whic)m(h)g(eac)m(h)g Fq(name)27 b Ft(corresp)s(onds)20
+b(is)i(prin)m(ted.)630 628 y(If)33 b(m)m(ultiple)h Fq(name)k
+Ft(argumen)m(ts)c(are)f(supplied)f(with)h(`)p Fs(-t)p
+Ft(')g(the)h Fq(name)k Ft(is)c(prin)m(ted)e(b)s(efore)630
+737 y(the)h(hashed)f(full)g(pathname.)48 b(The)32 b(`)p
+Fs(-l)p Ft(')h(option)g(causes)g(output)f(to)i(b)s(e)e(displa)m(y)m(ed)
+h(in)g(a)630 847 y(format)f(that)g(ma)m(y)g(b)s(e)f(reused)g(as)g
+(input.)43 b(If)31 b(no)h(argumen)m(ts)g(are)f(giv)m(en,)j(or)d(if)g
+(only)h(`)p Fs(-l)p Ft(')630 956 y(is)j(supplied,)f(information)h(ab)s
+(out)g(remem)m(b)s(ered)f(commands)g(is)h(prin)m(ted.)53
+b(The)34 b(return)630 1066 y(status)d(is)f(zero)h(unless)f(a)h
+Fq(name)k Ft(is)c(not)f(found)f(or)i(an)f(in)m(v)-5 b(alid)31
+b(option)g(is)f(supplied.)150 1217 y Fs(pwd)870 1347
+y(pwd)47 b([-LP])630 1477 y Ft(Prin)m(t)24 b(the)h(absolute)g(pathname)
+g(of)f(the)h(curren)m(t)f(w)m(orking)h(directory)-8 b(.)40
+b(If)23 b(the)i(`)p Fs(-P)p Ft(')f(option)630 1587 y(is)36
+b(supplied,)f(the)h(pathname)f(prin)m(ted)g(will)h(not)g(con)m(tain)h
+(sym)m(b)s(olic)f(links.)55 b(If)35 b(the)h(`)p Fs(-L)p
+Ft(')630 1696 y(option)44 b(is)g(supplied,)i(the)e(pathname)f(prin)m
+(ted)h(ma)m(y)g(con)m(tain)h(sym)m(b)s(olic)f(links.)80
+b(The)630 1806 y(return)26 b(status)h(is)h(zero)g(unless)e(an)h(error)g
+(is)g(encoun)m(tered)g(while)h(determining)f(the)g(name)630
+1915 y(of)k(the)f(curren)m(t)g(directory)h(or)f(an)h(in)m(v)-5
+b(alid)31 b(option)g(is)f(supplied.)150 2066 y Fs(readonly)870
+2196 y(readonly)46 b([-apf])g([)p Fj(name)11 b Fs([=)p
+Fj(value)g Fs(]])43 b(...)630 2326 y Ft(Mark)24 b(eac)m(h)h
+Fq(name)k Ft(as)24 b(readonly)-8 b(.)39 b(The)24 b(v)-5
+b(alues)24 b(of)g(these)g(names)g(ma)m(y)g(not)g(b)s(e)g(c)m(hanged)g
+(b)m(y)630 2436 y(subsequen)m(t)e(assignmen)m(t.)39 b(If)22
+b(the)h(`)p Fs(-f)p Ft(')f(option)i(is)e(supplied,)h(eac)m(h)h
+Fq(name)k Ft(refers)22 b(to)i(a)f(shell)630 2545 y(function.)52
+b(The)34 b(`)p Fs(-a)p Ft(')g(option)h(means)g(eac)m(h)g
 Fq(name)40 b Ft(refers)33 b(to)j(an)e(arra)m(y)h(v)-5
-b(ariable.)51 b(If)34 b(no)630 2655 y Fq(name)d Ft(argumen)m(ts)26
-b(are)g(giv)m(en,)h(or)e(if)g(the)h(`)p Fs(-p)p Ft(')f(option)g(is)g
-(supplied,)e(a)j(list)f(of)g(all)g(readonly)630 2765
-y(names)37 b(is)f(prin)m(ted.)58 b(The)37 b(`)p Fs(-p)p
-Ft(')f(option)h(causes)g(output)g(to)g(b)s(e)f(displa)m(y)m(ed)g(in)f
-(a)j(format)630 2874 y(that)25 b(ma)m(y)g(b)s(e)f(reused)g(as)h(input.)
-37 b(If)24 b(a)h(v)-5 b(ariable)23 b(name)i(is)f(follo)m(w)m(ed)g(b)m
-(y)g(=)p Fq(v)-5 b(alue)p Ft(,)26 b(the)e(v)-5 b(alue)630
-2984 y(of)27 b(the)g(v)-5 b(ariable)25 b(is)h(set)h(to)g
-Fq(v)-5 b(alue)p Ft(.)39 b(The)26 b(return)g(status)h(is)e(zero)j
-(unless)d(an)h(in)m(v)-5 b(alid)24 b(option)630 3093
-y(is)29 b(supplied,)e(one)j(of)g(the)g Fq(name)35 b Ft(argumen)m(ts)30
-b(is)f(not)h(a)g(v)-5 b(alid)29 b(shell)f(v)-5 b(ariable)28
-b(or)i(function)630 3203 y(name,)h(or)f(the)h(`)p Fs(-f)p
-Ft(')f(option)g(is)f(supplied)e(with)i(a)i(name)f(that)h(is)f(not)g(a)h
-(shell)e(function.)150 3354 y Fs(return)870 3484 y(return)46
-b([)p Fj(n)11 b Fs(])630 3614 y Ft(Cause)30 b(a)g(shell)e(function)h
-(to)i(exit)e(with)g(the)h(return)f(v)-5 b(alue)30 b Fq(n)p
-Ft(.)40 b(If)29 b Fq(n)h Ft(is)f(not)h(supplied,)d(the)630
-3724 y(return)35 b(v)-5 b(alue)36 b(is)f(the)h(exit)g(status)g(of)h
-(the)f(last)g(command)g(executed)h(in)e(the)h(function.)630
-3833 y(This)20 b(ma)m(y)j(also)f(b)s(e)f(used)g(to)i(terminate)f
-(execution)g(of)g(a)h(script)e(b)s(eing)f(executed)j(with)e(the)630
-3943 y Fs(.)27 b Ft(\(or)g Fs(source)p Ft(\))f(builtin,)f(returning)g
-(either)h Fq(n)h Ft(or)g(the)g(exit)g(status)h(of)f(the)g(last)g
-(command)630 4052 y(executed)46 b(within)d(the)i(script)f(as)i(the)f
-(exit)g(status)h(of)f(the)h(script.)84 b(An)m(y)45 b(command)630
-4162 y(asso)s(ciated)29 b(with)e(the)h Fs(RETURN)f Ft(trap)h(is)f
-(executed)i(b)s(efore)f(execution)g(resumes)g(after)h(the)630
-4271 y(function)37 b(or)g(script.)62 b(The)38 b(return)e(status)i(is)f
-(non-zero)i(if)d Fs(return)h Ft(is)f(used)h(outside)h(a)630
-4381 y(function)29 b(and)h(not)g(during)f(the)h(execution)h(of)f(a)h
-(script)e(b)m(y)i Fs(.)f Ft(or)g Fs(source)p Ft(.)150
+b(ariable.)53 b(If)34 b(no)630 2655 y Fq(name)d Ft(argumen)m(ts)26
+b(are)g(giv)m(en,)i(or)d(if)h(the)g(`)p Fs(-p)p Ft(')f(option)h(is)g
+(supplied,)f(a)h(list)h(of)e(all)i(readonly)630 2765
+y(names)37 b(is)g(prin)m(ted.)59 b(The)37 b(`)p Fs(-p)p
+Ft(')f(option)i(causes)f(output)g(to)g(b)s(e)f(displa)m(y)m(ed)i(in)e
+(a)i(format)630 2874 y(that)25 b(ma)m(y)g(b)s(e)f(reused)g(as)h(input.)
+38 b(If)24 b(a)h(v)-5 b(ariable)25 b(name)g(is)g(follo)m(w)m(ed)h(b)m
+(y)e(=)p Fq(v)-5 b(alue)p Ft(,)27 b(the)d(v)-5 b(alue)630
+2984 y(of)27 b(the)g(v)-5 b(ariable)27 b(is)g(set)g(to)g
+Fq(v)-5 b(alue)p Ft(.)40 b(The)26 b(return)g(status)h(is)f(zero)i
+(unless)e(an)g(in)m(v)-5 b(alid)27 b(option)630 3093
+y(is)j(supplied,)f(one)h(of)g(the)g Fq(name)35 b Ft(argumen)m(ts)30
+b(is)g(not)g(a)g(v)-5 b(alid)31 b(shell)f(v)-5 b(ariable)30
+b(or)g(function)630 3203 y(name,)h(or)f(the)h(`)p Fs(-f)p
+Ft(')f(option)h(is)f(supplied)f(with)h(a)h(name)f(that)h(is)g(not)f(a)h
+(shell)g(function.)150 3354 y Fs(return)870 3484 y(return)46
+b([)p Fj(n)11 b Fs(])630 3614 y Ft(Cause)30 b(a)g(shell)g(function)g
+(to)h(exit)f(with)g(the)g(return)f(v)-5 b(alue)31 b Fq(n)p
+Ft(.)40 b(If)29 b Fq(n)h Ft(is)g(not)g(supplied,)f(the)630
+3724 y(return)35 b(v)-5 b(alue)37 b(is)f(the)g(exit)h(status)f(of)h
+(the)f(last)h(command)f(executed)h(in)f(the)g(function.)630
+3833 y(This)21 b(ma)m(y)i(also)g(b)s(e)e(used)g(to)i(terminate)g
+(execution)g(of)f(a)h(script)f(b)s(eing)f(executed)i(with)f(the)630
+3943 y Fs(.)27 b Ft(\(or)g Fs(source)p Ft(\))f(builtin,)i(returning)e
+(either)h Fq(n)g Ft(or)g(the)g(exit)h(status)g(of)f(the)g(last)h
+(command)630 4052 y(executed)46 b(within)f(the)g(script)g(as)h(the)f
+(exit)h(status)g(of)f(the)h(script.)85 b(An)m(y)45 b(command)630
+4162 y(asso)s(ciated)30 b(with)e(the)g Fs(RETURN)f Ft(trap)h(is)g
+(executed)h(b)s(efore)f(execution)h(resumes)f(after)h(the)630
+4271 y(function)38 b(or)f(script.)63 b(The)38 b(return)e(status)i(is)g
+(non-zero)h(if)e Fs(return)g Ft(is)g(used)g(outside)i(a)630
+4381 y(function)30 b(and)g(not)g(during)g(the)g(execution)i(of)e(a)h
+(script)f(b)m(y)h Fs(.)f Ft(or)g Fs(source)p Ft(.)150
 4532 y Fs(shift)870 4662 y(shift)46 b([)p Fj(n)11 b Fs(])630
-4792 y Ft(Shift)40 b(the)h(p)s(ositional)e(parameters)j(to)g(the)f
-(left)g(b)m(y)h Fq(n)p Ft(.)73 b(The)40 b(p)s(ositional)g(parameters)
+4792 y Ft(Shift)41 b(the)g(p)s(ositional)h(parameters)g(to)g(the)f
+(left)h(b)m(y)g Fq(n)p Ft(.)73 b(The)40 b(p)s(ositional)j(parameters)
 630 4902 y(from)27 b Fq(n)p Fs(+)p Ft(1)33 b(.)22 b(.)g(.)39
 b Fs($#)27 b Ft(are)g(renamed)g(to)i Fs($1)j Ft(.)22
 b(.)h(.)38 b Fs($#)p Ft(-)p Fq(n)p Fs(+)p Ft(1.)h(P)m(arameters)29
 b(represen)m(ted)e(b)m(y)h(the)630 5011 y(n)m(um)m(b)s(ers)34
 b Fs($#)h Ft(to)h Fq(n)p Fs(+)p Ft(1)f(are)g(unset.)55
-b Fq(n)35 b Ft(m)m(ust)g(b)s(e)g(a)h(non-negativ)m(e)g(n)m(um)m(b)s(er)
-e(less)h(than)g(or)630 5121 y(equal)d(to)i Fs($#)p Ft(.)47
-b(If)33 b Fq(n)f Ft(is)g(zero)h(or)g(greater)h(than)f
-Fs($#)p Ft(,)g(the)g(p)s(ositional)d(parameters)j(are)h(not)630
-5230 y(c)m(hanged.)48 b(If)32 b Fq(n)g Ft(is)g(not)g(supplied,)f(it)h
-(is)f(assumed)h(to)h(b)s(e)f(1.)48 b(The)32 b(return)g(status)h(is)e
-(zero)630 5340 y(unless)e Fq(n)g Ft(is)h(greater)h(than)g
-Fs($#)e Ft(or)i(less)e(than)i(zero,)g(non-zero)g(otherwise.)p
-eop
+b Fq(n)35 b Ft(m)m(ust)g(b)s(e)g(a)h(non-negativ)m(e)h(n)m(um)m(b)s(er)
+d(less)i(than)f(or)630 5121 y(equal)e(to)h Fs($#)p Ft(.)47
+b(If)33 b Fq(n)f Ft(is)h(zero)g(or)g(greater)h(than)f
+Fs($#)p Ft(,)g(the)g(p)s(ositional)g(parameters)g(are)h(not)630
+5230 y(c)m(hanged.)48 b(If)32 b Fq(n)g Ft(is)h(not)f(supplied,)h(it)g
+(is)f(assumed)g(to)h(b)s(e)f(1.)48 b(The)32 b(return)g(status)h(is)f
+(zero)630 5340 y(unless)e Fq(n)f Ft(is)i(greater)g(than)g
+Fs($#)e Ft(or)i(less)f(than)h(zero,)g(non-zero)g(otherwise.)p
+eop end
 %%Page: 37 43
-37 42 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)28
-b(Builtin)g(Commands)2069 b(37)150 299 y Fs(test)150
-408 y([)432 b Ft(Ev)-5 b(aluate)31 b(a)g(conditional)e(expression)g
+TeXDict begin 37 42 bop 150 -116 a Ft(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(37)150 299 y Fs(test)150
+408 y([)432 b Ft(Ev)-5 b(aluate)32 b(a)f(conditional)h(expression)e
 Fq(expr)p Ft(.)41 b(Eac)m(h)31 b(op)s(erator)g(and)f(op)s(erand)g(m)m
 (ust)h(b)s(e)f(a)630 518 y(separate)d(argumen)m(t.)40
-b(Expressions)24 b(are)j(comp)s(osed)e(of)i(the)f(primaries)e(describ)s
-(ed)g(b)s(elo)m(w)630 628 y(in)29 b(Section)h(6.4)i([Bash)e
-(Conditional)e(Expressions],)h(page)j(69.)630 762 y(When)e(the)h
-Fs([)f Ft(form)g(is)f(used,)h(the)g(last)h(argumen)m(t)f(to)i(the)e
+b(Expressions)25 b(are)i(comp)s(osed)e(of)i(the)f(primaries)g(describ)s
+(ed)f(b)s(elo)m(w)630 628 y(in)30 b(Section)h(6.4)h([Bash)e
+(Conditional)h(Expressions],)f(page)i(69.)630 762 y(When)e(the)h
+Fs([)f Ft(form)g(is)g(used,)g(the)g(last)i(argumen)m(t)e(to)i(the)e
 (command)g(m)m(ust)h(b)s(e)e(a)i Fs(])p Ft(.)630 897
-y(Expressions)22 b(ma)m(y)i(b)s(e)e(com)m(bined)h(using)f(the)i(follo)m
-(wing)e(op)s(erators,)j(listed)d(in)g(decreasing)630
+y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h(follo)m
+(wing)h(op)s(erators,)g(listed)f(in)f(decreasing)630
 1006 y(order)30 b(of)g(precedence.)630 1166 y Fs(!)g
-Fj(expr)210 b Ft(T)-8 b(rue)30 b(if)f Fq(expr)37 b Ft(is)29
-b(false.)630 1325 y Fs(\()h Fj(expr)40 b Fs(\))122 b
-Ft(Returns)23 b(the)i(v)-5 b(alue)24 b(of)g Fq(expr)p
-Ft(.)38 b(This)23 b(ma)m(y)i(b)s(e)e(used)h(to)h(o)m(v)m(erride)f(the)h
+Fj(expr)210 b Ft(T)-8 b(rue)30 b(if)g Fq(expr)37 b Ft(is)30
+b(false.)630 1325 y Fs(\()g Fj(expr)40 b Fs(\))122 b
+Ft(Returns)23 b(the)i(v)-5 b(alue)25 b(of)f Fq(expr)p
+Ft(.)38 b(This)24 b(ma)m(y)h(b)s(e)e(used)h(to)h(o)m(v)m(erride)g(the)g
 (normal)1110 1435 y(precedence)31 b(of)f(op)s(erators.)630
 1594 y Fj(expr1)39 b Fs(-a)30 b Fj(expr2)1110 1704 y
-Ft(T)-8 b(rue)30 b(if)f(b)s(oth)h Fq(expr1)37 b Ft(and)30
+Ft(T)-8 b(rue)30 b(if)g(b)s(oth)g Fq(expr1)37 b Ft(and)30
 b Fq(expr2)38 b Ft(are)30 b(true.)630 1863 y Fj(expr1)39
-b Fs(-o)30 b Fj(expr2)1110 1973 y Ft(T)-8 b(rue)30 b(if)f(either)h
-Fq(expr1)38 b Ft(or)30 b Fq(expr2)37 b Ft(is)30 b(true.)630
-2132 y(The)37 b Fs(test)f Ft(and)g Fs([)h Ft(builtins)d(ev)-5
-b(aluate)38 b(conditional)d(expressions)h(using)g(a)h(set)h(of)f(rules)
+b Fs(-o)30 b Fj(expr2)1110 1973 y Ft(T)-8 b(rue)30 b(if)g(either)h
+Fq(expr1)38 b Ft(or)30 b Fq(expr2)37 b Ft(is)31 b(true.)630
+2132 y(The)37 b Fs(test)f Ft(and)g Fs([)h Ft(builtins)g(ev)-5
+b(aluate)39 b(conditional)f(expressions)f(using)g(a)g(set)h(of)f(rules)
 630 2242 y(based)30 b(on)g(the)h(n)m(um)m(b)s(er)e(of)h(argumen)m(ts.)
-630 2401 y(0)h(argumen)m(ts)1110 2511 y(The)f(expression)f(is)g(false.)
-630 2670 y(1)i(argumen)m(t)1110 2780 y(The)f(expression)f(is)g(true)i
-(if)e(and)h(only)f(if)h(the)g(argumen)m(t)h(is)e(not)i(n)m(ull.)630
+630 2401 y(0)h(argumen)m(ts)1110 2511 y(The)f(expression)g(is)g(false.)
+630 2670 y(1)h(argumen)m(t)1110 2780 y(The)f(expression)g(is)g(true)h
+(if)f(and)g(only)g(if)h(the)f(argumen)m(t)h(is)f(not)h(n)m(ull.)630
 2939 y(2)g(argumen)m(ts)1110 3049 y(If)f(the)h(\014rst)f(argumen)m(t)h
-(is)f(`)p Fs(!)p Ft(',)h(the)g(expression)f(is)g(true)g(if)g(and)g
-(only)g(if)g(the)1110 3158 y(second)k(argumen)m(t)f(is)g(n)m(ull.)48
-b(If)33 b(the)h(\014rst)e(argumen)m(t)i(is)f(one)h(of)f(the)h(unary)
-1110 3268 y(conditional)39 b(op)s(erators)i(\(see)g(Section)g(6.4)g
-([Bash)g(Conditional)d(Expres-)1110 3377 y(sions],)33
-b(page)g(69\),)i(the)e(expression)e(is)h(true)h(if)f(the)h(unary)e
-(test)j(is)e(true.)47 b(If)1110 3487 y(the)33 b(\014rst)g(argumen)m(t)h
-(is)e(not)h(a)h(v)-5 b(alid)32 b(unary)g(op)s(erator,)i(the)g
-(expression)e(is)1110 3597 y(false.)630 3756 y(3)f(argumen)m(ts)1110
-3866 y(If)k(the)g(second)g(argumen)m(t)g(is)f(one)i(of)f(the)g(binary)e
-(conditional)h(op)s(erators)1110 3975 y(\(see)23 b(Section)f(6.4)g
-([Bash)h(Conditional)c(Expressions],)j(page)h(69\),)i(the)d(result)1110
-4085 y(of)44 b(the)h(expression)e(is)g(the)h(result)f(of)i(the)f
-(binary)f(test)i(using)d(the)j(\014rst)1110 4194 y(and)33
-b(third)f(argumen)m(ts)i(as)g(op)s(erands.)50 b(If)33
-b(the)h(\014rst)g(argumen)m(t)g(is)f(`)p Fs(!)p Ft(',)i(the)1110
-4304 y(v)-5 b(alue)24 b(is)g(the)h(negation)g(of)g(the)g(t)m(w)m
-(o-argumen)m(t)i(test)f(using)d(the)i(second)g(and)1110
-4413 y(third)31 b(argumen)m(ts.)47 b(If)33 b(the)f(\014rst)g(argumen)m
-(t)h(is)f(exactly)h(`)p Fs(\()p Ft(')g(and)f(the)h(third)1110
-4523 y(argumen)m(t)h(is)f(exactly)h(`)p Fs(\))p Ft(',)h(the)f(result)e
-(is)h(the)h(one-argumen)m(t)g(test)h(of)f(the)1110 4633
-y(second)d(argumen)m(t.)45 b(Otherwise,)30 b(the)i(expression)e(is)g
-(false.)43 b(The)31 b(`)p Fs(-a)p Ft(')h(and)1110 4742
-y(`)p Fs(-o)p Ft(')e(op)s(erators)h(are)g(considered)e(binary)f(op)s
-(erators)j(in)e(this)g(case.)630 4902 y(4)i(argumen)m(ts)1110
-5011 y(If)h(the)i(\014rst)e(argumen)m(t)h(is)f(`)p Fs(!)p
-Ft(',)i(the)f(result)f(is)g(the)h(negation)g(of)g(the)g(three-)1110
-5121 y(argumen)m(t)h(expression)e(comp)s(osed)i(of)f(the)h(remaining)e
-(argumen)m(ts.)50 b(Oth-)1110 5230 y(erwise,)33 b(the)g(expression)f
-(is)g(parsed)h(and)f(ev)-5 b(aluated)33 b(according)h(to)f(prece-)1110
-5340 y(dence)e(using)d(the)j(rules)e(listed)g(ab)s(o)m(v)m(e.)p
-eop
+(is)g(`)p Fs(!)p Ft(',)g(the)g(expression)g(is)g(true)f(if)h(and)f
+(only)h(if)g(the)1110 3158 y(second)j(argumen)m(t)f(is)h(n)m(ull.)50
+b(If)33 b(the)h(\014rst)e(argumen)m(t)i(is)g(one)g(of)f(the)h(unary)
+1110 3268 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f
+([Bash)g(Conditional)g(Expres-)1110 3377 y(sions],)34
+b(page)f(69\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e
+(test)j(is)f(true.)47 b(If)1110 3487 y(the)33 b(\014rst)g(argumen)m(t)h
+(is)f(not)g(a)h(v)-5 b(alid)34 b(unary)e(op)s(erator,)i(the)g
+(expression)f(is)1110 3597 y(false.)630 3756 y(3)e(argumen)m(ts)1110
+3866 y(If)k(the)g(second)g(argumen)m(t)g(is)g(one)h(of)f(the)g(binary)f
+(conditional)j(op)s(erators)1110 3975 y(\(see)23 b(Section)g(6.4)f
+([Bash)h(Conditional)f(Expressions],)h(page)g(69\),)i(the)d(result)1110
+4085 y(of)44 b(the)h(expression)f(is)g(the)g(result)g(of)h(the)f
+(binary)g(test)h(using)e(the)i(\014rst)1110 4194 y(and)33
+b(third)g(argumen)m(ts)h(as)g(op)s(erands.)50 b(If)33
+b(the)h(\014rst)g(argumen)m(t)g(is)g(`)p Fs(!)p Ft(',)h(the)1110
+4304 y(v)-5 b(alue)25 b(is)g(the)g(negation)h(of)f(the)g(t)m(w)m
+(o-argumen)m(t)i(test)f(using)e(the)h(second)g(and)1110
+4413 y(third)32 b(argumen)m(ts.)47 b(If)33 b(the)f(\014rst)g(argumen)m
+(t)h(is)g(exactly)h(`)p Fs(\()p Ft(')f(and)f(the)h(third)1110
+4523 y(argumen)m(t)h(is)g(exactly)h(`)p Fs(\))p Ft(',)g(the)f(result)f
+(is)h(the)g(one-argumen)m(t)g(test)h(of)f(the)1110 4633
+y(second)d(argumen)m(t.)45 b(Otherwise,)31 b(the)h(expression)f(is)g
+(false.)44 b(The)31 b(`)p Fs(-a)p Ft(')h(and)1110 4742
+y(`)p Fs(-o)p Ft(')e(op)s(erators)h(are)g(considered)f(binary)f(op)s
+(erators)i(in)f(this)g(case.)630 4902 y(4)h(argumen)m(ts)1110
+5011 y(If)h(the)i(\014rst)e(argumen)m(t)h(is)g(`)p Fs(!)p
+Ft(',)h(the)f(result)g(is)g(the)g(negation)h(of)f(the)g(three-)1110
+5121 y(argumen)m(t)h(expression)f(comp)s(osed)h(of)f(the)h(remaining)g
+(argumen)m(ts.)50 b(Oth-)1110 5230 y(erwise,)34 b(the)f(expression)g
+(is)g(parsed)g(and)f(ev)-5 b(aluated)34 b(according)h(to)e(prece-)1110
+5340 y(dence)e(using)e(the)i(rules)f(listed)h(ab)s(o)m(v)m(e.)p
+eop end
 %%Page: 38 44
-38 43 bop 150 -116 a Ft(38)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y(5)g(or)f(more)h(argumen)m(ts)1110 408 y(The)43
-b(expression)e(is)i(parsed)f(and)g(ev)-5 b(aluated)44
-b(according)f(to)g(precedence)1110 518 y(using)29 b(the)h(rules)f
-(listed)g(ab)s(o)m(v)m(e.)150 675 y Fs(times)870 808
-y(times)630 941 y Ft(Prin)m(t)36 b(out)i(the)g(user)e(and)h(system)g
-(times)g(used)g(b)m(y)g(the)h(shell)d(and)i(its)g(c)m(hildren.)59
-b(The)630 1050 y(return)29 b(status)i(is)e(zero.)150
+TeXDict begin 38 43 bop 150 -116 a Ft(38)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(5)g(or)f(more)h(argumen)m(ts)1110
+408 y(The)43 b(expression)f(is)i(parsed)e(and)g(ev)-5
+b(aluated)45 b(according)f(to)f(precedence)1110 518 y(using)30
+b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)150 675 y Fs(times)870
+808 y(times)630 941 y Ft(Prin)m(t)37 b(out)h(the)g(user)e(and)h(system)
+g(times)h(used)f(b)m(y)g(the)h(shell)f(and)g(its)h(c)m(hildren.)61
+b(The)630 1050 y(return)29 b(status)i(is)f(zero.)150
 1207 y Fs(trap)870 1340 y(trap)47 b([-lp])f([)p Fj(arg)11
 b Fs(])46 b([)p Fj(sigspec)56 b Fs(...)o(])630 1473 y
-Ft(The)43 b(commands)f(in)g Fq(arg)51 b Ft(are)44 b(to)g(b)s(e)e(read)h
-(and)g(executed)h(when)e(the)h(shell)e(receiv)m(es)630
-1583 y(signal)34 b Fq(sigsp)s(ec)p Ft(.)56 b(If)35 b
-Fq(arg)44 b Ft(is)35 b(absen)m(t)h(\(and)f(there)h(is)f(a)g(single)g
-Fq(sigsp)s(ec)6 b Ft(\))34 b(or)i(equal)f(to)i(`)p Fs(-)p
-Ft(',)630 1692 y(eac)m(h)28 b(sp)s(eci\014ed)d(signal's)g(disp)s
-(osition)e(is)j(reset)h(to)g(the)g(v)-5 b(alue)26 b(it)g(had)g(when)f
-(the)i(shell)e(w)m(as)630 1802 y(started.)63 b(If)37
-b Fq(arg)46 b Ft(is)36 b(the)i(n)m(ull)e(string,)i(then)f(the)h(signal)
-f(sp)s(eci\014ed)e(b)m(y)j(eac)m(h)h Fq(sigsp)s(ec)j
-Ft(is)630 1911 y(ignored)35 b(b)m(y)h(the)g(shell)e(and)i(commands)f
-(it)h(in)m(v)m(ok)m(es.)58 b(If)35 b Fq(arg)45 b Ft(is)35
-b(not)h(presen)m(t)g(and)f(`)p Fs(-p)p Ft(')630 2021
-y(has)e(b)s(een)g(supplied,)d(the)k(shell)d(displa)m(ys)h(the)h(trap)g
-(commands)g(asso)s(ciated)h(with)e(eac)m(h)630 2131 y
-Fq(sigsp)s(ec)p Ft(.)39 b(If)29 b(no)g(argumen)m(ts)g(are)g(supplied,)d
-(or)j(only)f(`)p Fs(-p)p Ft(')h(is)f(giv)m(en,)h Fs(trap)f
-Ft(prin)m(ts)f(the)i(list)630 2240 y(of)f(commands)f(asso)s(ciated)h
-(with)f(eac)m(h)i(signal)d(n)m(um)m(b)s(er)g(in)h(a)h(form)f(that)h(ma)
-m(y)h(b)s(e)e(reused)630 2350 y(as)c(shell)e(input.)36
-b(The)23 b(`)p Fs(-l)p Ft(')f(option)h(causes)g(the)g(shell)e(to)i
-(prin)m(t)f(a)h(list)e(of)i(signal)f(names)h(and)630
-2459 y(their)32 b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47
-b(Eac)m(h)34 b Fq(sigsp)s(ec)k Ft(is)32 b(either)g(a)i(signal)e(name)h
-(or)g(a)g(signal)630 2569 y(n)m(um)m(b)s(er.)46 b(Signal)31
-b(names)i(are)g(case)h(insensitiv)m(e)c(and)j(the)f Fs(SIG)g
-Ft(pre\014x)g(is)g(optional.)46 b(If)33 b(a)630 2679
-y Fq(sigsp)s(ec)g Ft(is)27 b Fs(0)g Ft(or)h Fs(EXIT)p
-Ft(,)f Fq(arg)37 b Ft(is)26 b(executed)j(when)e(the)h(shell)e(exits.)40
-b(If)27 b(a)i Fq(sigsp)s(ec)j Ft(is)27 b Fs(DEBUG)p Ft(,)630
-2788 y(the)40 b(command)g Fq(arg)48 b Ft(is)39 b(executed)i(b)s(efore)f
-(ev)m(ery)g(simple)e(command,)43 b Fs(for)c Ft(command,)630
+Ft(The)43 b(commands)f(in)h Fq(arg)51 b Ft(are)44 b(to)g(b)s(e)e(read)h
+(and)g(executed)h(when)e(the)h(shell)g(receiv)m(es)630
+1583 y(signal)36 b Fq(sigsp)s(ec)p Ft(.)57 b(If)35 b
+Fq(arg)44 b Ft(is)36 b(absen)m(t)g(\(and)f(there)h(is)g(a)f(single)i
+Fq(sigsp)s(ec)6 b Ft(\))35 b(or)h(equal)g(to)h(`)p Fs(-)p
+Ft(',)630 1692 y(eac)m(h)28 b(sp)s(eci\014ed)e(signal's)h(disp)s
+(osition)f(is)h(reset)g(to)g(the)g(v)-5 b(alue)27 b(it)g(had)f(when)f
+(the)i(shell)g(w)m(as)630 1802 y(started.)63 b(If)37
+b Fq(arg)46 b Ft(is)37 b(the)h(n)m(ull)g(string,)h(then)e(the)h(signal)
+h(sp)s(eci\014ed)d(b)m(y)i(eac)m(h)h Fq(sigsp)s(ec)k
+Ft(is)630 1911 y(ignored)36 b(b)m(y)g(the)g(shell)g(and)g(commands)f
+(it)i(in)m(v)m(ok)m(es.)59 b(If)35 b Fq(arg)45 b Ft(is)36
+b(not)g(presen)m(t)g(and)f(`)p Fs(-p)p Ft(')630 2021
+y(has)e(b)s(een)g(supplied,)f(the)i(shell)f(displa)m(ys)h(the)f(trap)g
+(commands)g(asso)s(ciated)i(with)e(eac)m(h)630 2131 y
+Fq(sigsp)s(ec)p Ft(.)40 b(If)29 b(no)g(argumen)m(ts)g(are)g(supplied,)f
+(or)h(only)g(`)p Fs(-p)p Ft(')g(is)g(giv)m(en,)h Fs(trap)e
+Ft(prin)m(ts)g(the)h(list)630 2240 y(of)f(commands)f(asso)s(ciated)i
+(with)f(eac)m(h)h(signal)f(n)m(um)m(b)s(er)e(in)i(a)g(form)f(that)h(ma)
+m(y)h(b)s(e)e(reused)630 2350 y(as)c(shell)g(input.)37
+b(The)23 b(`)p Fs(-l)p Ft(')f(option)i(causes)f(the)g(shell)g(to)g
+(prin)m(t)g(a)g(list)g(of)g(signal)h(names)f(and)630
+2459 y(their)33 b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47
+b(Eac)m(h)34 b Fq(sigsp)s(ec)39 b Ft(is)33 b(either)g(a)h(signal)g
+(name)f(or)g(a)g(signal)630 2569 y(n)m(um)m(b)s(er.)46
+b(Signal)33 b(names)g(are)g(case)h(insensitiv)m(e)f(and)g(the)f
+Fs(SIG)g Ft(pre\014x)g(is)h(optional.)48 b(If)33 b(a)630
+2679 y Fq(sigsp)s(ec)h Ft(is)28 b Fs(0)f Ft(or)h Fs(EXIT)p
+Ft(,)f Fq(arg)37 b Ft(is)27 b(executed)i(when)e(the)h(shell)g(exits.)41
+b(If)27 b(a)i Fq(sigsp)s(ec)k Ft(is)28 b Fs(DEBUG)p Ft(,)630
+2788 y(the)40 b(command)g Fq(arg)48 b Ft(is)40 b(executed)h(b)s(efore)f
+(ev)m(ery)g(simple)g(command,)j Fs(for)c Ft(command,)630
 2898 y Fs(case)28 b Ft(command,)i Fs(select)d Ft(command,)j(ev)m(ery)g
-(arithmetic)f Fs(for)f Ft(command,)i(and)e(b)s(efore)630
-3007 y(the)k(\014rst)e(command)h(executes)i(in)d(a)i(shell)d(function.)
-43 b(Refer)31 b(to)h(the)g(description)d(of)j(the)630
-3117 y Fs(extglob)d Ft(option)i(to)h(the)g Fs(shopt)e
-Ft(builtin)e(\(see)k(Section)g(4.2)g([Bash)g(Builtins],)e(page)i(39\))
-630 3226 y(for)c(details)g(of)g(its)g(e\013ect)i(on)f(the)g
-Fs(DEBUG)e Ft(trap.)40 b(If)28 b(a)g Fq(sigsp)s(ec)34
-b Ft(is)27 b Fs(ERR)p Ft(,)i(the)f(command)g Fq(arg)630
-3336 y Ft(is)i(executed)h(whenev)m(er)g(a)g(simple)d(command)j(has)f(a)
-h(non-zero)g(exit)g(status,)g(sub)5 b(ject)30 b(to)630
-3446 y(the)k(follo)m(wing)f(conditions.)51 b(The)34 b
-Fs(ERR)f Ft(trap)h(is)f(not)i(executed)g(if)e(the)h(failed)f(command)
-630 3555 y(is)27 b(part)h(of)h(the)f(command)g(list)f(immediately)g
-(follo)m(wing)f(an)i Fs(until)f Ft(or)h Fs(while)f Ft(k)m(eyw)m(ord,)
-630 3665 y(part)h(of)h(the)g(test)g(in)e(an)i Fs(if)f
+(arithmetic)h Fs(for)d Ft(command,)i(and)e(b)s(efore)630
+3007 y(the)k(\014rst)e(command)h(executes)i(in)e(a)h(shell)f(function.)
+44 b(Refer)31 b(to)h(the)g(description)f(of)h(the)630
+3117 y Fs(extglob)d Ft(option)j(to)g(the)g Fs(shopt)e
+Ft(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)h(page)f(39\))
+630 3226 y(for)c(details)i(of)e(its)h(e\013ect)h(on)f(the)g
+Fs(DEBUG)e Ft(trap.)40 b(If)28 b(a)g Fq(sigsp)s(ec)35
+b Ft(is)28 b Fs(ERR)p Ft(,)h(the)f(command)g Fq(arg)630
+3336 y Ft(is)j(executed)g(whenev)m(er)g(a)g(simple)f(command)h(has)f(a)
+h(non-zero)g(exit)h(status,)f(sub)5 b(ject)30 b(to)630
+3446 y(the)k(follo)m(wing)i(conditions.)53 b(The)34 b
+Fs(ERR)f Ft(trap)h(is)g(not)h(executed)g(if)f(the)g(failed)h(command)
+630 3555 y(is)28 b(part)g(of)h(the)f(command)g(list)h(immediately)h
+(follo)m(wing)f(an)f Fs(until)f Ft(or)h Fs(while)f Ft(k)m(eyw)m(ord,)
+630 3665 y(part)h(of)h(the)g(test)g(in)f(an)h Fs(if)f
 Ft(statemen)m(t,)j(part)d(of)h(a)f Fs(&&)g Ft(or)h Fs(||)f
-Ft(list,)f(or)i(if)e(the)i(command's)630 3774 y(return)i(status)i(is)e
+Ft(list,)h(or)g(if)f(the)h(command's)630 3774 y(return)i(status)i(is)f
 (b)s(eing)f(in)m(v)m(erted)i(using)f Fs(!)p Ft(.)46 b(These)32
-b(are)g(the)h(same)f(conditions)f(ob)s(ey)m(ed)630 3884
-y(b)m(y)k(the)g Fs(errexit)e Ft(option.)54 b(If)34 b(a)i
-Fq(sigsp)s(ec)j Ft(is)34 b Fs(RETURN)p Ft(,)h(the)g(command)g
-Fq(arg)43 b Ft(is)34 b(executed)630 3994 y(eac)m(h)k(time)e(a)g(shell)f
-(function)g(or)h(a)h(script)e(executed)j(with)d(the)h
-Fs(.)g Ft(or)h Fs(source)e Ft(builtins)630 4103 y(\014nishes)28
-b(executing.)630 4236 y(Signals)35 b(ignored)g(up)s(on)g(en)m(try)i(to)
-g(the)f(shell)f(cannot)i(b)s(e)f(trapp)s(ed)f(or)h(reset.)59
-b(T)-8 b(rapp)s(ed)630 4346 y(signals)29 b(are)i(reset)g(to)g(their)e
-(original)g(v)-5 b(alues)29 b(in)g(a)i(c)m(hild)e(pro)s(cess)h(when)f
-(it)h(is)g(created.)630 4479 y(The)g(return)f(status)i(is)e(zero)i
-(unless)e(a)i Fq(sigsp)s(ec)k Ft(do)s(es)30 b(not)h(sp)s(ecify)e(a)h(v)
--5 b(alid)29 b(signal.)150 4635 y Fs(umask)870 4769 y(umask)46
-b([-p])h([-S])g([)p Fj(mode)11 b Fs(])630 4902 y Ft(Set)30
-b(the)f(shell)f(pro)s(cess's)h(\014le)g(creation)g(mask)h(to)g
-Fq(mo)s(de)p Ft(.)40 b(If)29 b Fq(mo)s(de)34 b Ft(b)s(egins)28
-b(with)g(a)i(digit,)630 5011 y(it)d(is)f(in)m(terpreted)g(as)h(an)g(o)s
-(ctal)h(n)m(um)m(b)s(er;)f(if)f(not,)i(it)f(is)f(in)m(terpreted)g(as)h
-(a)h(sym)m(b)s(olic)d(mo)s(de)630 5121 y(mask)k(similar)d(to)j(that)h
-(accepted)g(b)m(y)f(the)g Fs(chmod)e Ft(command.)40 b(If)28
-b Fq(mo)s(de)34 b Ft(is)27 b(omitted,)j(the)630 5230
-y(curren)m(t)36 b(v)-5 b(alue)35 b(of)h(the)h(mask)f(is)f(prin)m(ted.)
-56 b(If)35 b(the)h(`)p Fs(-S)p Ft(')g(option)g(is)f(supplied)e(without)
-i(a)630 5340 y Fq(mo)s(de)40 b Ft(argumen)m(t,)d(the)e(mask)g(is)f
-(prin)m(ted)g(in)g(a)i(sym)m(b)s(olic)d(format.)55 b(If)35
-b(the)g(`)p Fs(-p)p Ft(')g(option)p eop
+b(are)g(the)h(same)f(conditions)h(ob)s(ey)m(ed)630 3884
+y(b)m(y)i(the)g Fs(errexit)e Ft(option.)55 b(If)34 b(a)i
+Fq(sigsp)s(ec)k Ft(is)35 b Fs(RETURN)p Ft(,)g(the)g(command)g
+Fq(arg)43 b Ft(is)35 b(executed)630 3994 y(eac)m(h)j(time)f(a)f(shell)h
+(function)f(or)g(a)h(script)f(executed)i(with)e(the)g
+Fs(.)g Ft(or)h Fs(source)e Ft(builtins)630 4103 y(\014nishes)29
+b(executing.)630 4236 y(Signals)37 b(ignored)f(up)s(on)f(en)m(try)i(to)
+g(the)f(shell)h(cannot)g(b)s(e)f(trapp)s(ed)f(or)h(reset.)59
+b(T)-8 b(rapp)s(ed)630 4346 y(signals)31 b(are)g(reset)g(to)g(their)f
+(original)i(v)-5 b(alues)30 b(in)g(a)h(c)m(hild)g(pro)s(cess)f(when)f
+(it)i(is)g(created.)630 4479 y(The)f(return)f(status)i(is)f(zero)h
+(unless)f(a)h Fq(sigsp)s(ec)36 b Ft(do)s(es)30 b(not)h(sp)s(ecify)f(a)g
+(v)-5 b(alid)31 b(signal.)150 4635 y Fs(umask)870 4769
+y(umask)46 b([-p])h([-S])g([)p Fj(mode)11 b Fs(])630
+4902 y Ft(Set)30 b(the)f(shell)h(pro)s(cess's)f(\014le)h(creation)g
+(mask)g(to)g Fq(mo)s(de)p Ft(.)40 b(If)29 b Fq(mo)s(de)34
+b Ft(b)s(egins)29 b(with)g(a)h(digit,)630 5011 y(it)e(is)f(in)m
+(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s(er;)e(if)g(not,)h(it)g
+(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f(mo)s(de)630
+5121 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g
+Fs(chmod)e Ft(command.)40 b(If)28 b Fq(mo)s(de)34 b Ft(is)28
+b(omitted,)j(the)630 5230 y(curren)m(t)36 b(v)-5 b(alue)36
+b(of)g(the)h(mask)f(is)g(prin)m(ted.)57 b(If)35 b(the)h(`)p
+Fs(-S)p Ft(')g(option)h(is)f(supplied)f(without)h(a)630
+5340 y Fq(mo)s(de)k Ft(argumen)m(t,)d(the)e(mask)g(is)g(prin)m(ted)g
+(in)g(a)h(sym)m(b)s(olic)f(format.)55 b(If)35 b(the)g(`)p
+Fs(-p)p Ft(')g(option)p eop end
 %%Page: 39 45
-39 44 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)28
-b(Builtin)g(Commands)2069 b(39)630 299 y(is)33 b(supplied,)e(and)i
-Fq(mo)s(de)38 b Ft(is)32 b(omitted,)j(the)f(output)f(is)f(in)h(a)h
-(form)f(that)h(ma)m(y)g(b)s(e)f(reused)630 408 y(as)e(input.)40
-b(The)31 b(return)f(status)h(is)f(zero)i(if)d(the)i(mo)s(de)g(is)f
-(successfully)f(c)m(hanged)i(or)g(if)f(no)630 518 y Fq(mo)s(de)35
-b Ft(argumen)m(t)c(is)e(supplied,)f(and)h(non-zero)i(otherwise.)630
-653 y(Note)38 b(that)e(when)g(the)g(mo)s(de)g(is)f(in)m(terpreted)h(as)
-g(an)g(o)s(ctal)h(n)m(um)m(b)s(er,)f(eac)m(h)i(n)m(um)m(b)s(er)d(of)630
-762 y(the)f(umask)g(is)g(subtracted)g(from)f Fs(7)p Ft(.)53
-b(Th)m(us,)34 b(a)h(umask)e(of)i Fs(022)e Ft(results)g(in)g(p)s
-(ermissions)630 872 y(of)e Fs(755)p Ft(.)150 1031 y Fs(unset)870
-1166 y(unset)46 b([-fv])h([)p Fj(name)11 b Fs(])630 1300
-y Ft(Eac)m(h)34 b(v)-5 b(ariable)31 b(or)i(function)f
-Fq(name)38 b Ft(is)32 b(remo)m(v)m(ed.)50 b(If)32 b(no)h(options)g(are)
-g(supplied,)e(or)i(the)630 1410 y(`)p Fs(-v)p Ft(')h(option)g(is)g(giv)
-m(en,)h(eac)m(h)h Fq(name)k Ft(refers)34 b(to)h(a)g(shell)d(v)-5
-b(ariable.)52 b(If)34 b(the)h(`)p Fs(-f)p Ft(')f(option)g(is)630
-1520 y(giv)m(en,)26 b(the)e Fq(name)5 b Ft(s)25 b(refer)f(to)h(shell)e
-(functions,)h(and)g(the)g(function)f(de\014nition)f(is)i(remo)m(v)m
-(ed.)630 1629 y(Readonly)31 b(v)-5 b(ariables)31 b(and)h(functions)e
-(ma)m(y)j(not)f(b)s(e)g(unset.)45 b(The)32 b(return)f(status)h(is)f
-(zero)630 1739 y(unless)e(a)h Fq(name)36 b Ft(is)29 b(readonly)-8
+TeXDict begin 39 44 bop 150 -116 a Ft(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(39)630 299 y(is)34
+b(supplied,)f(and)g Fq(mo)s(de)38 b Ft(is)33 b(omitted,)j(the)e(output)
+f(is)g(in)h(a)g(form)f(that)h(ma)m(y)g(b)s(e)f(reused)630
+408 y(as)e(input.)41 b(The)31 b(return)f(status)h(is)g(zero)h(if)e(the)
+h(mo)s(de)g(is)g(successfully)g(c)m(hanged)g(or)g(if)g(no)630
+518 y Fq(mo)s(de)k Ft(argumen)m(t)c(is)f(supplied,)g(and)f(non-zero)i
+(otherwise.)630 653 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 762 y(the)f(umask)g(is)h(subtracted)f(from)f
+Fs(7)p Ft(.)53 b(Th)m(us,)34 b(a)h(umask)e(of)i Fs(022)e
+Ft(results)h(in)g(p)s(ermissions)630 872 y(of)d Fs(755)p
+Ft(.)150 1031 y Fs(unset)870 1166 y(unset)46 b([-fv])h([)p
+Fj(name)11 b Fs(])630 1300 y Ft(Eac)m(h)34 b(v)-5 b(ariable)33
+b(or)g(function)g Fq(name)38 b Ft(is)33 b(remo)m(v)m(ed.)50
+b(If)32 b(no)h(options)h(are)f(supplied,)g(or)g(the)630
+1410 y(`)p Fs(-v)p Ft(')h(option)h(is)g(giv)m(en,)h(eac)m(h)g
+Fq(name)k Ft(refers)34 b(to)h(a)g(shell)f(v)-5 b(ariable.)54
+b(If)34 b(the)h(`)p Fs(-f)p Ft(')f(option)h(is)630 1520
+y(giv)m(en,)27 b(the)d Fq(name)5 b Ft(s)25 b(refer)f(to)h(shell)g
+(functions,)g(and)f(the)g(function)g(de\014nition)g(is)h(remo)m(v)m
+(ed.)630 1629 y(Readonly)32 b(v)-5 b(ariables)33 b(and)f(functions)f
+(ma)m(y)i(not)f(b)s(e)g(unset.)45 b(The)32 b(return)f(status)h(is)g
+(zero)630 1739 y(unless)e(a)g Fq(name)36 b Ft(is)30 b(readonly)-8
 b(.)150 1997 y Fr(4.2)68 b(Bash)45 b(Builtin)g(Commands)275
-2241 y Ft(This)29 b(section)j(describ)s(es)e(builtin)f(commands)i(whic)
-m(h)f(are)j(unique)c(to)k(or)f(ha)m(v)m(e)h(b)s(een)e(extended)g(in)150
+2241 y Ft(This)30 b(section)j(describ)s(es)e(builtin)h(commands)f(whic)
+m(h)g(are)i(unique)d(to)j(or)f(ha)m(v)m(e)h(b)s(een)e(extended)g(in)150
 2350 y(Bash.)41 b(Some)30 b(of)h(these)g(commands)f(are)g(sp)s
-(eci\014ed)f(in)g(the)i Fl(posix)e Ft(1003.2)k(standard.)150
+(eci\014ed)g(in)g(the)h Fl(posix)e Ft(1003.2)k(standard.)150
 2510 y Fs(alias)870 2645 y(alias)46 b([-p])h([)p Fj(name)11
-b Fs([=)p Fj(value)g Fs(])43 b(...)o(])630 2779 y Ft(Without)g(argumen)
-m(ts)g(or)g(with)f(the)i(`)p Fs(-p)p Ft(')f(option,)j
-Fs(alias)41 b Ft(prin)m(ts)h(the)h(list)f(of)h(aliases)630
-2889 y(on)36 b(the)g(standard)f(output)h(in)e(a)j(form)e(that)i(allo)m
-(ws)e(them)h(to)g(b)s(e)g(reused)f(as)h(input.)55 b(If)630
-2998 y(argumen)m(ts)29 b(are)g(supplied,)d(an)j(alias)f(is)g(de\014ned)
-f(for)i(eac)m(h)h Fq(name)k Ft(whose)28 b Fq(v)-5 b(alue)34
-b Ft(is)28 b(giv)m(en.)630 3108 y(If)39 b(no)h Fq(v)-5
-b(alue)44 b Ft(is)39 b(giv)m(en,)j(the)e(name)f(and)g(v)-5
-b(alue)39 b(of)h(the)g(alias)f(is)g(prin)m(ted.)67 b(Aliases)39
-b(are)630 3217 y(describ)s(ed)28 b(in)h(Section)i(6.6)g([Aliases],)f
-(page)h(71.)150 3377 y Fs(bind)870 3512 y(bind)47 b([-m)g
+b Fs([=)p Fj(value)g Fs(])43 b(...)o(])630 2779 y Ft(Without)h(argumen)
+m(ts)f(or)g(with)g(the)h(`)p Fs(-p)p Ft(')f(option,)k
+Fs(alias)41 b Ft(prin)m(ts)i(the)g(list)h(of)f(aliases)630
+2889 y(on)36 b(the)g(standard)f(output)h(in)f(a)i(form)e(that)i(allo)m
+(ws)g(them)f(to)g(b)s(e)g(reused)f(as)h(input.)56 b(If)630
+2998 y(argumen)m(ts)29 b(are)g(supplied,)f(an)h(alias)h(is)f(de\014ned)
+e(for)i(eac)m(h)h Fq(name)k Ft(whose)28 b Fq(v)-5 b(alue)35
+b Ft(is)29 b(giv)m(en.)630 3108 y(If)39 b(no)h Fq(v)-5
+b(alue)45 b Ft(is)40 b(giv)m(en,)j(the)d(name)f(and)g(v)-5
+b(alue)40 b(of)g(the)g(alias)h(is)f(prin)m(ted.)68 b(Aliases)41
+b(are)630 3217 y(describ)s(ed)29 b(in)h(Section)i(6.6)f([Aliases],)h
+(page)f(71.)150 3377 y Fs(bind)870 3512 y(bind)47 b([-m)g
 Fj(keymap)11 b Fs(])45 b([-lpsvPSV])870 3621 y(bind)i([-m)g
 Fj(keymap)11 b Fs(])45 b([-q)i Fj(function)11 b Fs(])45
 b([-u)h Fj(function)11 b Fs(])45 b([-r)i Fj(keyseq)11
@@ -5744,1545 +7441,1548 @@ b Fs(])870 3731 y(bind)47 b([-m)g Fj(keymap)11 b Fs(])45
 b(-f)i Fj(filename)870 3840 y Fs(bind)g([-m)g Fj(keymap)11
 b Fs(])45 b(-x)i Fj(keyseq:shell-command)870 3950 y Fs(bind)g([-m)g
 Fj(keymap)11 b Fs(])45 b Fj(keyseq:function-name)870
-4060 y Fs(bind)i Fj(readline-command)630 4194 y Ft(Displa)m(y)24
-b(curren)m(t)h(Readline)f(\(see)i(Chapter)f(8)g([Command)g(Line)f
-(Editing],)h(page)h(83\))g(k)m(ey)630 4304 y(and)36 b(function)f
-(bindings,)h(bind)e(a)j(k)m(ey)g(sequence)g(to)h(a)f(Readline)e
-(function)g(or)i(macro,)630 4413 y(or)44 b(set)h(a)g(Readline)d(v)-5
-b(ariable.)81 b(Eac)m(h)45 b(non-option)f(argumen)m(t)g(is)f(a)i
-(command)f(as)g(it)630 4523 y(w)m(ould)34 b(app)s(ear)g(in)f(a)j(a)f
-(Readline)e(initialization)f(\014le)i(\(see)i(Section)e(8.3)i
-([Readline)e(Init)630 4632 y(File],)41 b(page)e(86\),)k(but)38
-b(eac)m(h)i(binding)c(or)j(command)g(m)m(ust)g(b)s(e)f(passed)g(as)i(a)
+4060 y Fs(bind)i Fj(readline-command)630 4194 y Ft(Displa)m(y)26
+b(curren)m(t)f(Readline)h(\(see)g(Chapter)f(8)g([Command)g(Line)g
+(Editing],)i(page)f(83\))g(k)m(ey)630 4304 y(and)36 b(function)g
+(bindings,)i(bind)d(a)i(k)m(ey)g(sequence)g(to)h(a)f(Readline)g
+(function)f(or)h(macro,)630 4413 y(or)44 b(set)h(a)g(Readline)f(v)-5
+b(ariable.)83 b(Eac)m(h)45 b(non-option)g(argumen)m(t)f(is)g(a)h
+(command)f(as)g(it)630 4523 y(w)m(ould)35 b(app)s(ear)f(in)g(a)i(a)f
+(Readline)g(initialization)j(\014le)d(\(see)h(Section)f(8.3)h
+([Readline)g(Init)630 4632 y(File],)43 b(page)c(86\),)k(but)38
+b(eac)m(h)i(binding)e(or)h(command)g(m)m(ust)g(b)s(e)f(passed)g(as)i(a)
 f(separate)630 4742 y(argumen)m(t;)d(e.g.,)f(`)p Fs
-("\\C-x\\C-r":re-read-init-fi)o(le)p Ft('.)43 b(Options,)33
-b(if)g(supplied,)e(ha)m(v)m(e)630 4852 y(the)g(follo)m(wing)d
-(meanings:)630 5011 y Fs(-m)i Fj(keymap)1110 5121 y Ft(Use)54
+("\\C-x\\C-r":re-read-init-fi)o(le)p Ft('.)43 b(Options,)34
+b(if)g(supplied,)f(ha)m(v)m(e)630 4852 y(the)e(follo)m(wing)g
+(meanings:)630 5011 y Fs(-m)f Fj(keymap)1110 5121 y Ft(Use)54
 b Fq(k)m(eymap)j Ft(as)d(the)g(k)m(eymap)g(to)h(b)s(e)e(a\013ected)i(b)
-m(y)f(the)g(subsequen)m(t)1110 5230 y(bindings.)44 b(Acceptable)33
-b Fq(k)m(eymap)j Ft(names)c(are)h Fs(emacs)p Ft(,)f Fs(emacs-standard)p
+m(y)f(the)g(subsequen)m(t)1110 5230 y(bindings.)46 b(Acceptable)34
+b Fq(k)m(eymap)i Ft(names)c(are)h Fs(emacs)p Ft(,)f Fs(emacs-standard)p
 Ft(,)1110 5340 y Fs(emacs-meta)p Ft(,)99 b Fs(emacs-ctlx)p
 Ft(,)f Fs(vi)p Ft(,)j Fs(vi-move)p Ft(,)f Fs(vi-command)p
-Ft(,)f(and)p eop
+Ft(,)f(and)p eop end
 %%Page: 40 46
-40 45 bop 150 -116 a Ft(40)2572 b(Bash)31 b(Reference)g(Man)m(ual)1110
-299 y Fs(vi-insert)p Ft(.)64 b Fs(vi)38 b Ft(is)g(equiv)-5
-b(alen)m(t)39 b(to)g Fs(vi-command)p Ft(;)i Fs(emacs)c
-Ft(is)h(equiv)-5 b(alen)m(t)1110 408 y(to)31 b Fs(emacs-standard)p
-Ft(.)630 562 y Fs(-l)384 b Ft(List)30 b(the)g(names)g(of)h(all)e
-(Readline)g(functions.)630 715 y Fs(-p)384 b Ft(Displa)m(y)32
-b(Readline)f(function)h(names)h(and)f(bindings)d(in)j(suc)m(h)g(a)i(w)m
-(a)m(y)f(that)1110 825 y(they)e(can)f(b)s(e)g(used)g(as)g(input)f(or)h
-(in)f(a)i(Readline)e(initialization)e(\014le.)630 978
-y Fs(-P)384 b Ft(List)30 b(curren)m(t)g(Readline)f(function)g(names)h
-(and)g(bindings.)630 1132 y Fs(-v)384 b Ft(Displa)m(y)23
-b(Readline)f(v)-5 b(ariable)23 b(names)h(and)f(v)-5 b(alues)23
-b(in)g(suc)m(h)g(a)i(w)m(a)m(y)f(that)h(they)1110 1241
-y(can)31 b(b)s(e)e(used)h(as)h(input)d(or)i(in)f(a)i(Readline)e
-(initialization)f(\014le.)630 1395 y Fs(-V)384 b Ft(List)30
-b(curren)m(t)g(Readline)f(v)-5 b(ariable)29 b(names)h(and)g(v)-5
-b(alues.)630 1548 y Fs(-s)384 b Ft(Displa)m(y)37 b(Readline)f(k)m(ey)i
+TeXDict begin 40 45 bop 150 -116 a Ft(40)2572 b(Bash)31
+b(Reference)g(Man)m(ual)1110 299 y Fs(vi-insert)p Ft(.)64
+b Fs(vi)38 b Ft(is)h(equiv)-5 b(alen)m(t)41 b(to)e Fs(vi-command)p
+Ft(;)i Fs(emacs)c Ft(is)i(equiv)-5 b(alen)m(t)1110 408
+y(to)31 b Fs(emacs-standard)p Ft(.)630 562 y Fs(-l)384
+b Ft(List)31 b(the)f(names)g(of)h(all)g(Readline)g(functions.)630
+715 y Fs(-p)384 b Ft(Displa)m(y)34 b(Readline)f(function)g(names)g(and)
+f(bindings)f(in)i(suc)m(h)f(a)i(w)m(a)m(y)f(that)1110
+825 y(they)e(can)f(b)s(e)g(used)g(as)g(input)g(or)g(in)g(a)h(Readline)g
+(initialization)i(\014le.)630 978 y Fs(-P)384 b Ft(List)31
+b(curren)m(t)f(Readline)h(function)f(names)g(and)g(bindings.)630
+1132 y Fs(-v)384 b Ft(Displa)m(y)25 b(Readline)f(v)-5
+b(ariable)25 b(names)f(and)f(v)-5 b(alues)24 b(in)g(suc)m(h)f(a)i(w)m
+(a)m(y)f(that)h(they)1110 1241 y(can)31 b(b)s(e)e(used)h(as)h(input)e
+(or)h(in)g(a)h(Readline)g(initialization)j(\014le.)630
+1395 y Fs(-V)384 b Ft(List)31 b(curren)m(t)f(Readline)h(v)-5
+b(ariable)31 b(names)f(and)g(v)-5 b(alues.)630 1548 y
+Fs(-s)384 b Ft(Displa)m(y)39 b(Readline)f(k)m(ey)g(sequences)f(b)s
+(ound)f(to)i(macros)g(and)f(the)g(strings)1110 1658 y(they)d(output)f
+(in)h(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(they)g(can)g(b)s(e)f(used)g(as)h
+(input)e(or)i(in)g(a)1110 1767 y(Readline)d(initialization)i(\014le.)
+630 1921 y Fs(-S)384 b Ft(Displa)m(y)39 b(Readline)f(k)m(ey)g
 (sequences)f(b)s(ound)f(to)i(macros)g(and)f(the)g(strings)1110
-1658 y(they)d(output)f(in)g(suc)m(h)g(a)h(w)m(a)m(y)h(that)f(they)g
-(can)g(b)s(e)f(used)g(as)h(input)d(or)j(in)f(a)1110 1767
-y(Readline)c(initialization)e(\014le.)630 1921 y Fs(-S)384
-b Ft(Displa)m(y)37 b(Readline)f(k)m(ey)i(sequences)f(b)s(ound)f(to)i
-(macros)g(and)f(the)g(strings)1110 2030 y(they)31 b(output.)630
-2184 y Fs(-f)f Fj(filename)1110 2293 y Ft(Read)h(k)m(ey)g(bindings)c
-(from)j Fq(\014lename)p Ft(.)630 2447 y Fs(-q)g Fj(function)1110
-2556 y Ft(Query)g(ab)s(out)g(whic)m(h)f(k)m(eys)i(in)m(v)m(ok)m(e)g
-(the)g(named)f Fq(function)p Ft(.)630 2710 y Fs(-u)g
-Fj(function)1110 2819 y Ft(Un)m(bind)e(all)h(k)m(eys)i(b)s(ound)e(to)i
-(the)f(named)g Fq(function)p Ft(.)630 2973 y Fs(-r)g
-Fj(keyseq)1110 3082 y Ft(Remo)m(v)m(e)i(an)m(y)f(curren)m(t)f(binding)d
-(for)j Fq(k)m(eyseq)p Ft(.)630 3236 y Fs(-x)g Fj(keyseq:shell-command)
-1110 3345 y Ft(Cause)g Fq(shell-command)i Ft(to)g(b)s(e)d(executed)j
-(whenev)m(er)e Fq(k)m(eyseq)j Ft(is)d(en)m(tered.)630
-3499 y(The)c(return)f(status)i(is)e(zero)j(unless)c(an)j(in)m(v)-5
-b(alid)24 b(option)i(is)f(supplied)e(or)k(an)f(error)g(o)s(ccurs.)150
+2030 y(they)31 b(output.)630 2184 y Fs(-f)f Fj(filename)1110
+2293 y Ft(Read)h(k)m(ey)g(bindings)e(from)h Fq(\014lename)p
+Ft(.)630 2447 y Fs(-q)g Fj(function)1110 2556 y Ft(Query)g(ab)s(out)g
+(whic)m(h)g(k)m(eys)h(in)m(v)m(ok)m(e)h(the)f(named)f
+Fq(function)p Ft(.)630 2710 y Fs(-u)g Fj(function)1110
+2819 y Ft(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i(the)f(named)g
+Fq(function)p Ft(.)630 2973 y Fs(-r)g Fj(keyseq)1110
+3082 y Ft(Remo)m(v)m(e)i(an)m(y)f(curren)m(t)f(binding)f(for)h
+Fq(k)m(eyseq)p Ft(.)630 3236 y Fs(-x)g Fj(keyseq:shell-command)1110
+3345 y Ft(Cause)g Fq(shell-command)k Ft(to)e(b)s(e)d(executed)j(whenev)
+m(er)e Fq(k)m(eyseq)j Ft(is)e(en)m(tered.)630 3499 y(The)26
+b(return)f(status)i(is)f(zero)i(unless)d(an)i(in)m(v)-5
+b(alid)27 b(option)g(is)f(supplied)f(or)i(an)f(error)g(o)s(ccurs.)150
 3652 y Fs(builtin)870 3784 y(builtin)46 b([)p Fj(shell-builtin)54
-b Fs([)p Fj(args)11 b Fs(]])630 3915 y Ft(Run)35 b(a)i(shell)d
-(builtin,)h(passing)g(it)h Fq(args)p Ft(,)i(and)e(return)f(its)h(exit)g
-(status.)59 b(This)34 b(is)i(useful)630 4025 y(when)29
-b(de\014ning)g(a)h(shell)f(function)g(with)g(the)h(same)h(name)f(as)h
-(a)g(shell)d(builtin,)f(retaining)630 4134 y(the)34 b(functionalit)m(y)
-e(of)i(the)f(builtin)d(within)h(the)j(function.)49 b(The)33
-b(return)g(status)h(is)e(non-)630 4244 y(zero)f(if)f
-Fq(shell-builtin)25 b Ft(is)k(not)i(a)g(shell)d(builtin)f(command.)150
+b Fs([)p Fj(args)11 b Fs(]])630 3915 y Ft(Run)35 b(a)i(shell)f
+(builtin,)i(passing)e(it)h Fq(args)p Ft(,)h(and)e(return)f(its)i(exit)g
+(status.)59 b(This)35 b(is)i(useful)630 4025 y(when)29
+b(de\014ning)h(a)g(shell)h(function)f(with)g(the)g(same)h(name)f(as)h
+(a)g(shell)f(builtin,)g(retaining)630 4134 y(the)k(functionalit)m(y)h
+(of)f(the)f(builtin)g(within)g(the)h(function.)50 b(The)33
+b(return)g(status)h(is)f(non-)630 4244 y(zero)e(if)g
+Fq(shell-builtin)f Ft(is)g(not)h(a)g(shell)f(builtin)g(command.)150
 4398 y Fs(caller)870 4529 y(caller)46 b([)p Fj(expr)11
 b Fs(])630 4661 y Ft(Returns)34 b(the)g(con)m(text)j(of)e(an)m(y)g
-(activ)m(e)h(subroutine)c(call)i(\(a)h(shell)e(function)g(or)i(a)g
-(script)630 4770 y(executed)c(with)e(the)i Fs(.)f Ft(or)g
-Fs(source)f Ft(builtins\).)630 4902 y(Without)44 b Fq(expr)p
-Ft(,)k Fs(caller)43 b Ft(displa)m(ys)g(the)h(line)f(n)m(um)m(b)s(er)h
-(and)g(source)g(\014lename)g(of)h(the)630 5011 y(curren)m(t)35
-b(subroutine)f(call.)56 b(If)35 b(a)h(non-negativ)m(e)h(in)m(teger)f
-(is)f(supplied)d(as)k Fq(expr)p Ft(,)h Fs(caller)630
-5121 y Ft(displa)m(ys)i(the)h(line)f(n)m(um)m(b)s(er,)j(subroutine)c
-(name,)44 b(and)c(source)g(\014le)g(corresp)s(onding)e(to)630
-5230 y(that)d(p)s(osition)e(in)g(the)i(curren)m(t)f(execution)h(call)f
-(stac)m(k.)54 b(This)33 b(extra)i(information)e(ma)m(y)630
-5340 y(b)s(e)d(used,)g(for)g(example,)g(to)h(prin)m(t)e(a)i(stac)m(k)h
-(trace.)42 b(The)29 b(curren)m(t)i(frame)f(is)f(frame)i(0.)p
-eop
+(activ)m(e)i(subroutine)c(call)j(\(a)f(shell)g(function)f(or)h(a)g
+(script)630 4770 y(executed)c(with)f(the)h Fs(.)f Ft(or)g
+Fs(source)f Ft(builtins\).)630 4902 y(Without)45 b Fq(expr)p
+Ft(,)j Fs(caller)43 b Ft(displa)m(ys)i(the)f(line)h(n)m(um)m(b)s(er)f
+(and)g(source)g(\014lename)h(of)g(the)630 5011 y(curren)m(t)35
+b(subroutine)g(call.)58 b(If)35 b(a)h(non-negativ)m(e)i(in)m(teger)f
+(is)f(supplied)e(as)i Fq(expr)p Ft(,)h Fs(caller)630
+5121 y Ft(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d
+(name,)44 b(and)c(source)g(\014le)h(corresp)s(onding)e(to)630
+5230 y(that)c(p)s(osition)g(in)f(the)h(curren)m(t)f(execution)i(call)g
+(stac)m(k.)54 b(This)34 b(extra)h(information)g(ma)m(y)630
+5340 y(b)s(e)30 b(used,)g(for)g(example,)h(to)g(prin)m(t)f(a)h(stac)m
+(k)h(trace.)42 b(The)29 b(curren)m(t)i(frame)f(is)g(frame)h(0.)p
+eop end
 %%Page: 41 47
-41 46 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)28
-b(Builtin)g(Commands)2069 b(41)630 299 y(The)29 b(return)f(v)-5
-b(alue)28 b(is)h(0)g(unless)f(the)h(shell)e(is)i(not)g(executing)g(a)h
-(subroutine)d(call)h(or)i Fq(expr)630 408 y Ft(do)s(es)g(not)h(corresp)
-s(ond)e(to)i(a)g(v)-5 b(alid)28 b(p)s(osition)h(in)g(the)h(call)g(stac)
-m(k.)150 578 y Fs(command)870 717 y(command)46 b([-pVv])g
-Fj(command)56 b Fs([)p Fj(arguments)g Fs(...)o(])630
-857 y Ft(Runs)32 b Fq(command)k Ft(with)c Fq(argumen)m(ts)37
-b Ft(ignoring)31 b(an)m(y)i(shell)f(function)f(named)i
-Fq(command)p Ft(.)630 966 y(Only)38 b(shell)h(builtin)d(commands)k(or)g
-(commands)f(found)g(b)m(y)h(searc)m(hing)g(the)g Fs(PATH)f
-Ft(are)630 1076 y(executed.)g(If)23 b(there)h(is)e(a)i(shell)d
-(function)h(named)h Fs(ls)p Ft(,)i(running)20 b(`)p Fs(command)29
-b(ls)p Ft(')23 b(within)e(the)630 1186 y(function)32
-b(will)e(execute)35 b(the)f(external)f(command)g Fs(ls)f
-Ft(instead)h(of)g(calling)f(the)h(function)630 1295 y(recursiv)m(ely)-8
-b(.)82 b(The)44 b(`)p Fs(-p)p Ft(')h(option)f(means)g(to)h(use)g(a)f
-(default)g(v)-5 b(alue)44 b(for)g Fs(PATH)g Ft(that)h(is)630
-1405 y(guaran)m(teed)35 b(to)f(\014nd)e(all)h(of)h(the)g(standard)f
-(utilities.)48 b(The)33 b(return)g(status)h(in)e(this)h(case)630
-1514 y(is)28 b(127)h(if)f Fq(command)k Ft(cannot)d(b)s(e)e(found)h(or)g
-(an)g(error)h(o)s(ccurred,)f(and)g(the)h(exit)f(status)h(of)630
+TeXDict begin 41 46 bop 150 -116 a Ft(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(41)630 299 y(The)29
+b(return)f(v)-5 b(alue)29 b(is)h(0)f(unless)g(the)g(shell)g(is)h(not)f
+(executing)h(a)g(subroutine)e(call)i(or)g Fq(expr)630
+408 y Ft(do)s(es)g(not)h(corresp)s(ond)e(to)i(a)g(v)-5
+b(alid)30 b(p)s(osition)h(in)f(the)g(call)i(stac)m(k.)150
+578 y Fs(command)870 717 y(command)46 b([-pVv])g Fj(command)56
+b Fs([)p Fj(arguments)g Fs(...)o(])630 857 y Ft(Runs)32
+b Fq(command)k Ft(with)d Fq(argumen)m(ts)k Ft(ignoring)c(an)m(y)g
+(shell)h(function)e(named)h Fq(command)p Ft(.)630 966
+y(Only)39 b(shell)i(builtin)e(commands)h(or)g(commands)f(found)g(b)m(y)
+h(searc)m(hing)h(the)f Fs(PATH)f Ft(are)630 1076 y(executed.)g(If)23
+b(there)h(is)f(a)h(shell)f(function)g(named)g Fs(ls)p
+Ft(,)i(running)c(`)p Fs(command)29 b(ls)p Ft(')23 b(within)g(the)630
+1186 y(function)33 b(will)g(execute)i(the)f(external)g(command)f
+Fs(ls)f Ft(instead)i(of)f(calling)i(the)e(function)630
+1295 y(recursiv)m(ely)-8 b(.)84 b(The)44 b(`)p Fs(-p)p
+Ft(')h(option)g(means)f(to)h(use)g(a)f(default)h(v)-5
+b(alue)45 b(for)f Fs(PATH)g Ft(that)h(is)630 1405 y(guaran)m(teed)35
+b(to)f(\014nd)e(all)j(of)f(the)g(standard)f(utilities.)52
+b(The)33 b(return)g(status)h(in)f(this)h(case)630 1514
+y(is)29 b(127)g(if)g Fq(command)j Ft(cannot)d(b)s(e)e(found)h(or)g(an)g
+(error)h(o)s(ccurred,)f(and)g(the)h(exit)g(status)g(of)630
 1624 y Fq(command)34 b Ft(otherwise.)630 1763 y(If)25
-b(either)f(the)i(`)p Fs(-V)p Ft(')f(or)g(`)p Fs(-v)p
-Ft(')g(option)f(is)g(supplied,)g(a)h(description)e(of)j
-Fq(command)i Ft(is)c(prin)m(ted.)630 1873 y(The)j(`)p
-Fs(-v)p Ft(')h(option)g(causes)g(a)h(single)d(w)m(ord)i(indicating)e
-(the)i(command)g(or)g(\014le)f(name)h(used)630 1983 y(to)36
-b(in)m(v)m(ok)m(e)f Fq(command)k Ft(to)c(b)s(e)g(displa)m(y)m(ed;)h
-(the)f(`)p Fs(-V)p Ft(')g(option)f(pro)s(duces)f(a)j(more)f(v)m(erb)s
-(ose)630 2092 y(description.)59 b(In)36 b(this)g(case,)k(the)e(return)e
-(status)h(is)f(zero)i(if)e Fq(command)41 b Ft(is)36 b(found,)i(and)630
-2202 y(non-zero)31 b(if)e(not.)150 2371 y Fs(declare)870
+b(either)g(the)h(`)p Fs(-V)p Ft(')f(or)g(`)p Fs(-v)p
+Ft(')g(option)g(is)g(supplied,)h(a)f(description)g(of)h
+Fq(command)i Ft(is)d(prin)m(ted.)630 1873 y(The)i(`)p
+Fs(-v)p Ft(')h(option)h(causes)f(a)h(single)f(w)m(ord)g(indicating)h
+(the)f(command)g(or)g(\014le)g(name)g(used)630 1983 y(to)36
+b(in)m(v)m(ok)m(e)g Fq(command)j Ft(to)c(b)s(e)g(displa)m(y)m(ed;)j
+(the)d(`)p Fs(-V)p Ft(')g(option)g(pro)s(duces)e(a)j(more)f(v)m(erb)s
+(ose)630 2092 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e
+(status)h(is)g(zero)h(if)f Fq(command)k Ft(is)c(found,)h(and)630
+2202 y(non-zero)31 b(if)f(not.)150 2371 y Fs(declare)870
 2511 y(declare)46 b([-afFirtx])f([-p])h([)p Fj(name)11
-b Fs([=)p Fj(value)g Fs(])44 b(...)o(])630 2650 y Ft(Declare)28
-b(v)-5 b(ariables)26 b(and)g(giv)m(e)i(them)f(attributes.)39
-b(If)27 b(no)g Fq(name)5 b Ft(s)27 b(are)h(giv)m(en,)g(then)f(displa)m
-(y)630 2760 y(the)k(v)-5 b(alues)29 b(of)i(v)-5 b(ariables)29
-b(instead.)630 2899 y(The)f(`)p Fs(-p)p Ft(')g(option)f(will)f(displa)m
-(y)g(the)j(attributes)e(and)h(v)-5 b(alues)27 b(of)i(eac)m(h)g
+b Fs([=)p Fj(value)g Fs(])44 b(...)o(])630 2650 y Ft(Declare)29
+b(v)-5 b(ariables)28 b(and)e(giv)m(e)j(them)e(attributes.)40
+b(If)27 b(no)g Fq(name)5 b Ft(s)27 b(are)h(giv)m(en,)h(then)e(displa)m
+(y)630 2760 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31
+b(instead.)630 2899 y(The)d(`)p Fs(-p)p Ft(')g(option)g(will)h(displa)m
+(y)f(the)h(attributes)f(and)g(v)-5 b(alues)28 b(of)h(eac)m(h)g
 Fq(name)p Ft(.)40 b(When)28 b(`)p Fs(-p)p Ft(')630 3009
-y(is)j(used,)h(additional)e(options)h(are)i(ignored.)45
-b(The)31 b(`)p Fs(-F)p Ft(')h(option)g(inhibits)c(the)k(displa)m(y)f
-(of)630 3118 y(function)g(de\014nitions;)g(only)h(the)g(function)f
-(name)i(and)f(attributes)g(are)g(prin)m(ted.)46 b(If)32
-b(the)630 3228 y Fs(extdebug)e Ft(shell)h(option)h(is)g(enabled)f
-(using)g Fs(shopt)h Ft(\(see)h(Section)f(4.2)i([Bash)f(Builtins],)630
-3337 y(page)k(39\),)h(the)e(source)g(\014le)f(name)h(and)g(line)e(n)m
-(um)m(b)s(er)g(where)i(the)g(function)e(is)h(de\014ned)630
-3447 y(are)g(displa)m(y)m(ed)f(as)h(w)m(ell.)53 b(`)p
-Fs(-F)p Ft(')34 b(implies)e(`)p Fs(-f)p Ft('.)54 b(The)35
-b(follo)m(wing)e(options)h(can)h(b)s(e)f(used)g(to)630
-3557 y(restrict)40 b(output)h(to)g(v)-5 b(ariables)40
-b(with)f(the)i(sp)s(eci\014ed)e(attributes)h(or)h(to)g(giv)m(e)g(v)-5
+y(is)k(used,)g(additional)h(options)f(are)h(ignored.)46
+b(The)31 b(`)p Fs(-F)p Ft(')h(option)h(inhibits)e(the)h(displa)m(y)h
+(of)630 3118 y(function)f(de\014nitions;)h(only)g(the)f(function)g
+(name)h(and)f(attributes)h(are)f(prin)m(ted.)47 b(If)32
+b(the)630 3228 y Fs(extdebug)e Ft(shell)j(option)g(is)g(enabled)f
+(using)g Fs(shopt)g Ft(\(see)h(Section)g(4.2)h([Bash)f(Builtins],)630
+3337 y(page)k(39\),)h(the)e(source)g(\014le)g(name)g(and)g(line)g(n)m
+(um)m(b)s(er)e(where)i(the)g(function)f(is)h(de\014ned)630
+3447 y(are)f(displa)m(y)m(ed)h(as)f(w)m(ell.)55 b(`)p
+Fs(-F)p Ft(')34 b(implies)h(`)p Fs(-f)p Ft('.)54 b(The)35
+b(follo)m(wing)h(options)f(can)g(b)s(e)f(used)g(to)630
+3557 y(restrict)41 b(output)g(to)g(v)-5 b(ariables)42
+b(with)e(the)h(sp)s(eci\014ed)f(attributes)h(or)g(to)g(giv)m(e)h(v)-5
 b(ariables)630 3666 y(attributes:)630 3836 y Fs(-a)384
-b Ft(Eac)m(h)30 b Fq(name)k Ft(is)28 b(an)h(arra)m(y)h(v)-5
-b(ariable)28 b(\(see)i(Section)f(6.7)h([Arra)m(ys],)h(page)e(72\).)630
-4005 y Fs(-f)384 b Ft(Use)31 b(function)e(names)h(only)-8
-b(.)630 4174 y Fs(-i)384 b Ft(The)36 b(v)-5 b(ariable)35
-b(is)g(to)i(b)s(e)f(treated)h(as)g(an)f(in)m(teger;)k(arithmetic)35
-b(ev)-5 b(aluation)1110 4284 y(\(see)29 b(Section)e(6.5)i([Shell)d
-(Arithmetic],)i(page)g(70\))h(is)e(p)s(erformed)f(when)h(the)1110
-4394 y(v)-5 b(ariable)29 b(is)h(assigned)f(a)i(v)-5 b(alue.)630
-4563 y Fs(-r)384 b Ft(Mak)m(e)25 b Fq(name)5 b Ft(s)23
-b(readonly)-8 b(.)38 b(These)24 b(names)f(cannot)h(then)f(b)s(e)g
-(assigned)g(v)-5 b(alues)1110 4672 y(b)m(y)30 b(subsequen)m(t)g
-(assignmen)m(t)g(statemen)m(ts)i(or)f(unset.)630 4842
-y Fs(-t)384 b Ft(Giv)m(e)32 b(eac)m(h)i Fq(name)j Ft(the)32
-b Fs(trace)f Ft(attribute.)45 b(T)-8 b(raced)32 b(functions)f(inherit)f
-(the)1110 4951 y Fs(DEBUG)21 b Ft(trap)h(from)h(the)f(calling)f(shell.)
-37 b(The)22 b(trace)h(attribute)g(has)f(no)g(sp)s(ecial)1110
-5061 y(meaning)30 b(for)g(v)-5 b(ariables.)630 5230 y
+b Ft(Eac)m(h)30 b Fq(name)k Ft(is)29 b(an)g(arra)m(y)h(v)-5
+b(ariable)30 b(\(see)g(Section)g(6.7)g([Arra)m(ys],)h(page)e(72\).)630
+4005 y Fs(-f)384 b Ft(Use)31 b(function)f(names)g(only)-8
+b(.)630 4174 y Fs(-i)384 b Ft(The)36 b(v)-5 b(ariable)37
+b(is)f(to)h(b)s(e)f(treated)h(as)g(an)f(in)m(teger;)41
+b(arithmetic)c(ev)-5 b(aluation)1110 4284 y(\(see)29
+b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(70\))h(is)f(p)s
+(erformed)e(when)h(the)1110 4394 y(v)-5 b(ariable)31
+b(is)g(assigned)f(a)h(v)-5 b(alue.)630 4563 y Fs(-r)384
+b Ft(Mak)m(e)25 b Fq(name)5 b Ft(s)23 b(readonly)-8 b(.)39
+b(These)24 b(names)f(cannot)h(then)f(b)s(e)g(assigned)h(v)-5
+b(alues)1110 4672 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h
+(statemen)m(ts)h(or)f(unset.)630 4842 y Fs(-t)384 b Ft(Giv)m(e)33
+b(eac)m(h)h Fq(name)j Ft(the)32 b Fs(trace)f Ft(attribute.)46
+b(T)-8 b(raced)32 b(functions)g(inherit)g(the)1110 4951
+y Fs(DEBUG)21 b Ft(trap)h(from)h(the)f(calling)i(shell.)39
+b(The)22 b(trace)h(attribute)h(has)e(no)g(sp)s(ecial)1110
+5061 y(meaning)31 b(for)f(v)-5 b(ariables.)630 5230 y
 Fs(-x)384 b Ft(Mark)30 b(eac)m(h)h Fq(name)k Ft(for)29
-b(exp)s(ort)h(to)g(subsequen)m(t)f(commands)h(via)f(the)h(en)m(vi-)1110
-5340 y(ronmen)m(t.)p eop
+b(exp)s(ort)h(to)g(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110
+5340 y(ronmen)m(t.)p eop end
 %%Page: 42 48
-42 47 bop 150 -116 a Ft(42)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y(Using)24 b(`)p Fs(+)p Ft(')h(instead)g(of)g(`)p
-Fs(-)p Ft(')g(turns)f(o\013)h(the)g(attribute)g(instead.)38
-b(When)25 b(used)f(in)g(a)h(function,)630 408 y Fs(declare)37
-b Ft(mak)m(es)i(eac)m(h)h Fq(name)k Ft(lo)s(cal,)d(as)d(with)g(the)h
-Fs(local)e Ft(command.)66 b(If)38 b(a)h(v)-5 b(ariable)630
-518 y(name)30 b(is)g(follo)m(w)m(ed)g(b)m(y)g(=)p Fq(v)-5
-b(alue)p Ft(,)30 b(the)g(v)-5 b(alue)30 b(of)h(the)f(v)-5
-b(ariable)30 b(is)f(set)i(to)g Fq(v)-5 b(alue)p Ft(.)630
-658 y(The)35 b(return)f(status)i(is)f(zero)h(unless)e(an)h(in)m(v)-5
-b(alid)33 b(option)i(is)g(encoun)m(tered,)i(an)f(attempt)630
-767 y(is)31 b(made)h(to)g(de\014ne)f(a)h(function)f(using)f(`)p
-Fs(-f)g(foo=bar)p Ft(',)h(an)h(attempt)g(is)f(made)h(to)h(assign)630
-877 y(a)42 b(v)-5 b(alue)42 b(to)h(a)f(readonly)f(v)-5
-b(ariable,)45 b(an)d(attempt)h(is)e(made)h(to)h(assign)e(a)i(v)-5
-b(alue)41 b(to)i(an)630 986 y(arra)m(y)30 b(v)-5 b(ariable)28
-b(without)h(using)e(the)j(comp)s(ound)e(assignmen)m(t)h(syn)m(tax)h
-(\(see)h(Section)e(6.7)630 1096 y([Arra)m(ys],)47 b(page)c(72\),)48
-b(one)43 b(of)g(the)g Fq(names)k Ft(is)42 b(not)h(a)g(v)-5
-b(alid)41 b(shell)g(v)-5 b(ariable)42 b(name,)k(an)630
-1205 y(attempt)28 b(is)e(made)i(to)f(turn)f(o\013)i(readonly)e(status)h
-(for)g(a)h(readonly)e(v)-5 b(ariable,)27 b(an)g(attempt)630
-1315 y(is)g(made)i(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g
-(arra)m(y)h(v)-5 b(ariable,)28 b(or)g(an)g(attempt)i(is)d(made)h(to)630
-1425 y(displa)m(y)h(a)h(non-existen)m(t)h(function)e(with)g(`)p
+TeXDict begin 42 47 bop 150 -116 a Ft(42)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(Using)25 b(`)p Fs(+)p
+Ft(')g(instead)h(of)f(`)p Fs(-)p Ft(')g(turns)f(o\013)h(the)g
+(attribute)h(instead.)39 b(When)25 b(used)f(in)h(a)g(function,)630
+408 y Fs(declare)37 b Ft(mak)m(es)i(eac)m(h)h Fq(name)k
+Ft(lo)s(cal,)f(as)38 b(with)h(the)g Fs(local)e Ft(command.)66
+b(If)38 b(a)h(v)-5 b(ariable)630 518 y(name)30 b(is)h(follo)m(w)m(ed)h
+(b)m(y)e(=)p Fq(v)-5 b(alue)p Ft(,)31 b(the)f(v)-5 b(alue)31
+b(of)g(the)f(v)-5 b(ariable)32 b(is)e(set)h(to)g Fq(v)-5
+b(alue)p Ft(.)630 658 y(The)35 b(return)f(status)i(is)g(zero)g(unless)f
+(an)g(in)m(v)-5 b(alid)36 b(option)g(is)g(encoun)m(tered,)h(an)f
+(attempt)630 767 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g(using)f
+(`)p Fs(-f)f(foo=bar)p Ft(',)h(an)h(attempt)g(is)g(made)g(to)h(assign)
+630 877 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5
+b(ariable,)47 b(an)42 b(attempt)h(is)f(made)g(to)h(assign)f(a)h(v)-5
+b(alue)42 b(to)h(an)630 986 y(arra)m(y)30 b(v)-5 b(ariable)30
+b(without)g(using)e(the)i(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g
+(\(see)h(Section)f(6.7)630 1096 y([Arra)m(ys],)47 b(page)c(72\),)48
+b(one)43 b(of)g(the)g Fq(names)k Ft(is)c(not)g(a)g(v)-5
+b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630
+1205 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g
+(for)g(a)h(readonly)f(v)-5 b(ariable,)29 b(an)e(attempt)630
+1315 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g
+(arra)m(y)h(v)-5 b(ariable,)30 b(or)e(an)g(attempt)i(is)e(made)g(to)630
+1425 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g(`)p
 Fs(-f)p Ft('.)150 1594 y Fs(echo)870 1733 y(echo)47 b([-neE])f([)p
 Fj(arg)57 b Fs(...)o(])630 1873 y Ft(Output)31 b(the)i
-Fq(arg)8 b Ft(s,)33 b(separated)g(b)m(y)g(spaces,)g(terminated)f(with)f
-(a)i(newline.)45 b(The)32 b(return)630 1983 y(status)f(is)f(alw)m(a)m
-(ys)h(0.)41 b(If)31 b(`)p Fs(-n)p Ft(')f(is)g(sp)s(eci\014ed,)f(the)i
-(trailing)d(newline)h(is)g(suppressed.)40 b(If)30 b(the)630
-2092 y(`)p Fs(-e)p Ft(')23 b(option)h(is)e(giv)m(en,)j(in)m
-(terpretation)e(of)h(the)g(follo)m(wing)e(bac)m(kslash-escap)s(ed)h(c)m
-(haracters)630 2202 y(is)32 b(enabled.)47 b(The)32 b(`)p
-Fs(-E)p Ft(')h(option)f(disables)f(the)i(in)m(terpretation)f(of)h
+Fq(arg)8 b Ft(s,)33 b(separated)g(b)m(y)g(spaces,)g(terminated)g(with)f
+(a)h(newline.)47 b(The)32 b(return)630 1983 y(status)f(is)g(alw)m(a)m
+(ys)h(0.)41 b(If)31 b(`)p Fs(-n)p Ft(')f(is)h(sp)s(eci\014ed,)f(the)h
+(trailing)g(newline)g(is)f(suppressed.)40 b(If)30 b(the)630
+2092 y(`)p Fs(-e)p Ft(')23 b(option)i(is)e(giv)m(en,)j(in)m
+(terpretation)f(of)f(the)g(follo)m(wing)h(bac)m(kslash-escap)s(ed)f(c)m
+(haracters)630 2202 y(is)33 b(enabled.)48 b(The)32 b(`)p
+Fs(-E)p Ft(')h(option)g(disables)g(the)g(in)m(terpretation)h(of)f
 (these)g(escap)s(e)g(c)m(harac-)630 2311 y(ters,)42 b(ev)m(en)f(on)e
-(systems)h(where)f(they)h(are)g(in)m(terpreted)f(b)m(y)h(default.)68
-b(The)39 b Fs(xpg_echo)630 2421 y Ft(shell)d(option)i(ma)m(y)h(b)s(e)e
-(used)h(to)h(dynamically)d(determine)h(whether)h(or)g(not)g
+(systems)h(where)f(they)h(are)g(in)m(terpreted)g(b)m(y)g(default.)69
+b(The)39 b Fs(xpg_echo)630 2421 y Ft(shell)f(option)h(ma)m(y)g(b)s(e)e
+(used)h(to)h(dynamically)g(determine)f(whether)g(or)g(not)g
 Fs(echo)f Ft(ex-)630 2531 y(pands)30 b(these)h(escap)s(e)h(c)m
-(haracters)g(b)m(y)f(default.)42 b Fs(echo)30 b Ft(in)m(terprets)h(the)
-g(follo)m(wing)e(escap)s(e)630 2640 y(sequences:)630
-2809 y Fs(\\a)384 b Ft(alert)30 b(\(b)s(ell\))630 2979
+(haracters)g(b)m(y)f(default.)43 b Fs(echo)30 b Ft(in)m(terprets)i(the)
+f(follo)m(wing)h(escap)s(e)630 2640 y(sequences:)630
+2809 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 2979
 y Fs(\\b)384 b Ft(bac)m(kspace)630 3148 y Fs(\\c)g Ft(suppress)28
-b(trailing)h(newline)630 3318 y Fs(\\e)384 b Ft(escap)s(e)630
+b(trailing)k(newline)630 3318 y Fs(\\e)384 b Ft(escap)s(e)630
 3487 y Fs(\\f)g Ft(form)30 b(feed)630 3656 y Fs(\\n)384
-b Ft(new)30 b(line)630 3826 y Fs(\\r)384 b Ft(carriage)31
-b(return)630 3995 y Fs(\\t)384 b Ft(horizon)m(tal)30
-b(tab)630 4164 y Fs(\\v)384 b Ft(v)m(ertical)30 b(tab)630
+b Ft(new)30 b(line)630 3826 y Fs(\\r)384 b Ft(carriage)32
+b(return)630 3995 y Fs(\\t)384 b Ft(horizon)m(tal)32
+b(tab)630 4164 y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630
 4334 y Fs(\\\\)384 b Ft(bac)m(kslash)630 4503 y Fs(\\0)p
-Fj(nnn)240 b Ft(the)32 b(eigh)m(t-bit)g(c)m(haracter)i(whose)e(v)-5
-b(alue)32 b(is)f(the)h(o)s(ctal)h(v)-5 b(alue)31 b Fq(nnn)g
-Ft(\(zero)i(to)1110 4613 y(three)e(o)s(ctal)f(digits\))630
-4782 y Fs(\\)p Fj(nnn)288 b Ft(the)35 b(eigh)m(t-bit)f(c)m(haracter)i
-(whose)e(v)-5 b(alue)34 b(is)g(the)g(o)s(ctal)h(v)-5
-b(alue)34 b Fq(nnn)f Ft(\(one)i(to)1110 4892 y(three)c(o)s(ctal)f
-(digits\))630 5061 y Fs(\\x)p Fj(HH)288 b Ft(the)40 b(eigh)m(t-bit)f(c)
-m(haracter)i(whose)e(v)-5 b(alue)38 b(is)h(the)g(hexadecimal)g(v)-5
-b(alue)39 b Fq(HH)1110 5171 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
-(digits\))150 5340 y Fs(enable)p eop
+Fj(nnn)240 b Ft(the)32 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e(v)-5
+b(alue)33 b(is)f(the)g(o)s(ctal)i(v)-5 b(alue)32 b Fq(nnn)f
+Ft(\(zero)i(to)1110 4613 y(three)e(o)s(ctal)g(digits\))630
+4782 y Fs(\\)p Fj(nnn)288 b Ft(the)35 b(eigh)m(t-bit)h(c)m(haracter)g
+(whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5
+b(alue)35 b Fq(nnn)e Ft(\(one)i(to)1110 4892 y(three)c(o)s(ctal)g
+(digits\))630 5061 y Fs(\\x)p Fj(HH)288 b Ft(the)40 b(eigh)m(t-bit)h(c)
+m(haracter)g(whose)e(v)-5 b(alue)39 b(is)h(the)f(hexadecimal)i(v)-5
+b(alue)40 b Fq(HH)1110 5171 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
+(digits\))150 5340 y Fs(enable)p eop end
 %%Page: 43 49
-43 48 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)28
-b(Builtin)g(Commands)2069 b(43)870 299 y Fs(enable)46
+TeXDict begin 43 48 bop 150 -116 a Ft(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(43)870 299 y Fs(enable)46
 b([-n])h([-p])f([-f)h Fj(filename)11 b Fs(])45 b([-ads])h([)p
-Fj(name)57 b Fs(...)o(])630 429 y Ft(Enable)35 b(and)g(disable)f
-(builtin)f(shell)h(commands.)56 b(Disabling)34 b(a)j(builtin)32
-b(allo)m(ws)j(a)h(disk)630 539 y(command)e(whic)m(h)f(has)h(the)g(same)
-h(name)f(as)h(a)f(shell)f(builtin)d(to)35 b(b)s(e)f(executed)h(without)
-630 649 y(sp)s(ecifying)25 b(a)i(full)e(pathname,)i(ev)m(en)h(though)f
-(the)g(shell)e(normally)g(searc)m(hes)j(for)f(builtins)630
-758 y(b)s(efore)32 b(disk)e(commands.)46 b(If)31 b(`)p
-Fs(-n)p Ft(')h(is)f(used,)h(the)g Fq(name)5 b Ft(s)32
-b(b)s(ecome)h(disabled.)43 b(Otherwise)630 868 y Fq(name)5
-b Ft(s)44 b(are)h(enabled.)81 b(F)-8 b(or)45 b(example,)j(to)d(use)f
-(the)g Fs(test)f Ft(binary)g(found)g(via)g Fs($PATH)630
-977 y Ft(instead)30 b(of)g(the)h(shell)d(builtin)f(v)m(ersion,)j(t)m
-(yp)s(e)h(`)p Fs(enable)e(-n)h(test)p Ft('.)630 1108
-y(If)42 b(the)h(`)p Fs(-p)p Ft(')f(option)g(is)f(supplied,)i(or)f(no)h
-Fq(name)k Ft(argumen)m(ts)c(app)s(ear,)i(a)e(list)e(of)i(shell)630
-1217 y(builtins)34 b(is)j(prin)m(ted.)62 b(With)37 b(no)g(other)h
-(argumen)m(ts,)j(the)d(list)e(consists)h(of)h(all)f(enabled)630
-1327 y(shell)31 b(builtins.)43 b(The)32 b(`)p Fs(-a)p
-Ft(')h(option)f(means)g(to)i(list)d(eac)m(h)j(builtin)29
-b(with)i(an)h(indication)f(of)630 1437 y(whether)f(or)g(not)h(it)f(is)f
-(enabled.)630 1567 y(The)40 b(`)p Fs(-f)p Ft(')g(option)f(means)h(to)h
-(load)f(the)g(new)f(builtin)e(command)j Fq(name)45 b
-Ft(from)40 b(shared)630 1677 y(ob)5 b(ject)27 b Fq(\014lename)p
-Ft(,)f(on)g(systems)g(that)h(supp)s(ort)d(dynamic)h(loading.)38
-b(The)26 b(`)p Fs(-d)p Ft(')g(option)g(will)630 1786
-y(delete)31 b(a)f(builtin)d(loaded)j(with)f(`)p Fs(-f)p
-Ft('.)630 1917 y(If)i(there)g(are)g(no)g(options,)g(a)g(list)f(of)h
-(the)g(shell)e(builtins)f(is)i(displa)m(y)m(ed.)41 b(The)31
-b(`)p Fs(-s)p Ft(')f(option)630 2026 y(restricts)e Fs(enable)f
-Ft(to)i(the)f Fl(posix)g Ft(sp)s(ecial)f(builtins.)37
-b(If)27 b(`)p Fs(-s)p Ft(')i(is)e(used)h(with)f(`)p Fs(-f)p
-Ft(',)i(the)f(new)630 2136 y(builtin)f(b)s(ecomes)k(a)f(sp)s(ecial)f
-(builtin)e(\(see)32 b(Section)e(4.4)h([Sp)s(ecial)e(Builtins],)f(page)j
-(53\).)630 2266 y(The)26 b(return)f(status)h(is)f(zero)i(unless)d(a)j
-Fq(name)k Ft(is)25 b(not)h(a)h(shell)d(builtin)f(or)j(there)g(is)f(an)h
-(error)630 2376 y(loading)j(a)i(new)f(builtin)d(from)j(a)g(shared)g(ob)
-5 b(ject.)150 2527 y Fs(help)870 2658 y(help)47 b([-s])f([)p
-Fj(pattern)11 b Fs(])630 2788 y Ft(Displa)m(y)38 b(helpful)e
-(information)h(ab)s(out)i(builtin)c(commands.)66 b(If)38
-b Fq(pattern)h Ft(is)f(sp)s(eci\014ed,)630 2898 y Fs(help)28
-b Ft(giv)m(es)h(detailed)f(help)f(on)i(all)f(commands)g(matc)m(hing)h
-Fq(pattern)p Ft(,)h(otherwise)e(a)h(list)f(of)630 3007
-y(the)36 b(builtins)c(is)j(prin)m(ted.)55 b(The)35 b(`)p
-Fs(-s)p Ft(')h(option)f(restricts)g(the)h(information)e(displa)m(y)m
-(ed)g(to)630 3117 y(a)e(short)g(usage)h(synopsis.)43
-b(The)32 b(return)f(status)h(is)f(zero)i(unless)d(no)i(command)g(matc)m
+Fj(name)57 b Fs(...)o(])630 429 y Ft(Enable)36 b(and)f(disable)h
+(builtin)g(shell)g(commands.)56 b(Disabling)37 b(a)g(builtin)e(allo)m
+(ws)i(a)f(disk)630 539 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f
+(as)h(a)f(shell)h(builtin)e(to)i(b)s(e)f(executed)h(without)630
+649 y(sp)s(ecifying)27 b(a)g(full)g(pathname,)g(ev)m(en)h(though)f(the)
+g(shell)g(normally)g(searc)m(hes)h(for)f(builtins)630
+758 y(b)s(efore)32 b(disk)f(commands.)46 b(If)31 b(`)p
+Fs(-n)p Ft(')h(is)g(used,)g(the)g Fq(name)5 b Ft(s)32
+b(b)s(ecome)h(disabled.)45 b(Otherwise)630 868 y Fq(name)5
+b Ft(s)44 b(are)h(enabled.)82 b(F)-8 b(or)45 b(example,)k(to)c(use)f
+(the)g Fs(test)f Ft(binary)h(found)f(via)h Fs($PATH)630
+977 y Ft(instead)31 b(of)f(the)h(shell)f(builtin)g(v)m(ersion,)h(t)m
+(yp)s(e)g(`)p Fs(enable)e(-n)h(test)p Ft('.)630 1108
+y(If)42 b(the)h(`)p Fs(-p)p Ft(')f(option)h(is)f(supplied,)j(or)d(no)h
+Fq(name)k Ft(argumen)m(ts)c(app)s(ear,)i(a)e(list)g(of)g(shell)630
+1217 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38 b(no)f(other)h
+(argumen)m(ts,)j(the)d(list)g(consists)g(of)g(all)h(enabled)630
+1327 y(shell)33 b(builtins.)46 b(The)32 b(`)p Fs(-a)p
+Ft(')h(option)g(means)f(to)i(list)f(eac)m(h)h(builtin)e(with)g(an)g
+(indication)i(of)630 1437 y(whether)c(or)g(not)h(it)g(is)f(enabled.)630
+1567 y(The)40 b(`)p Fs(-f)p Ft(')g(option)g(means)g(to)h(load)g(the)f
+(new)f(builtin)h(command)g Fq(name)45 b Ft(from)40 b(shared)630
+1677 y(ob)5 b(ject)27 b Fq(\014lename)p Ft(,)g(on)f(systems)g(that)h
+(supp)s(ort)d(dynamic)i(loading.)40 b(The)26 b(`)p Fs(-d)p
+Ft(')g(option)h(will)630 1786 y(delete)32 b(a)e(builtin)g(loaded)h
+(with)f(`)p Fs(-f)p Ft('.)630 1917 y(If)h(there)g(are)g(no)g(options,)h
+(a)f(list)h(of)f(the)g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)43
+b(The)31 b(`)p Fs(-s)p Ft(')f(option)630 2026 y(restricts)f
+Fs(enable)e Ft(to)i(the)f Fl(posix)g Ft(sp)s(ecial)h(builtins.)40
+b(If)27 b(`)p Fs(-s)p Ft(')i(is)f(used)g(with)g(`)p Fs(-f)p
+Ft(',)h(the)f(new)630 2136 y(builtin)i(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
+(53\).)630 2266 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i
+Fq(name)k Ft(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g
+(error)630 2376 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g
+(ob)5 b(ject.)150 2527 y Fs(help)870 2658 y(help)47 b([-s])f([)p
+Fj(pattern)11 b Fs(])630 2788 y Ft(Displa)m(y)40 b(helpful)e
+(information)h(ab)s(out)g(builtin)f(commands.)66 b(If)38
+b Fq(pattern)h Ft(is)g(sp)s(eci\014ed,)630 2898 y Fs(help)28
+b Ft(giv)m(es)i(detailed)g(help)e(on)h(all)h(commands)e(matc)m(hing)i
+Fq(pattern)p Ft(,)g(otherwise)f(a)g(list)h(of)630 3007
+y(the)36 b(builtins)f(is)h(prin)m(ted.)56 b(The)35 b(`)p
+Fs(-s)p Ft(')h(option)g(restricts)g(the)g(information)g(displa)m(y)m
+(ed)g(to)630 3117 y(a)c(short)g(usage)h(synopsis.)44
+b(The)32 b(return)f(status)h(is)g(zero)h(unless)e(no)h(command)g(matc)m
 (hes)630 3226 y Fq(pattern)p Ft(.)150 3378 y Fs(let)870
 3508 y(let)47 b Fj(expression)55 b Fs([)p Fj(expression)11
-b Fs(])630 3639 y Ft(The)41 b Fs(let)g Ft(builtin)d(allo)m(ws)j
-(arithmetic)f(to)j(b)s(e)d(p)s(erformed)g(on)i(shell)e(v)-5
-b(ariables.)72 b(Eac)m(h)630 3748 y Fq(expression)30
-b Ft(is)g(ev)-5 b(aluated)31 b(according)f(to)i(the)f(rules)f(giv)m(en)
-h(b)s(elo)m(w)f(in)f(Section)i(6.5)h([Shell)630 3858
-y(Arithmetic],)49 b(page)d(70.)87 b(If)45 b(the)g(last)g
-Fq(expression)g Ft(ev)-5 b(aluates)46 b(to)g(0,)k Fs(let)44
-b Ft(returns)g(1;)630 3968 y(otherwise)30 b(0)h(is)e(returned.)150
+b Fs(])630 3639 y Ft(The)41 b Fs(let)g Ft(builtin)g(allo)m(ws)i
+(arithmetic)f(to)h(b)s(e)d(p)s(erformed)g(on)i(shell)g(v)-5
+b(ariables.)74 b(Eac)m(h)630 3748 y Fq(expression)31
+b Ft(is)g(ev)-5 b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en)
+h(b)s(elo)m(w)f(in)f(Section)i(6.5)g([Shell)630 3858
+y(Arithmetic],)51 b(page)46 b(70.)87 b(If)45 b(the)g(last)h
+Fq(expression)g Ft(ev)-5 b(aluates)47 b(to)f(0,)k Fs(let)44
+b Ft(returns)g(1;)630 3968 y(otherwise)31 b(0)g(is)f(returned.)150
 4119 y Fs(local)870 4249 y(local)46 b([)p Fj(option)11
 b Fs(])45 b Fj(name)11 b Fs([=)p Fj(value)g Fs(])44 b(...)630
-4380 y Ft(F)-8 b(or)27 b(eac)m(h)g(argumen)m(t,)g(a)f(lo)s(cal)f(v)-5
-b(ariable)25 b(named)g Fq(name)31 b Ft(is)25 b(created,)j(and)d
-(assigned)g Fq(v)-5 b(alue)p Ft(.)630 4489 y(The)37 b
-Fq(option)g Ft(can)g(b)s(e)g(an)m(y)h(of)f(the)h(options)f(accepted)h
+4380 y Ft(F)-8 b(or)27 b(eac)m(h)g(argumen)m(t,)g(a)f(lo)s(cal)h(v)-5
+b(ariable)27 b(named)e Fq(name)31 b Ft(is)26 b(created,)i(and)d
+(assigned)h Fq(v)-5 b(alue)p Ft(.)630 4489 y(The)37 b
+Fq(option)h Ft(can)f(b)s(e)g(an)m(y)h(of)f(the)h(options)g(accepted)g
 (b)m(y)g Fs(declare)p Ft(.)59 b Fs(local)36 b Ft(can)i(only)630
-4599 y(b)s(e)j(used)h(within)d(a)k(function;)k(it)41
-b(mak)m(es)i(the)f(v)-5 b(ariable)41 b Fq(name)48 b Ft(ha)m(v)m(e)43
-b(a)f(visible)e(scop)s(e)630 4709 y(restricted)e(to)h(that)g(function)e
-(and)g(its)h(c)m(hildren.)62 b(The)38 b(return)f(status)h(is)g(zero)h
-(unless)630 4818 y Fs(local)g Ft(is)g(used)h(outside)f(a)i(function,)g
-(an)f(in)m(v)-5 b(alid)38 b Fq(name)46 b Ft(is)39 b(supplied,)h(or)g
-Fq(name)45 b Ft(is)40 b(a)630 4928 y(readonly)29 b(v)-5
+4599 y(b)s(e)j(used)h(within)f(a)i(function;)48 b(it)42
+b(mak)m(es)h(the)f(v)-5 b(ariable)43 b Fq(name)48 b Ft(ha)m(v)m(e)43
+b(a)f(visible)h(scop)s(e)630 4709 y(restricted)c(to)g(that)g(function)f
+(and)f(its)i(c)m(hildren.)64 b(The)38 b(return)f(status)h(is)h(zero)g
+(unless)630 4818 y Fs(local)g Ft(is)h(used)g(outside)g(a)h(function,)h
+(an)e(in)m(v)-5 b(alid)41 b Fq(name)46 b Ft(is)40 b(supplied,)i(or)e
+Fq(name)45 b Ft(is)c(a)630 4928 y(readonly)30 b(v)-5
 b(ariable.)150 5079 y Fs(logout)870 5210 y(logout)46
-b([)p Fj(n)11 b Fs(])630 5340 y Ft(Exit)30 b(a)h(login)e(shell,)g
-(returning)f(a)j(status)g(of)f Fq(n)g Ft(to)h(the)g(shell's)d(paren)m
-(t.)p eop
+b([)p Fj(n)11 b Fs(])630 5340 y Ft(Exit)31 b(a)g(login)g(shell,)g
+(returning)e(a)i(status)g(of)f Fq(n)g Ft(to)h(the)g(shell's)f(paren)m
+(t.)p eop end
 %%Page: 44 50
-44 49 bop 150 -116 a Ft(44)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fs(printf)870 445 y(printf)46 b Fj(format)57 b
-Fs([)p Fj(arguments)11 b Fs(])630 591 y Ft(W)-8 b(rite)26
-b(the)h(formatted)f Fq(argumen)m(ts)k Ft(to)d(the)f(standard)f(output)h
-(under)e(the)i(con)m(trol)h(of)f(the)630 701 y Fq(format)p
-Ft(.)41 b(The)28 b Fq(format)j Ft(is)d(a)h(c)m(haracter)i(string)c
-(whic)m(h)h(con)m(tains)h(three)g(t)m(yp)s(es)g(of)g(ob)5
-b(jects:)630 810 y(plain)26 b(c)m(haracters,)31 b(whic)m(h)c(are)i
-(simply)d(copied)i(to)i(standard)d(output,)i(c)m(haracter)h(escap)s(e)
-630 920 y(sequences,)g(whic)m(h)e(are)h(con)m(v)m(erted)i(and)d(copied)
-h(to)g(the)h(standard)e(output,)h(and)g(format)630 1029
-y(sp)s(eci\014cations,)37 b(eac)m(h)g(of)g(whic)m(h)e(causes)h(prin)m
-(ting)e(of)j(the)f(next)h(successiv)m(e)f Fq(argumen)m(t)p
-Ft(.)630 1139 y(In)31 b(addition)f(to)j(the)e(standard)g
+TeXDict begin 44 49 bop 150 -116 a Ft(44)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(printf)870 445 y(printf)46
+b Fj(format)57 b Fs([)p Fj(arguments)11 b Fs(])630 591
+y Ft(W)-8 b(rite)27 b(the)g(formatted)f Fq(argumen)m(ts)k
+Ft(to)d(the)f(standard)f(output)h(under)e(the)i(con)m(trol)i(of)e(the)
+630 701 y Fq(format)p Ft(.)41 b(The)28 b Fq(format)j
+Ft(is)e(a)g(c)m(haracter)i(string)d(whic)m(h)h(con)m(tains)h(three)f(t)
+m(yp)s(es)g(of)g(ob)5 b(jects:)630 810 y(plain)28 b(c)m(haracters,)j
+(whic)m(h)d(are)h(simply)f(copied)h(to)h(standard)d(output,)i(c)m
+(haracter)h(escap)s(e)630 920 y(sequences,)g(whic)m(h)f(are)g(con)m(v)m
+(erted)i(and)d(copied)i(to)f(the)h(standard)e(output,)h(and)g(format)
+630 1029 y(sp)s(eci\014cations,)39 b(eac)m(h)e(of)g(whic)m(h)f(causes)g
+(prin)m(ting)g(of)h(the)f(next)h(successiv)m(e)g Fq(argumen)m(t)p
+Ft(.)630 1139 y(In)31 b(addition)h(to)h(the)e(standard)g
 Fs(printf\(1\))f Ft(formats,)i(`)p Fs(\045b)p Ft(')g(causes)g
-Fs(printf)e Ft(to)j(expand)630 1249 y(bac)m(kslash)38
-b(escap)s(e)h(sequences)f(in)g(the)g(corresp)s(onding)e
-Fq(argumen)m(t)p Ft(,)41 b(\(except)f(that)f(`)p Fs(\\c)p
-Ft(')630 1358 y(terminates)k(output,)k(bac)m(kslashes)c(in)f(`)p
-Fs(\\')p Ft(',)47 b(`)p Fs(\\")p Ft(',)g(and)c(`)p Fs(\\?)p
-Ft(')g(are)h(not)g(remo)m(v)m(ed,)k(and)630 1468 y(o)s(ctal)24
-b(escap)s(es)g(b)s(eginning)d(with)h(`)p Fs(\\0)p Ft(')i(ma)m(y)g(con)m
-(tain)g(up)f(to)h(four)f(digits\),)h(and)f(`)p Fs(\045q)p
+Fs(printf)e Ft(to)j(expand)630 1249 y(bac)m(kslash)39
+b(escap)s(e)g(sequences)f(in)h(the)f(corresp)s(onding)f
+Fq(argumen)m(t)p Ft(,)k(\(except)f(that)f(`)p Fs(\\c)p
+Ft(')630 1358 y(terminates)44 b(output,)j(bac)m(kslashes)d(in)f(`)p
+Fs(\\')p Ft(',)k(`)p Fs(\\")p Ft(',)g(and)c(`)p Fs(\\?)p
+Ft(')g(are)h(not)g(remo)m(v)m(ed,)k(and)630 1468 y(o)s(ctal)25
+b(escap)s(es)f(b)s(eginning)f(with)g(`)p Fs(\\0)p Ft(')h(ma)m(y)g(con)m
+(tain)h(up)e(to)h(four)f(digits\),)j(and)d(`)p Fs(\045q)p
 Ft(')h(causes)630 1577 y Fs(printf)31 b Ft(to)i(output)f(the)h(corresp)
-s(onding)e Fq(argumen)m(t)k Ft(in)c(a)i(format)g(that)g(can)g(b)s(e)f
-(reused)630 1687 y(as)f(shell)d(input.)630 1833 y(The)j
-Fq(format)i Ft(is)e(reused)f(as)i(necessary)f(to)i(consume)e(all)f(of)h
+s(onding)f Fq(argumen)m(t)j Ft(in)d(a)h(format)g(that)g(can)g(b)s(e)f
+(reused)630 1687 y(as)f(shell)f(input.)630 1833 y(The)h
+Fq(format)i Ft(is)f(reused)e(as)i(necessary)f(to)i(consume)e(all)h(of)f
 (the)h Fq(argumen)m(ts)p Ft(.)44 b(If)30 b(the)i Fq(for-)630
-1943 y(mat)c Ft(requires)d(more)h Fq(argumen)m(ts)k Ft(than)25
-b(are)i(supplied,)c(the)j(extra)h(format)f(sp)s(eci\014cations)630
-2052 y(b)s(eha)m(v)m(e)j(as)g(if)e(a)i(zero)g(v)-5 b(alue)28
-b(or)h(n)m(ull)d(string,)i(as)h(appropriate,)f(had)g(b)s(een)g
-(supplied.)36 b(The)630 2162 y(return)29 b(v)-5 b(alue)30
-b(is)g(zero)h(on)f(success,)h(non-zero)g(on)f(failure.)150
+1943 y(mat)c Ft(requires)e(more)g Fq(argumen)m(ts)k Ft(than)25
+b(are)i(supplied,)e(the)h(extra)h(format)f(sp)s(eci\014cations)630
+2052 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g(v)-5 b(alue)29
+b(or)g(n)m(ull)f(string,)h(as)g(appropriate,)g(had)f(b)s(een)g
+(supplied.)38 b(The)630 2162 y(return)29 b(v)-5 b(alue)31
+b(is)g(zero)g(on)f(success,)h(non-zero)g(on)f(failure.)150
 2345 y Fs(read)870 2491 y(read)47 b([-ers])f([-a)h Fj(aname)11
 b Fs(])45 b([-d)i Fj(delim)11 b Fs(])46 b([-n)h Fj(nchars)11
 b Fs(])45 b([-p)i Fj(prompt)11 b Fs(])45 b([-t)i Fj(time-)870
 2600 y(out)11 b Fs(])46 b([-u)h Fj(fd)11 b Fs(])46 b([)p
-Fj(name)57 b Fs(...])630 2746 y Ft(One)26 b(line)f(is)h(read)g(from)h
-(the)f(standard)g(input,)g(or)h(from)f(the)h(\014le)e(descriptor)h
-Fq(fd)j Ft(supplied)630 2856 y(as)37 b(an)g(argumen)m(t)h(to)f(the)h(`)
-p Fs(-u)p Ft(')e(option,)j(and)d(the)i(\014rst)e(w)m(ord)g(is)g
-(assigned)h(to)g(the)h(\014rst)630 2966 y Fq(name)p Ft(,)29
+Fj(name)57 b Fs(...])630 2746 y Ft(One)26 b(line)h(is)g(read)f(from)h
+(the)f(standard)g(input,)h(or)g(from)f(the)h(\014le)f(descriptor)h
+Fq(fd)i Ft(supplied)630 2856 y(as)37 b(an)g(argumen)m(t)h(to)f(the)h(`)
+p Fs(-u)p Ft(')e(option,)k(and)c(the)i(\014rst)e(w)m(ord)g(is)h
+(assigned)h(to)f(the)h(\014rst)630 2966 y Fq(name)p Ft(,)29
 b(the)f(second)h(w)m(ord)e(to)i(the)g(second)f Fq(name)p
-Ft(,)h(and)e(so)i(on,)g(with)e(lefto)m(v)m(er)i(w)m(ords)f(and)630
-3075 y(their)f(in)m(terv)m(ening)g(separators)i(assigned)e(to)i(the)f
-(last)g Fq(name)p Ft(.)40 b(If)27 b(there)i(are)f(few)m(er)g(w)m(ords)
-630 3185 y(read)44 b(from)f(the)g(input)f(stream)i(than)g(names,)j(the)
-c(remaining)f(names)i(are)g(assigned)630 3294 y(empt)m(y)31
-b(v)-5 b(alues.)40 b(The)30 b(c)m(haracters)i(in)d(the)i(v)-5
-b(alue)30 b(of)h(the)f Fs(IFS)g Ft(v)-5 b(ariable)29
-b(are)i(used)f(to)h(split)630 3404 y(the)37 b(line)f(in)m(to)h(w)m
-(ords.)61 b(The)36 b(bac)m(kslash)h(c)m(haracter)i(`)p
+Ft(,)h(and)e(so)i(on,)g(with)f(lefto)m(v)m(er)i(w)m(ords)e(and)630
+3075 y(their)g(in)m(terv)m(ening)h(separators)g(assigned)f(to)h(the)f
+(last)h Fq(name)p Ft(.)40 b(If)27 b(there)i(are)f(few)m(er)g(w)m(ords)
+630 3185 y(read)44 b(from)f(the)g(input)g(stream)h(than)g(names,)j(the)
+c(remaining)h(names)g(are)g(assigned)630 3294 y(empt)m(y)31
+b(v)-5 b(alues.)41 b(The)30 b(c)m(haracters)i(in)e(the)h(v)-5
+b(alue)31 b(of)g(the)f Fs(IFS)g Ft(v)-5 b(ariable)31
+b(are)g(used)f(to)h(split)630 3404 y(the)37 b(line)h(in)m(to)g(w)m
+(ords.)61 b(The)36 b(bac)m(kslash)i(c)m(haracter)h(`)p
 Fs(\\)p Ft(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m(e)h(an)m(y)630
-3513 y(sp)s(ecial)f(meaning)h(for)g(the)g(next)h(c)m(haracter)h(read)e
-(and)g(for)g(line)f(con)m(tin)m(uation.)67 b(If)39 b(no)630
-3623 y(names)28 b(are)h(supplied,)d(the)i(line)f(read)i(is)e(assigned)h
-(to)h(the)f(v)-5 b(ariable)27 b Fs(REPLY)p Ft(.)39 b(The)28
-b(return)630 3733 y(co)s(de)i(is)e(zero,)j(unless)d(end-of-\014le)h(is)
-f(encoun)m(tered,)i Fs(read)f Ft(times)g(out,)h(or)f(an)h(in)m(v)-5
-b(alid)27 b(\014le)630 3842 y(descriptor)34 b(is)h(supplied)d(as)k(the)
-f(argumen)m(t)h(to)g(`)p Fs(-u)p Ft('.)56 b(Options,)36
-b(if)e(supplied,)g(ha)m(v)m(e)j(the)630 3952 y(follo)m(wing)29
-b(meanings:)630 4134 y Fs(-a)h Fj(aname)114 b Ft(The)34
-b(w)m(ords)f(are)i(assigned)e(to)i(sequen)m(tial)f(indices)e(of)i(the)g
+3513 y(sp)s(ecial)h(meaning)g(for)f(the)g(next)h(c)m(haracter)h(read)e
+(and)g(for)g(line)h(con)m(tin)m(uation.)69 b(If)39 b(no)630
+3623 y(names)28 b(are)h(supplied,)f(the)g(line)h(read)g(is)f(assigned)h
+(to)g(the)f(v)-5 b(ariable)29 b Fs(REPLY)p Ft(.)39 b(The)28
+b(return)630 3733 y(co)s(de)i(is)f(zero,)i(unless)e(end-of-\014le)h(is)
+f(encoun)m(tered,)h Fs(read)f Ft(times)h(out,)g(or)f(an)h(in)m(v)-5
+b(alid)30 b(\014le)630 3842 y(descriptor)35 b(is)h(supplied)e(as)i(the)
+f(argumen)m(t)h(to)g(`)p Fs(-u)p Ft('.)56 b(Options,)37
+b(if)e(supplied,)h(ha)m(v)m(e)h(the)630 3952 y(follo)m(wing)32
+b(meanings:)630 4134 y Fs(-a)e Fj(aname)114 b Ft(The)34
+b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m(tial)h(indices)e(of)g(the)g
 (arra)m(y)h(v)-5 b(ariable)1110 4244 y Fq(aname)p Ft(,)29
-b(starting)g(at)g(0.)40 b(All)27 b(elemen)m(ts)i(are)f(remo)m(v)m(ed)i
-(from)d Fq(aname)34 b Ft(b)s(efore)1110 4354 y(the)d(assignmen)m(t.)40
+b(starting)h(at)f(0.)40 b(All)29 b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i
+(from)d Fq(aname)34 b Ft(b)s(efore)1110 4354 y(the)d(assignmen)m(t.)41
 b(Other)30 b Fq(name)36 b Ft(argumen)m(ts)30 b(are)h(ignored.)630
 4536 y Fs(-d)f Fj(delim)114 b Ft(The)41 b(\014rst)h(c)m(haracter)h(of)f
-Fq(delim)e Ft(is)h(used)h(to)g(terminate)g(the)g(input)e(line,)1110
+Fq(delim)g Ft(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110
 4646 y(rather)30 b(than)g(newline.)630 4829 y Fs(-e)384
-b Ft(Readline)26 b(\(see)j(Chapter)e(8)h([Command)f(Line)f(Editing],)h
-(page)h(83\))h(is)e(used)1110 4938 y(to)k(obtain)f(the)h(line.)630
+b Ft(Readline)28 b(\(see)h(Chapter)e(8)h([Command)f(Line)g(Editing],)i
+(page)f(83\))h(is)f(used)1110 4938 y(to)j(obtain)g(the)g(line.)630
 5121 y Fs(-n)f Fj(nchars)1110 5230 y Fs(read)38 b Ft(returns)f(after)j
-(reading)e Fq(nc)m(hars)k Ft(c)m(haracters)e(rather)f(than)g(w)m
-(aiting)1110 5340 y(for)30 b(a)h(complete)g(line)d(of)j(input.)p
-eop
+(reading)f Fq(nc)m(hars)j Ft(c)m(haracters)e(rather)f(than)g(w)m
+(aiting)1110 5340 y(for)30 b(a)h(complete)h(line)e(of)h(input.)p
+eop end
 %%Page: 45 51
-45 50 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)28
-b(Builtin)g(Commands)2069 b(45)630 299 y Fs(-p)30 b Fj(prompt)1110
-408 y Ft(Displa)m(y)36 b Fq(prompt)p Ft(,)i(without)d(a)i(trailing)e
-(newline,)i(b)s(efore)f(attempting)h(to)1110 518 y(read)g(an)m(y)h
-(input.)59 b(The)37 b(prompt)g(is)f(displa)m(y)m(ed)g(only)g(if)g
-(input)g(is)g(coming)1110 628 y(from)30 b(a)h(terminal.)630
-794 y Fs(-r)384 b Ft(If)21 b(this)g(option)g(is)f(giv)m(en,)k(bac)m
-(kslash)d(do)s(es)g(not)h(act)h(as)f(an)f(escap)s(e)h(c)m(haracter.)
-1110 904 y(The)30 b(bac)m(kslash)h(is)f(considered)g(to)i(b)s(e)e(part)
-h(of)g(the)g(line.)41 b(In)30 b(particular,)g(a)1110
-1013 y(bac)m(kslash-newline)e(pair)h(ma)m(y)i(not)g(b)s(e)f(used)f(as)i
-(a)g(line)d(con)m(tin)m(uation.)630 1180 y Fs(-s)384
-b Ft(Silen)m(t)26 b(mo)s(de.)40 b(If)27 b(input)e(is)i(coming)g(from)g
-(a)h(terminal,)f(c)m(haracters)i(are)f(not)1110 1289
+TeXDict begin 45 50 bop 150 -116 a Ft(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(45)630 299 y Fs(-p)30
+b Fj(prompt)1110 408 y Ft(Displa)m(y)38 b Fq(prompt)p
+Ft(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d(attempting)i(to)
+1110 518 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m
+(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 628 y(from)30
+b(a)h(terminal.)630 794 y Fs(-r)384 b Ft(If)21 b(this)h(option)g(is)f
+(giv)m(en,)k(bac)m(kslash)d(do)s(es)f(not)h(act)h(as)f(an)f(escap)s(e)h
+(c)m(haracter.)1110 904 y(The)30 b(bac)m(kslash)i(is)f(considered)g(to)
+h(b)s(e)e(part)h(of)g(the)g(line.)43 b(In)30 b(particular,)i(a)1110
+1013 y(bac)m(kslash-newline)f(pair)f(ma)m(y)h(not)g(b)s(e)f(used)f(as)i
+(a)g(line)f(con)m(tin)m(uation.)630 1180 y Fs(-s)384
+b Ft(Silen)m(t)28 b(mo)s(de.)40 b(If)27 b(input)f(is)i(coming)g(from)f
+(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110 1289
 y(ec)m(ho)s(ed.)630 1456 y Fs(-t)i Fj(timeout)1110 1565
-y Ft(Cause)42 b Fs(read)g Ft(to)h(time)g(out)g(and)f(return)f(failure)g
-(if)h(a)h(complete)g(line)e(of)1110 1675 y(input)25 b(is)h(not)i(read)f
-(within)d Fq(timeout)29 b Ft(seconds.)40 b(This)25 b(option)i(has)f(no)
-h(e\013ect)1110 1784 y(if)i Fs(read)h Ft(is)f(not)i(reading)e(input)f
-(from)i(the)h(terminal)e(or)h(a)h(pip)s(e.)630 1951 y
-Fs(-u)f Fj(fd)258 b Ft(Read)31 b(input)d(from)i(\014le)f(descriptor)h
+y Ft(Cause)42 b Fs(read)g Ft(to)h(time)h(out)f(and)f(return)f(failure)i
+(if)g(a)g(complete)h(line)f(of)1110 1675 y(input)26 b(is)h(not)h(read)f
+(within)f Fq(timeout)k Ft(seconds.)40 b(This)26 b(option)i(has)e(no)h
+(e\013ect)1110 1784 y(if)j Fs(read)g Ft(is)g(not)h(reading)f(input)f
+(from)h(the)h(terminal)g(or)f(a)h(pip)s(e.)630 1951 y
+Fs(-u)f Fj(fd)258 b Ft(Read)31 b(input)e(from)h(\014le)g(descriptor)h
 Fq(fd)p Ft(.)150 2117 y Fs(shopt)870 2255 y(shopt)46
 b([-pqsu])g([-o])h([)p Fj(optname)56 b Fs(...)o(])630
-2393 y Ft(T)-8 b(oggle)46 b(the)e(v)-5 b(alues)44 b(of)h(v)-5
-b(ariables)43 b(con)m(trolling)h(optional)g(shell)e(b)s(eha)m(vior.)83
-b(With)44 b(no)630 2503 y(options,)31 b(or)g(with)f(the)h(`)p
-Fs(-p)p Ft(')g(option,)g(a)h(list)d(of)j(all)e(settable)h(options)g(is)
-f(displa)m(y)m(ed,)g(with)630 2612 y(an)k(indication)f(of)i(whether)f
-(or)g(not)h(eac)m(h)h(is)d(set.)54 b(The)34 b(`)p Fs(-p)p
-Ft(')h(option)f(causes)h(output)f(to)630 2722 y(b)s(e)i(displa)m(y)m
-(ed)f(in)f(a)j(form)f(that)h(ma)m(y)g(b)s(e)e(reused)h(as)g(input.)57
-b(Other)36 b(options)f(ha)m(v)m(e)j(the)630 2832 y(follo)m(wing)29
-b(meanings:)630 2998 y Fs(-s)384 b Ft(Enable)29 b(\(set\))j(eac)m(h)f
-Fq(optname)p Ft(.)630 3164 y Fs(-u)384 b Ft(Disable)29
-b(\(unset\))i(eac)m(h)h Fq(optname)p Ft(.)630 3331 y
-Fs(-q)384 b Ft(Suppresses)28 b(normal)g(output;)i(the)g(return)e
-(status)i(indicates)f(whether)g(the)1110 3440 y Fq(optname)37
-b Ft(is)30 b(set)i(or)f(unset.)43 b(If)31 b(m)m(ultiple)e
+2393 y Ft(T)-8 b(oggle)47 b(the)d(v)-5 b(alues)45 b(of)g(v)-5
+b(ariables)45 b(con)m(trolling)i(optional)f(shell)e(b)s(eha)m(vior.)84
+b(With)45 b(no)630 2503 y(options,)32 b(or)f(with)g(the)g(`)p
+Fs(-p)p Ft(')g(option,)h(a)g(list)f(of)h(all)g(settable)g(options)g(is)
+f(displa)m(y)m(ed,)h(with)630 2612 y(an)i(indication)i(of)f(whether)f
+(or)g(not)h(eac)m(h)h(is)e(set.)54 b(The)34 b(`)p Fs(-p)p
+Ft(')h(option)g(causes)g(output)f(to)630 2722 y(b)s(e)i(displa)m(y)m
+(ed)h(in)e(a)i(form)f(that)h(ma)m(y)g(b)s(e)e(reused)h(as)g(input.)58
+b(Other)36 b(options)g(ha)m(v)m(e)i(the)630 2832 y(follo)m(wing)32
+b(meanings:)630 2998 y Fs(-s)384 b Ft(Enable)30 b(\(set\))i(eac)m(h)f
+Fq(optname)p Ft(.)630 3164 y Fs(-u)384 b Ft(Disable)31
+b(\(unset\))g(eac)m(h)h Fq(optname)p Ft(.)630 3331 y
+Fs(-q)384 b Ft(Suppresses)28 b(normal)h(output;)h(the)g(return)e
+(status)i(indicates)h(whether)e(the)1110 3440 y Fq(optname)37
+b Ft(is)31 b(set)h(or)f(unset.)43 b(If)31 b(m)m(ultiple)h
 Fq(optname)37 b Ft(argumen)m(ts)31 b(are)h(giv)m(en)1110
-3550 y(with)42 b(`)p Fs(-q)p Ft(',)k(the)d(return)f(status)h(is)f(zero)
-i(if)e(all)f Fq(optnames)47 b Ft(are)d(enabled;)1110
-3660 y(non-zero)31 b(otherwise.)630 3826 y Fs(-o)384
-b Ft(Restricts)41 b(the)h(v)-5 b(alues)41 b(of)g Fq(optname)47
-b Ft(to)42 b(b)s(e)f(those)h(de\014ned)e(for)h(the)h(`)p
-Fs(-o)p Ft(')1110 3936 y(option)20 b(to)i(the)f Fs(set)f
-Ft(builtin)d(\(see)22 b(Section)e(4.3)i([The)e(Set)h(Builtin],)g(page)g
-(50\).)630 4102 y(If)29 b(either)h(`)p Fs(-s)p Ft(')g(or)g(`)p
-Fs(-u)p Ft(')f(is)g(used)h(with)e(no)i Fq(optname)35
-b Ft(argumen)m(ts,)c(the)f(displa)m(y)e(is)h(limited)630
-4212 y(to)i(those)g(options)f(whic)m(h)f(are)i(set)f(or)h(unset,)f
-(resp)s(ectiv)m(ely)-8 b(.)630 4350 y(Unless)29 b(otherwise)h(noted,)h
-(the)g Fs(shopt)d Ft(options)i(are)h(disabled)d(\(o\013)7
-b(\))32 b(b)m(y)e(default.)630 4488 y(The)d(return)f(status)i(when)f
-(listing)e(options)i(is)f(zero)j(if)d(all)h Fq(optnames)k
-Ft(are)d(enabled,)f(non-)630 4597 y(zero)40 b(otherwise.)65
-b(When)39 b(setting)g(or)g(unsetting)f(options,)i(the)f(return)f
-(status)h(is)f(zero)630 4707 y(unless)29 b(an)h Fq(optname)36
-b Ft(is)29 b(not)i(a)g(v)-5 b(alid)28 b(shell)h(option.)630
-4845 y(The)h(list)f(of)h Fs(shopt)f Ft(options)h(is:)630
-5011 y Fs(cdable_vars)1110 5121 y Ft(If)k(this)g(is)g(set,)j(an)e
-(argumen)m(t)g(to)h(the)f Fs(cd)f Ft(builtin)e(command)i(that)i(is)e
-(not)1110 5230 y(a)d(directory)f(is)g(assumed)g(to)h(b)s(e)f(the)h
-(name)f(of)h(a)g(v)-5 b(ariable)29 b(whose)i(v)-5 b(alue)30
-b(is)1110 5340 y(the)h(directory)e(to)j(c)m(hange)f(to.)p
-eop
+3550 y(with)43 b(`)p Fs(-q)p Ft(',)j(the)d(return)f(status)h(is)g(zero)
+h(if)f(all)g Fq(optnames)k Ft(are)d(enabled;)1110 3660
+y(non-zero)31 b(otherwise.)630 3826 y Fs(-o)384 b Ft(Restricts)42
+b(the)g(v)-5 b(alues)42 b(of)f Fq(optname)47 b Ft(to)42
+b(b)s(e)f(those)h(de\014ned)e(for)h(the)h(`)p Fs(-o)p
+Ft(')1110 3936 y(option)21 b(to)h(the)f Fs(set)f Ft(builtin)g(\(see)i
+(Section)f(4.3)h([The)e(Set)h(Builtin],)j(page)d(50\).)630
+4102 y(If)29 b(either)i(`)p Fs(-s)p Ft(')f(or)g(`)p Fs(-u)p
+Ft(')f(is)h(used)g(with)f(no)h Fq(optname)35 b Ft(argumen)m(ts,)c(the)f
+(displa)m(y)g(is)g(limited)630 4212 y(to)h(those)g(options)g(whic)m(h)f
+(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m(ely)-8 b(.)630
+4350 y(Unless)30 b(otherwise)h(noted,)g(the)g Fs(shopt)d
+Ft(options)j(are)g(disabled)f(\(o\013)7 b(\))32 b(b)m(y)e(default.)630
+4488 y(The)d(return)f(status)i(when)f(listing)h(options)g(is)f(zero)i
+(if)e(all)i Fq(optnames)i Ft(are)d(enabled,)g(non-)630
+4597 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 4707
+y(unless)30 b(an)g Fq(optname)36 b Ft(is)30 b(not)h(a)g(v)-5
+b(alid)30 b(shell)h(option.)630 4845 y(The)f(list)h(of)f
+Fs(shopt)f Ft(options)i(is:)630 5011 y Fs(cdable_vars)1110
+5121 y Ft(If)j(this)h(is)g(set,)i(an)e(argumen)m(t)g(to)h(the)f
+Fs(cd)f Ft(builtin)h(command)f(that)i(is)f(not)1110 5230
+y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h(name)f(of)h(a)g(v)
+-5 b(ariable)31 b(whose)g(v)-5 b(alue)31 b(is)1110 5340
+y(the)g(directory)f(to)i(c)m(hange)f(to.)p eop end
 %%Page: 46 52
-46 51 bop 150 -116 a Ft(46)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y Fs(cdspell)144 b Ft(If)27 b(set,)h(minor)e(errors)g(in)g(the)h
-(sp)s(elling)e(of)i(a)g(directory)g(comp)s(onen)m(t)g(in)f(a)i
-Fs(cd)1110 408 y Ft(command)i(will)e(b)s(e)i(corrected.)43
-b(The)30 b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110
-518 y(c)m(haracters,)46 b(a)c(missing)d(c)m(haracter,)47
-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)24 b(is)e(found,)h(the)h(corrected)g
-(path)f(is)f(prin)m(ted,)h(and)g(the)g(command)1110 737
-y(pro)s(ceeds.)40 b(This)29 b(option)h(is)f(only)h(used)f(b)m(y)h(in)m
-(teractiv)m(e)i(shells.)630 894 y Fs(checkhash)1110 1004
-y Ft(If)d(this)g(is)g(set,)h(Bash)g(c)m(hec)m(ks)h(that)g(a)f(command)f
-(found)g(in)f(the)i(hash)f(table)1110 1114 y(exists)j(b)s(efore)g
-(trying)g(to)i(execute)g(it.)47 b(If)32 b(a)h(hashed)e(command)i(no)f
-(longer)1110 1223 y(exists,)e(a)h(normal)e(path)h(searc)m(h)h(is)f(p)s
-(erformed.)630 1380 y Fs(checkwinsize)1110 1490 y Ft(If)41
-b(set,)k(Bash)c(c)m(hec)m(ks)i(the)f(windo)m(w)d(size)j(after)g(eac)m
-(h)g(command)f(and,)j(if)1110 1600 y(necessary)-8 b(,)31
-b(up)s(dates)f(the)g(v)-5 b(alues)30 b(of)h Fs(LINES)e
-Ft(and)g Fs(COLUMNS)p Ft(.)630 1757 y Fs(cmdhist)144
-b Ft(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m(v)m(e)g(all)e(lines)f
-(of)i(a)h(m)m(ultiple-line)30 b(command)1110 1866 y(in)g(the)h(same)g
-(history)f(en)m(try)-8 b(.)42 b(This)29 b(allo)m(ws)h(easy)i
-(re-editing)e(of)h(m)m(ulti-line)1110 1976 y(commands.)630
-2133 y Fs(dotglob)144 b Ft(If)27 b(set,)i(Bash)f(includes)e
-(\014lenames)h(b)s(eginning)e(with)h(a)i(`.')41 b(in)26
-b(the)i(results)f(of)1110 2243 y(\014lename)j(expansion.)630
-2400 y Fs(execfail)96 b Ft(If)24 b(this)g(is)f(set,)k(a)e(non-in)m
-(teractiv)m(e)g(shell)e(will)e(not)k(exit)g(if)e(it)h(cannot)i(execute)
-1110 2510 y(the)i(\014le)f(sp)s(eci\014ed)g(as)h(an)g(argumen)m(t)g(to)
-h(the)f Fs(exec)f Ft(builtin)e(command.)39 b(An)1110
-2619 y(in)m(teractiv)m(e)31 b(shell)e(do)s(es)h(not)g(exit)h(if)e
-Fs(exec)g Ft(fails.)630 2777 y Fs(expand_aliases)1110
-2886 y Ft(If)j(set,)h(aliases)e(are)i(expanded)e(as)h(describ)s(ed)e(b)
-s(elo)m(w)h(under)g(Aliases,)g(Sec-)1110 2996 y(tion)37
-b(6.6)i([Aliases],)h(page)f(71.)64 b(This)36 b(option)h(is)g(enabled)g
-(b)m(y)h(default)f(for)1110 3105 y(in)m(teractiv)m(e)31
+TeXDict begin 46 51 bop 150 -116 a Ft(46)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y Fs(cdspell)144 b Ft(If)27
+b(set,)h(minor)f(errors)f(in)h(the)g(sp)s(elling)h(of)f(a)g(directory)h
+(comp)s(onen)m(t)f(in)g(a)h Fs(cd)1110 408 y Ft(command)i(will)h(b)s(e)
+f(corrected.)43 b(The)30 b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h
+(transp)s(osed)1110 518 y(c)m(haracters,)46 b(a)c(missing)f(c)m
+(haracter,)47 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 894 y Fs(checkhash)1110
+1004 y Ft(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 1114
+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 1223
+y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630
+1380 y Fs(checkwinsize)1110 1490 y Ft(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 1600 y(necessary)-8 b(,)31 b(up)s(dates)f(the)g(v)-5
+b(alues)31 b(of)g Fs(LINES)e Ft(and)g Fs(COLUMNS)p Ft(.)630
+1757 y Fs(cmdhist)144 b Ft(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
+1866 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
+1976 y(commands.)630 2133 y Fs(dotglob)144 b Ft(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 2243 y(\014lename)j(expansion.)630
+2400 y Fs(execfail)96 b Ft(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 2510 y(the)i(\014le)g(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to)
+h(the)f Fs(exec)f Ft(builtin)h(command.)39 b(An)1110
+2619 y(in)m(teractiv)m(e)33 b(shell)e(do)s(es)f(not)g(exit)i(if)e
+Fs(exec)f Ft(fails.)630 2777 y Fs(expand_aliases)1110
+2886 y Ft(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 2996 y(tion)38
+b(6.6)h([Aliases],)j(page)d(71.)64 b(This)37 b(option)h(is)g(enabled)g
+(b)m(y)g(default)g(for)1110 3105 y(in)m(teractiv)m(e)33
 b(shells.)630 3263 y Fs(extdebug)96 b Ft(If)30 b(set,)h(b)s(eha)m(vior)
-f(in)m(tended)f(for)h(use)g(b)m(y)g(debuggers)g(is)g(enabled:)1159
-3396 y(1.)61 b(The)32 b(`)p Fs(-F)p Ft(')g(option)g(to)h(the)g
-Fs(declare)d Ft(builtin)f(\(see)34 b(Section)e(4.2)i([Bash)1290
-3506 y(Builtins],)26 b(page)j(39\))g(displa)m(ys)d(the)i(source)h
-(\014le)e(name)h(and)f(line)f(n)m(um-)1290 3615 y(b)s(er)j(corresp)s
-(onding)f(to)j(eac)m(h)g(function)e(name)h(supplied)d(as)k(an)f(argu-)
+g(in)m(tended)f(for)g(use)g(b)m(y)g(debuggers)g(is)h(enabled:)1159
+3396 y(1.)61 b(The)32 b(`)p Fs(-F)p Ft(')g(option)h(to)g(the)g
+Fs(declare)d Ft(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290
+3506 y(Builtins],)29 b(page)g(39\))g(displa)m(ys)f(the)g(source)h
+(\014le)f(name)g(and)f(line)h(n)m(um-)1290 3615 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 3725 y(men)m(t.)1159 3858 y(2.)61 b(If)20 b(the)h(command)g(run)e
 (b)m(y)i(the)f Fs(DEBUG)g Ft(trap)g(returns)g(a)h(non-zero)g(v)-5
-b(alue,)1290 3968 y(the)31 b(next)f(command)g(is)g(skipp)s(ed)e(and)h
+b(alue,)1290 3968 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g
 (not)i(executed.)1159 4101 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m
-(y)i(the)f Fs(DEBUG)f Ft(trap)h(returns)f(a)i(v)-5 b(alue)37
-b(of)g(2,)1290 4211 y(and)c(the)g(shell)f(is)g(executing)i(in)e(a)i
-(subroutine)d(\(a)j(shell)e(function)g(or)1290 4320 y(a)i(shell)f
-(script)g(executed)i(b)m(y)f(the)g Fs(.)g Ft(or)g Fs(source)e
-Ft(builtins\),)g(a)j(call)e(to)1290 4430 y Fs(return)c
-Ft(is)g(sim)m(ulated.)630 4587 y Fs(extglob)144 b Ft(If)26
-b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)f(features)h(describ)s
-(ed)d(ab)s(o)m(v)m(e)k(\(see)1110 4697 y(Section)i(3.5.8.1)j([P)m
-(attern)f(Matc)m(hing],)f(page)g(23\))h(are)f(enabled.)630
+(y)i(the)f Fs(DEBUG)f Ft(trap)h(returns)f(a)i(v)-5 b(alue)38
+b(of)f(2,)1290 4211 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 4320 y(a)h(shell)h
+(script)f(executed)h(b)m(y)f(the)g Fs(.)g Ft(or)g Fs(source)e
+Ft(builtins\),)j(a)g(call)g(to)1290 4430 y Fs(return)29
+b Ft(is)h(sim)m(ulated.)630 4587 y Fs(extglob)144 b Ft(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 4697 y(Section)j(3.5.8.1)i([P)m
+(attern)f(Matc)m(hing],)g(page)f(23\))h(are)f(enabled.)630
 4854 y Fs(extquote)96 b Ft(If)49 b(set,)54 b Fs($')p
 Fj(string)11 b Fs(')46 b Ft(and)j Fs($")p Fj(string)11
-b Fs(")46 b Ft(quoting)j(is)f(p)s(erformed)f(within)1110
-4964 y Fs(${)p Fj(parameter)11 b Fs(})30 b Ft(expansions)i(enclosed)h
-(in)g(double)f(quotes.)51 b(This)31 b(option)1110 5073
-y(is)e(enabled)h(b)m(y)g(default.)630 5230 y Fs(failglob)96
-b Ft(If)30 b(set,)g(patterns)g(whic)m(h)f(fail)g(to)i(matc)m(h)g
-(\014lenames)e(during)e(pathname)j(ex-)1110 5340 y(pansion)f(result)g
-(in)g(an)h(expansion)g(error.)p eop
+b Fs(")46 b Ft(quoting)k(is)f(p)s(erformed)e(within)1110
+4964 y Fs(${)p Fj(parameter)11 b Fs(})30 b Ft(expansions)j(enclosed)h
+(in)g(double)f(quotes.)51 b(This)32 b(option)1110 5073
+y(is)e(enabled)h(b)m(y)f(default.)630 5230 y Fs(failglob)96
+b Ft(If)30 b(set,)g(patterns)g(whic)m(h)g(fail)h(to)g(matc)m(h)g
+(\014lenames)f(during)e(pathname)i(ex-)1110 5340 y(pansion)g(result)g
+(in)g(an)g(expansion)h(error.)p eop end
 %%Page: 47 53
-47 52 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)28
-b(Builtin)g(Commands)2069 b(47)630 299 y Fs(force_fignore)1110
-408 y Ft(If)43 b(set,)k(the)d(su\016xes)f(sp)s(eci\014ed)e(b)m(y)j(the)
-f Fs(FIGNORE)f Ft(shell)f(v)-5 b(ariable)42 b(cause)1110
-518 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)g(when)g(p)s(erforming)e(w)m
-(ord)i(completion)g(ev)m(en)h(if)f(the)1110 628 y(ignored)36
-b(w)m(ords)h(are)g(the)h(only)e(p)s(ossible)f(completions.)60
-b(See)37 b(Section)g(5.2)1110 737 y([Bash)24 b(V)-8 b(ariables],)25
-b(page)g(55,)h(for)d(a)h(description)e(of)i Fs(FIGNORE)p
-Ft(.)37 b(This)21 b(option)1110 847 y(is)29 b(enabled)h(b)m(y)g
+TeXDict begin 47 52 bop 150 -116 a Ft(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y Fs(force_fignore)
+1110 408 y Ft(If)43 b(set,)k(the)d(su\016xes)f(sp)s(eci\014ed)f(b)m(y)i
+(the)f Fs(FIGNORE)f Ft(shell)h(v)-5 b(ariable)44 b(cause)1110
+518 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 628 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 737 y([Bash)24 b(V)-8 b(ariables],)27
+b(page)e(55,)h(for)d(a)h(description)g(of)g Fs(FIGNORE)p
+Ft(.)37 b(This)22 b(option)1110 847 y(is)30 b(enabled)h(b)m(y)f
 (default.)630 1011 y Fs(gnu_errfmt)1110 1121 y Ft(If)35
-b(set,)j(shell)c(error)i(messages)g(are)h(written)d(in)h(the)h
+b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g
 (standard)f Fl(gnu)g Ft(error)1110 1230 y(message)c(format.)630
-1395 y Fs(histappend)1110 1504 y Ft(If)c(set,)j(the)e(history)f(list)f
-(is)h(app)s(ended)f(to)j(the)f(\014le)f(named)g(b)m(y)h(the)g(v)-5
-b(alue)28 b(of)1110 1614 y(the)e Fs(HISTFILE)d Ft(v)-5
-b(ariable)24 b(when)g(the)h(shell)f(exits,)i(rather)f(than)h(o)m(v)m
+1395 y Fs(histappend)1110 1504 y Ft(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 1614 y(the)d Fs(HISTFILE)d Ft(v)-5
+b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m
 (erwriting)1110 1724 y(the)31 b(\014le.)630 1888 y Fs(histreedit)1110
-1998 y Ft(If)i(set,)h(and)f(Readline)f(is)g(b)s(eing)g(used,)h(a)g
-(user)g(is)f(giv)m(en)h(the)h(opp)s(ortunit)m(y)1110
-2107 y(to)d(re-edit)f(a)h(failed)e(history)g(substitution.)630
-2271 y Fs(histverify)1110 2381 y Ft(If)35 b(set,)i(and)e(Readline)f(is)
-g(b)s(eing)g(used,)i(the)f(results)f(of)h(history)g(substitu-)1110
-2491 y(tion)h(are)h(not)g(immediately)e(passed)h(to)h(the)g(shell)e
-(parser.)59 b(Instead,)38 b(the)1110 2600 y(resulting)g(line)f(is)i
-(loaded)g(in)m(to)g(the)h(Readline)e(editing)g(bu\013er,)j(allo)m(wing)
+1998 y Ft(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
+2107 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630
+2271 y Fs(histverify)1110 2381 y Ft(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
+2491 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 2600 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 2710 y(further)29 b(mo)s(di\014cation.)630 2874
-y Fs(hostcomplete)1110 2984 y Ft(If)38 b(set,)j(and)c(Readline)g(is)g
-(b)s(eing)g(used,)i(Bash)g(will)c(attempt)k(to)g(p)s(erform)1110
-3093 y(hostname)d(completion)f(when)g(a)h(w)m(ord)f(con)m(taining)g(a)h
-(`)p Fs(@)p Ft(')g(is)f(b)s(eing)f(com-)1110 3203 y(pleted)40
-b(\(see)h(Section)f(8.4.6)i([Commands)e(F)-8 b(or)41
-b(Completion],)g(page)g(99\).)1110 3313 y(This)29 b(option)g(is)h
-(enabled)f(b)m(y)h(default.)630 3477 y Fs(huponexit)1110
-3587 y Ft(If)i(set,)i(Bash)f(will)e(send)g Fs(SIGHUP)h
-Ft(to)h(all)f(jobs)g(when)g(an)g(in)m(teractiv)m(e)i(login)1110
-3696 y(shell)29 b(exits)h(\(see)h(Section)f(3.7.6)i([Signals],)e(page)h
+y Fs(hostcomplete)1110 2984 y Ft(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
+3093 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f
+(`)p Fs(@)p Ft(')g(is)g(b)s(eing)f(com-)1110 3203 y(pleted)41
+b(\(see)g(Section)g(8.4.6)h([Commands)e(F)-8 b(or)41
+b(Completion],)i(page)e(99\).)1110 3313 y(This)30 b(option)g(is)h
+(enabled)f(b)m(y)g(default.)630 3477 y Fs(huponexit)1110
+3587 y Ft(If)i(set,)i(Bash)f(will)h(send)d Fs(SIGHUP)h
+Ft(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login)1110
+3696 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g(page)f
 (31\).)630 3861 y Fs(interactive_comments)1110 3970 y
-Ft(Allo)m(w)25 b(a)i(w)m(ord)e(b)s(eginning)e(with)i(`)p
-Fs(#)p Ft(')h(to)h(cause)f(that)h(w)m(ord)f(and)f(all)g(remain-)1110
-4080 y(ing)40 b(c)m(haracters)j(on)e(that)h(line)e(to)i(b)s(e)f
-(ignored)f(in)g(an)h(in)m(teractiv)m(e)h(shell.)1110
-4189 y(This)29 b(option)g(is)h(enabled)f(b)m(y)h(default.)630
-4354 y Fs(lithist)144 b Ft(If)22 b(enabled,)h(and)e(the)h
-Fs(cmdhist)e Ft(option)i(is)f(enabled,)i(m)m(ulti-line)c(commands)1110
-4463 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)f(with)f(em)m(b)s
-(edded)h(newlines)f(rather)i(than)f(using)1110 4573 y(semicolon)j
-(separators)h(where)e(p)s(ossible.)630 4737 y Fs(login_shell)1110
-4847 y Ft(The)35 b(shell)f(sets)i(this)e(option)h(if)g(it)g(is)f
-(started)i(as)g(a)g(login)e(shell)g(\(see)i(Sec-)1110
-4956 y(tion)28 b(6.1)h([In)m(v)m(oking)g(Bash],)g(page)g(63\).)41
-b(The)28 b(v)-5 b(alue)28 b(ma)m(y)h(not)f(b)s(e)g(c)m(hanged.)630
-5121 y Fs(mailwarn)96 b Ft(If)34 b(set,)i(and)e(a)h(\014le)f(that)h
-(Bash)f(is)g(c)m(hec)m(king)h(for)g(mail)e(has)h(b)s(een)g(accessed)
-1110 5230 y(since)23 b(the)i(last)f(time)f(it)h(w)m(as)g(c)m(hec)m(k)m
+Ft(Allo)m(w)c(a)g(w)m(ord)e(b)s(eginning)g(with)h(`)p
+Fs(#)p Ft(')g(to)h(cause)f(that)h(w)m(ord)f(and)f(all)i(remain-)1110
+4080 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
+4189 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630
+4354 y Fs(lithist)144 b Ft(If)22 b(enabled,)i(and)d(the)h
+Fs(cmdhist)e Ft(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110
+4463 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 4573 y(semicolon)32
+b(separators)f(where)e(p)s(ossible.)630 4737 y Fs(login_shell)1110
+4847 y Ft(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
+4956 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(63\).)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
+5121 y Fs(mailwarn)96 b Ft(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 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 Fs("The)k(mail)h(in)f Fj(mail-)1110
-5340 y(file)40 b Fs(has)29 b(been)g(read")g Ft(is)h(displa)m(y)m(ed.)p
-eop
+5340 y(file)40 b Fs(has)29 b(been)g(read")g Ft(is)i(displa)m(y)m(ed.)p
+eop end
 %%Page: 48 54
-48 53 bop 150 -116 a Ft(48)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y Fs(no_empty_cmd_completion)1110 408 y Ft(If)f(set,)g(and)g
-(Readline)e(is)i(b)s(eing)e(used,)i(Bash)g(will)d(not)j(attempt)i(to)e
-(searc)m(h)1110 518 y(the)25 b Fs(PATH)f Ft(for)h(p)s(ossible)d
-(completions)j(when)f(completion)g(is)g(attempted)i(on)1110
-628 y(an)k(empt)m(y)h(line.)630 779 y Fs(nocaseglob)1110
-889 y Ft(If)38 b(set,)k(Bash)d(matc)m(hes)g(\014lenames)f(in)f(a)i
-(case-insensitiv)m(e)g(fashion)e(when)1110 999 y(p)s(erforming)28
-b(\014lename)i(expansion.)630 1150 y Fs(nullglob)96 b
-Ft(If)23 b(set,)j(Bash)e(allo)m(ws)e(\014lename)h(patterns)h(whic)m(h)e
-(matc)m(h)i(no)g(\014les)e(to)j(expand)1110 1260 y(to)31
-b(a)g(n)m(ull)d(string,)i(rather)g(than)g(themselv)m(es.)630
-1412 y Fs(progcomp)96 b Ft(If)25 b(set,)i(the)f(programmable)f
-(completion)f(facilities)g(\(see)j(Section)e(8.6)i([Pro-)1110
-1521 y(grammable)44 b(Completion],)j(page)e(103\))h(are)f(enabled.)81
-b(This)43 b(option)h(is)1110 1631 y(enabled)29 b(b)m(y)i(default.)630
-1783 y Fs(promptvars)1110 1892 y Ft(If)24 b(set,)i(prompt)d(strings)g
-(undergo)g(parameter)i(expansion,)f(command)g(sub-)1110
-2002 y(stitution,)32 b(arithmetic)f(expansion,)h(and)f(quote)i(remo)m
-(v)-5 b(al)32 b(after)h(b)s(eing)d(ex-)1110 2111 y(panded)39
-b(as)i(describ)s(ed)d(b)s(elo)m(w)i(\(see)h(Section)f(6.9)h([Prin)m
-(ting)e(a)i(Prompt],)1110 2221 y(page)31 b(75\).)42 b(This)29
-b(option)g(is)h(enabled)f(b)m(y)h(default.)630 2373 y
-Fs(restricted_shell)1110 2482 y Ft(The)40 b(shell)f(sets)i(this)f
-(option)g(if)g(it)h(is)e(started)j(in)d(restricted)i(mo)s(de)f(\(see)
-1110 2592 y(Section)35 b(6.10)h([The)f(Restricted)f(Shell],)h(page)g
-(76\).)56 b(The)34 b(v)-5 b(alue)34 b(ma)m(y)i(not)1110
-2701 y(b)s(e)c(c)m(hanged.)49 b(This)31 b(is)h(not)i(reset)f(when)f
-(the)h(startup)g(\014les)e(are)j(executed,)1110 2811
-y(allo)m(wing)h(the)h(startup)f(\014les)g(to)h(disco)m(v)m(er)g
-(whether)g(or)f(not)i(a)f(shell)e(is)h(re-)1110 2921
-y(stricted.)630 3072 y Fs(shift_verbose)1110 3182 y Ft(If)h(this)f(is)g
-(set,)k(the)d Fs(shift)f Ft(builtin)e(prin)m(ts)h(an)i(error)g(message)
-i(when)d(the)1110 3292 y(shift)29 b(coun)m(t)i(exceeds)g(the)g(n)m(um)m
-(b)s(er)e(of)h(p)s(ositional)f(parameters.)630 3443 y
+TeXDict begin 48 53 bop 150 -116 a Ft(48)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y Fs(no_empty_cmd_completion)1110
+408 y Ft(If)f(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 Fs(PATH)f Ft(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
+779 y Fs(nocaseglob)1110 889 y Ft(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
+999 y(p)s(erforming)29 b(\014lename)i(expansion.)630
+1150 y Fs(nullglob)96 b Ft(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 1260 y(to)31 b(a)g(n)m(ull)f(string,)h(rather)f(than)g
+(themselv)m(es.)630 1412 y Fs(progcomp)96 b Ft(If)25
+b(set,)i(the)f(programmable)g(completion)g(facilities)i(\(see)f
+(Section)f(8.6)h([Pro-)1110 1521 y(grammable)45 b(Completion],)k(page)c
+(103\))h(are)f(enabled.)82 b(This)44 b(option)h(is)1110
+1631 y(enabled)30 b(b)m(y)h(default.)630 1783 y Fs(promptvars)1110
+1892 y Ft(If)24 b(set,)i(prompt)d(strings)h(undergo)f(parameter)i
+(expansion,)g(command)f(sub-)1110 2002 y(stitution,)34
+b(arithmetic)f(expansion,)g(and)e(quote)i(remo)m(v)-5
+b(al)33 b(after)g(b)s(eing)e(ex-)1110 2111 y(panded)39
+b(as)i(describ)s(ed)e(b)s(elo)m(w)i(\(see)g(Section)g(6.9)g([Prin)m
+(ting)g(a)g(Prompt],)1110 2221 y(page)31 b(75\).)42 b(This)30
+b(option)g(is)h(enabled)f(b)m(y)g(default.)630 2373 y
+Fs(restricted_shell)1110 2482 y Ft(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 2592 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e
+(76\).)56 b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)1110
+2701 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 2811
+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 2921
+y(stricted.)630 3072 y Fs(shift_verbose)1110 3182 y Ft(If)g(this)g(is)g
+(set,)j(the)d Fs(shift)f Ft(builtin)h(prin)m(ts)f(an)h(error)g(message)
+i(when)d(the)1110 3292 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 3443 y
 Fs(sourcepath)1110 3553 y Ft(If)22 b(set,)j(the)e Fs(source)e
-Ft(builtin)e(uses)j(the)h(v)-5 b(alue)22 b(of)h Fs(PATH)e
-Ft(to)j(\014nd)d(the)h(directory)1110 3662 y(con)m(taining)27
-b(the)g(\014le)g(supplied)d(as)j(an)g(argumen)m(t.)40
-b(This)26 b(option)h(is)f(enabled)1110 3772 y(b)m(y)k(default.)630
+Ft(builtin)h(uses)g(the)h(v)-5 b(alue)23 b(of)g Fs(PATH)e
+Ft(to)j(\014nd)d(the)h(directory)1110 3662 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 3772 y(b)m(y)j(default.)630
 3924 y Fs(xpg_echo)96 b Ft(If)31 b(set,)h(the)g Fs(echo)e
-Ft(builtin)e(expands)i(bac)m(kslash-escap)s(e)i(sequences)g(b)m(y)f
+Ft(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f
 (de-)1110 4033 y(fault.)630 4185 y(The)c(return)f(status)i(when)f
-(listing)e(options)i(is)f(zero)j(if)d(all)h Fq(optnames)k
-Ft(are)d(enabled,)f(non-)630 4295 y(zero)40 b(otherwise.)65
-b(When)39 b(setting)g(or)g(unsetting)f(options,)i(the)f(return)f
-(status)h(is)f(zero)630 4404 y(unless)29 b(an)h Fq(optname)36
-b Ft(is)29 b(not)i(a)g(v)-5 b(alid)28 b(shell)h(option.)150
+(listing)h(options)g(is)f(zero)i(if)e(all)i Fq(optnames)i
+Ft(are)d(enabled,)g(non-)630 4295 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 4404 y(unless)30 b(an)g Fq(optname)36
+b Ft(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.)150
 4556 y Fs(source)870 4687 y(source)46 b Fj(filename)630
-4817 y Ft(A)30 b(synon)m(ym)g(for)g Fs(.)g Ft(\(see)i(Section)e(4.1)h
-([Bourne)g(Shell)d(Builtins],)g(page)j(33\).)150 4969
+4817 y Ft(A)30 b(synon)m(ym)g(for)g Fs(.)g Ft(\(see)i(Section)f(4.1)g
+([Bourne)g(Shell)f(Builtins],)h(page)g(33\).)150 4969
 y Fs(type)870 5100 y(type)47 b([-afptP])e([)p Fj(name)57
 b Fs(...)o(])630 5230 y Ft(F)-8 b(or)42 b(eac)m(h)g Fq(name)p
-Ft(,)i(indicate)c(ho)m(w)i(it)e(w)m(ould)g(b)s(e)h(in)m(terpreted)f(if)
-g(used)g(as)i(a)f(command)630 5340 y(name.)p eop
+Ft(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m(terpreted)g(if)
+g(used)f(as)i(a)f(command)630 5340 y(name.)p eop end
 %%Page: 49 55
-49 54 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)28
-b(Builtin)g(Commands)2069 b(49)630 299 y(If)38 b(the)g(`)p
-Fs(-t)p Ft(')g(option)f(is)g(used,)j Fs(type)d Ft(prin)m(ts)f(a)j
-(single)d(w)m(ord)i(whic)m(h)f(is)g(one)h(of)h(`)p Fs(alias)p
-Ft(',)630 408 y(`)p Fs(function)p Ft(',)32 b(`)p Fs(builtin)p
-Ft(',)g(`)p Fs(file)p Ft(')g(or)h(`)p Fs(keyword)p Ft(',)f(if)g
-Fq(name)38 b Ft(is)32 b(an)g(alias,)h(shell)e(function,)630
-518 y(shell)i(builtin,)f(disk)i(\014le,)h(or)f(shell)f(reserv)m(ed)i(w)
-m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)53 b(If)34 b(the)h
-Fq(name)40 b Ft(is)34 b(not)630 628 y(found,)29 b(then)h(nothing)g(is)f
-(prin)m(ted,)g(and)h Fs(type)f Ft(returns)g(a)i(failure)e(status.)630
-763 y(If)39 b(the)g(`)p Fs(-p)p Ft(')g(option)g(is)f(used,)j
-Fs(type)d Ft(either)g(returns)g(the)i(name)f(of)g(the)g(disk)f(\014le)g
-(that)630 873 y(w)m(ould)29 b(b)s(e)h(executed,)h(or)g(nothing)e(if)g
-(`)p Fs(-t)p Ft(')i(w)m(ould)e(not)h(return)g(`)p Fs(file)p
-Ft('.)630 1008 y(The)23 b(`)p Fs(-P)p Ft(')h(option)f(forces)h(a)g
-(path)g(searc)m(h)g(for)g(eac)m(h)g Fq(name)p Ft(,)i(ev)m(en)e(if)f(`)p
-Fs(-t)p Ft(')h(w)m(ould)e(not)i(return)630 1118 y(`)p
-Fs(file)p Ft('.)630 1253 y(If)34 b(a)i(command)e(is)g(hashed,)h(`)p
-Fs(-p)p Ft(')g(and)f(`)p Fs(-P)p Ft(')h(prin)m(t)e(the)i(hashed)f(v)-5
-b(alue,)36 b(not)f(necessarily)630 1363 y(the)c(\014le)e(that)i(app)s
-(ears)f(\014rst)f(in)g Fs($PATH)p Ft(.)630 1499 y(If)36
-b(the)h(`)p Fs(-a)p Ft(')g(option)f(is)g(used,)h Fs(type)f
-Ft(returns)f(all)h(of)h(the)g(places)f(that)h(con)m(tain)g(an)g(exe-)
-630 1608 y(cutable)c(named)g Fq(\014le)p Ft(.)49 b(This)32
-b(includes)f(aliases)i(and)g(functions,)g(if)f(and)h(only)g(if)f(the)i
-(`)p Fs(-p)p Ft(')630 1718 y(option)c(is)f(not)i(also)f(used.)630
-1853 y(If)c(the)h(`)p Fs(-f)p Ft(')g(option)f(is)g(used,)h
-Fs(type)e Ft(do)s(es)i(not)g(attempt)g(to)h(\014nd)d(shell)g
-(functions,)h(as)h(with)630 1963 y(the)k Fs(command)d
-Ft(builtin.)630 2098 y(The)35 b(return)g(status)h(is)f(zero)h(if)f(an)m
-(y)h(of)g(the)g Fq(names)k Ft(are)c(found,)g(non-zero)g(if)f(none)h
+TeXDict begin 49 54 bop 150 -116 a Ft(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(If)38
+b(the)g(`)p Fs(-t)p Ft(')g(option)g(is)g(used,)i Fs(type)d
+Ft(prin)m(ts)g(a)i(single)f(w)m(ord)g(whic)m(h)g(is)g(one)g(of)h(`)p
+Fs(alias)p Ft(',)630 408 y(`)p Fs(function)p Ft(',)32
+b(`)p Fs(builtin)p Ft(',)g(`)p Fs(file)p Ft(')g(or)h(`)p
+Fs(keyword)p Ft(',)f(if)h Fq(name)38 b Ft(is)33 b(an)f(alias,)j(shell)e
+(function,)630 518 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h
+(reserv)m(ed)g(w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55
+b(If)34 b(the)h Fq(name)40 b Ft(is)35 b(not)630 628 y(found,)29
+b(then)h(nothing)h(is)f(prin)m(ted,)g(and)g Fs(type)f
+Ft(returns)g(a)i(failure)g(status.)630 763 y(If)39 b(the)g(`)p
+Fs(-p)p Ft(')g(option)h(is)f(used,)i Fs(type)d Ft(either)h(returns)f
+(the)i(name)f(of)g(the)g(disk)g(\014le)g(that)630 873
+y(w)m(ould)30 b(b)s(e)g(executed,)h(or)g(nothing)f(if)g(`)p
+Fs(-t)p Ft(')h(w)m(ould)f(not)g(return)g(`)p Fs(file)p
+Ft('.)630 1008 y(The)23 b(`)p Fs(-P)p Ft(')h(option)g(forces)g(a)g
+(path)g(searc)m(h)g(for)g(eac)m(h)g Fq(name)p Ft(,)i(ev)m(en)e(if)g(`)p
+Fs(-t)p Ft(')g(w)m(ould)f(not)h(return)630 1118 y(`)p
+Fs(file)p Ft('.)630 1253 y(If)34 b(a)i(command)e(is)h(hashed,)g(`)p
+Fs(-p)p Ft(')g(and)f(`)p Fs(-P)p Ft(')h(prin)m(t)f(the)h(hashed)f(v)-5
+b(alue,)37 b(not)e(necessarily)630 1363 y(the)c(\014le)f(that)h(app)s
+(ears)f(\014rst)f(in)h Fs($PATH)p Ft(.)630 1499 y(If)36
+b(the)h(`)p Fs(-a)p Ft(')g(option)g(is)g(used,)g Fs(type)f
+Ft(returns)f(all)j(of)f(the)g(places)g(that)g(con)m(tain)h(an)f(exe-)
+630 1608 y(cutable)d(named)f Fq(\014le)p Ft(.)50 b(This)33
+b(includes)g(aliases)i(and)e(functions,)h(if)f(and)g(only)h(if)f(the)h
+(`)p Fs(-p)p Ft(')630 1718 y(option)d(is)f(not)h(also)g(used.)630
+1853 y(If)26 b(the)h(`)p Fs(-f)p Ft(')g(option)g(is)g(used,)g
+Fs(type)e Ft(do)s(es)i(not)g(attempt)g(to)h(\014nd)d(shell)i
+(functions,)g(as)g(with)630 1963 y(the)k Fs(command)d
+Ft(builtin.)630 2098 y(The)35 b(return)g(status)h(is)g(zero)g(if)g(an)m
+(y)g(of)g(the)g Fq(names)k Ft(are)c(found,)g(non-zero)g(if)g(none)g
 (are)630 2208 y(found.)150 2370 y Fs(typeset)870 2505
 y(typeset)46 b([-afFrxi])f([-p])i([)p Fj(name)11 b Fs([=)p
 Fj(value)g Fs(])43 b(...)o(])630 2641 y Ft(The)29 b Fs(typeset)f
-Ft(command)h(is)f(supplied)f(for)i(compatibilit)m(y)f(with)g(the)i
-(Korn)e(shell;)h(ho)m(w-)630 2750 y(ev)m(er,)i(it)f(has)g(b)s(een)g
-(deprecated)h(in)e(fa)m(v)m(or)j(of)e(the)h Fs(declare)d
-Ft(builtin)f(command.)150 2912 y Fs(ulimit)870 3047 y(ulimit)46
+Ft(command)h(is)g(supplied)g(for)g(compatibilit)m(y)j(with)d(the)h
+(Korn)e(shell;)j(ho)m(w-)630 2750 y(ev)m(er,)g(it)g(has)f(b)s(een)g
+(deprecated)h(in)f(fa)m(v)m(or)i(of)e(the)h Fs(declare)d
+Ft(builtin)i(command.)150 2912 y Fs(ulimit)870 3047 y(ulimit)46
 b([-acdflmnpstuvSH])d([)p Fj(limit)11 b Fs(])630 3183
-y(ulimit)25 b Ft(pro)m(vides)g(con)m(trol)i(o)m(v)m(er)h(the)f
-(resources)f(a)m(v)-5 b(ailable)26 b(to)h(pro)s(cesses)f(started)h(b)m
-(y)g(the)630 3292 y(shell,)g(on)h(systems)g(that)h(allo)m(w)f(suc)m(h)g
-(con)m(trol.)40 b(If)28 b(an)g(option)g(is)f(giv)m(en,)i(it)e(is)h(in)m
-(terpreted)630 3402 y(as)j(follo)m(ws:)630 3563 y Fs(-S)384
-b Ft(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit)d(asso)s(ciated)j
-(with)e(a)i(resource.)630 3725 y Fs(-H)384 b Ft(Change)30
-b(and)g(rep)s(ort)g(the)g(hard)g(limit)e(asso)s(ciated)j(with)e(a)i
-(resource.)630 3886 y Fs(-a)384 b Ft(All)29 b(curren)m(t)h(limits)e
-(are)j(rep)s(orted.)630 4048 y Fs(-c)384 b Ft(The)30
-b(maxim)m(um)f(size)h(of)h(core)g(\014les)e(created.)630
-4209 y Fs(-d)384 b Ft(The)30 b(maxim)m(um)f(size)h(of)h(a)g(pro)s
+y(ulimit)25 b Ft(pro)m(vides)h(con)m(trol)i(o)m(v)m(er)g(the)f
+(resources)f(a)m(v)-5 b(ailable)29 b(to)e(pro)s(cesses)f(started)h(b)m
+(y)g(the)630 3292 y(shell,)i(on)f(systems)g(that)h(allo)m(w)h(suc)m(h)e
+(con)m(trol.)41 b(If)28 b(an)g(option)h(is)f(giv)m(en,)i(it)e(is)h(in)m
+(terpreted)630 3402 y(as)i(follo)m(ws:)630 3563 y Fs(-S)384
+b Ft(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit)g(asso)s(ciated)h
+(with)e(a)h(resource.)630 3725 y Fs(-H)384 b Ft(Change)30
+b(and)g(rep)s(ort)g(the)g(hard)g(limit)h(asso)s(ciated)h(with)e(a)h
+(resource.)630 3886 y Fs(-a)384 b Ft(All)31 b(curren)m(t)f(limits)h
+(are)g(rep)s(orted.)630 4048 y Fs(-c)384 b Ft(The)30
+b(maxim)m(um)g(size)h(of)g(core)g(\014les)f(created.)630
+4209 y Fs(-d)384 b Ft(The)30 b(maxim)m(um)g(size)h(of)g(a)g(pro)s
 (cess's)f(data)h(segmen)m(t.)630 4371 y Fs(-f)384 b Ft(The)30
-b(maxim)m(um)f(size)h(of)h(\014les)e(created)j(b)m(y)e(the)g(shell.)630
-4532 y Fs(-l)384 b Ft(The)30 b(maxim)m(um)f(size)h(that)h(ma)m(y)g(b)s
-(e)f(lo)s(c)m(k)m(ed)h(in)m(to)f(memory)-8 b(.)630 4694
-y Fs(-m)384 b Ft(The)30 b(maxim)m(um)f(residen)m(t)h(set)h(size.)630
-4855 y Fs(-n)384 b Ft(The)30 b(maxim)m(um)f(n)m(um)m(b)s(er)g(of)i(op)s
-(en)e(\014le)h(descriptors.)630 5017 y Fs(-p)384 b Ft(The)30
-b(pip)s(e)e(bu\013er)i(size.)630 5178 y Fs(-s)384 b Ft(The)30
-b(maxim)m(um)f(stac)m(k)j(size.)630 5340 y Fs(-t)384
-b Ft(The)30 b(maxim)m(um)f(amoun)m(t)i(of)f(cpu)g(time)g(in)f(seconds.)
-p eop
+b(maxim)m(um)g(size)h(of)g(\014les)f(created)i(b)m(y)e(the)g(shell.)630
+4532 y Fs(-l)384 b Ft(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s
+(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 4694
+y Fs(-m)384 b Ft(The)30 b(maxim)m(um)g(residen)m(t)h(set)g(size.)630
+4855 y Fs(-n)384 b Ft(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(op)s
+(en)e(\014le)i(descriptors.)630 5017 y Fs(-p)384 b Ft(The)30
+b(pip)s(e)f(bu\013er)h(size.)630 5178 y Fs(-s)384 b Ft(The)30
+b(maxim)m(um)g(stac)m(k)i(size.)630 5340 y Fs(-t)384
+b Ft(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g(time)h(in)f(seconds.)
+p eop end
 %%Page: 50 56
-50 55 bop 150 -116 a Ft(50)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y Fs(-u)384 b Ft(The)30 b(maxim)m(um)f(n)m(um)m(b)s(er)g(of)i(pro)s
-(cesses)f(a)m(v)-5 b(ailable)30 b(to)h(a)f(single)g(user.)630
-458 y Fs(-v)384 b Ft(The)29 b(maxim)m(um)g(amoun)m(t)h(of)g(virtual)e
-(memory)i(a)m(v)-5 b(ailable)29 b(to)h(the)g(pro)s(cess.)630
-617 y(If)j Fq(limit)g Ft(is)g(giv)m(en,)h(it)f(is)g(the)h(new)f(v)-5
-b(alue)33 b(of)g(the)h(sp)s(eci\014ed)e(resource;)j(the)f(sp)s(ecial)e
-Fq(limit)630 727 y Ft(v)-5 b(alues)26 b Fs(hard)p Ft(,)h
+TeXDict begin 50 55 bop 150 -116 a Ft(50)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y Fs(-u)384 b Ft(The)30
+b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pro)s(cesses)f(a)m(v)-5
+b(ailable)33 b(to)e(a)f(single)i(user.)630 458 y Fs(-v)384
+b Ft(The)29 b(maxim)m(um)h(amoun)m(t)g(of)g(virtual)g(memory)g(a)m(v)-5
+b(ailable)32 b(to)e(the)g(pro)s(cess.)630 617 y(If)j
+Fq(limit)j Ft(is)e(giv)m(en,)h(it)f(is)g(the)g(new)f(v)-5
+b(alue)34 b(of)f(the)h(sp)s(eci\014ed)f(resource;)i(the)f(sp)s(ecial)g
+Fq(limit)630 727 y Ft(v)-5 b(alues)27 b Fs(hard)p Ft(,)g
 Fs(soft)p Ft(,)g(and)g Fs(unlimited)d Ft(stand)j(for)g(the)g(curren)m
-(t)g(hard)f(limit,)g(the)h(curren)m(t)630 836 y(soft)35
-b(limit,)f(and)h(no)f(limit,)g(resp)s(ectiv)m(ely)-8
-b(.)54 b(Otherwise,)35 b(the)g(curren)m(t)g(v)-5 b(alue)34
-b(of)h(the)h(soft)630 946 y(limit)i(for)i(the)h(sp)s(eci\014ed)e
-(resource)i(is)e(prin)m(ted,)j(unless)d(the)h(`)p Fs(-H)p
-Ft(')h(option)e(is)h(supplied.)630 1056 y(When)29 b(setting)g(new)f
-(limits,)f(if)h(neither)g(`)p Fs(-H)p Ft(')g(nor)h(`)p
-Fs(-S)p Ft(')f(is)g(supplied,)f(b)s(oth)h(the)h(hard)f(and)630
-1165 y(soft)37 b(limits)d(are)j(set.)60 b(If)36 b(no)g(option)g(is)g
-(giv)m(en,)i(then)e(`)p Fs(-f)p Ft(')h(is)e(assumed.)59
-b(V)-8 b(alues)36 b(are)h(in)630 1275 y(1024-b)m(yte)27
-b(incremen)m(ts,)f(except)f(for)f(`)p Fs(-t)p Ft(',)i(whic)m(h)d(is)h
-(in)f(seconds,)j(`)p Fs(-p)p Ft(',)g(whic)m(h)d(is)g(in)h(units)630
-1384 y(of)31 b(512-b)m(yte)h(blo)s(c)m(ks,)e(and)g(`)p
-Fs(-n)p Ft(')g(and)g(`)p Fs(-u)p Ft(',)h(whic)m(h)e(are)h(unscaled)g(v)
--5 b(alues.)630 1519 y(The)34 b(return)g(status)h(is)e(zero)j(unless)d
-(an)h(in)m(v)-5 b(alid)33 b(option)h(or)g(argumen)m(t)i(is)d(supplied,)
-g(or)630 1628 y(an)d(error)g(o)s(ccurs)g(while)f(setting)h(a)h(new)f
+(t)g(hard)f(limit,)j(the)e(curren)m(t)630 836 y(soft)35
+b(limit,)i(and)e(no)f(limit,)j(resp)s(ectiv)m(ely)-8
+b(.)56 b(Otherwise,)36 b(the)f(curren)m(t)g(v)-5 b(alue)35
+b(of)g(the)h(soft)630 946 y(limit)41 b(for)f(the)h(sp)s(eci\014ed)f
+(resource)h(is)f(prin)m(ted,)j(unless)d(the)g(`)p Fs(-H)p
+Ft(')h(option)f(is)h(supplied.)630 1056 y(When)29 b(setting)h(new)e
+(limits,)i(if)f(neither)g(`)p Fs(-H)p Ft(')f(nor)h(`)p
+Fs(-S)p Ft(')f(is)h(supplied,)g(b)s(oth)f(the)h(hard)f(and)630
+1165 y(soft)37 b(limits)g(are)g(set.)60 b(If)36 b(no)g(option)h(is)g
+(giv)m(en,)i(then)d(`)p Fs(-f)p Ft(')h(is)f(assumed.)59
+b(V)-8 b(alues)37 b(are)g(in)630 1275 y(1024-b)m(yte)27
+b(incremen)m(ts,)g(except)e(for)f(`)p Fs(-t)p Ft(',)i(whic)m(h)e(is)h
+(in)f(seconds,)i(`)p Fs(-p)p Ft(',)g(whic)m(h)e(is)g(in)h(units)630
+1384 y(of)31 b(512-b)m(yte)h(blo)s(c)m(ks,)f(and)f(`)p
+Fs(-n)p Ft(')g(and)g(`)p Fs(-u)p Ft(',)h(whic)m(h)f(are)g(unscaled)h(v)
+-5 b(alues.)630 1519 y(The)34 b(return)g(status)h(is)f(zero)i(unless)e
+(an)g(in)m(v)-5 b(alid)36 b(option)f(or)f(argumen)m(t)i(is)e(supplied,)
+h(or)630 1628 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f
 (limit.)150 1787 y Fs(unalias)870 1922 y(unalias)46 b([-a])g([)p
 Fj(name)57 b Fs(...)47 b(])630 2056 y Ft(Remo)m(v)m(e)39
-b(eac)m(h)f Fq(name)k Ft(from)36 b(the)h(list)f(of)h(aliases.)59
-b(If)36 b(`)p Fs(-a)p Ft(')h(is)f(supplied,)g(all)f(aliases)i(are)630
-2166 y(remo)m(v)m(ed.)42 b(Aliases)29 b(are)i(describ)s(ed)d(in)h
-(Section)i(6.6)g([Aliases],)f(page)h(71.)150 2423 y Fr(4.3)68
-b(The)45 b(Set)g(Builtin)275 2667 y Ft(This)28 b(builtin)f(is)i(so)i
-(complicated)f(that)h(it)f(deserv)m(es)h(its)f(o)m(wn)g(section.)150
+b(eac)m(h)f Fq(name)k Ft(from)36 b(the)h(list)h(of)f(aliases.)61
+b(If)36 b(`)p Fs(-a)p Ft(')h(is)g(supplied,)h(all)f(aliases)i(are)630
+2166 y(remo)m(v)m(ed.)j(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section)
+i(6.6)f([Aliases],)h(page)f(71.)150 2423 y Fr(4.3)68
+b(The)45 b(Set)g(Builtin)275 2667 y Ft(This)29 b(builtin)h(is)g(so)h
+(complicated)h(that)f(it)g(deserv)m(es)g(its)g(o)m(wn)f(section.)150
 2826 y Fs(set)870 2960 y(set)47 b([--abefhkmnptuvxBCHP])42
 b([-o)47 b Fj(option)11 b Fs(])45 b([)p Fj(argument)56
-b Fs(...)o(])630 3095 y Ft(If)31 b(no)h(options)g(or)f(argumen)m(ts)i
-(are)f(supplied,)d Fs(set)i Ft(displa)m(ys)f(the)i(names)g(and)g(v)-5
-b(alues)31 b(of)630 3204 y(all)39 b(shell)f(v)-5 b(ariables)38
-b(and)h(functions,)i(sorted)f(according)f(to)i(the)f(curren)m(t)f(lo)s
-(cale,)j(in)d(a)630 3314 y(format)31 b(that)g(ma)m(y)g(b)s(e)e(reused)h
-(as)h(input.)630 3448 y(When)e(options)f(are)h(supplied,)d(they)j(set)h
-(or)f(unset)f(shell)f(attributes.)40 b(Options,)28 b(if)g(sp)s(ec-)630
-3558 y(i\014ed,)h(ha)m(v)m(e)j(the)e(follo)m(wing)f(meanings:)630
-3717 y Fs(-a)384 b Ft(Mark)32 b(v)-5 b(ariables)31 b(and)g(function)g
-(whic)m(h)g(are)h(mo)s(di\014ed)e(or)i(created)h(for)f(ex-)1110
-3827 y(p)s(ort)e(to)h(the)f(en)m(vironmen)m(t)g(of)h(subsequen)m(t)f
-(commands.)630 3986 y Fs(-b)384 b Ft(Cause)44 b(the)h(status)g(of)f
-(terminated)g(bac)m(kground)h(jobs)f(to)h(b)s(e)f(rep)s(orted)1110
-4095 y(immediately)-8 b(,)27 b(rather)g(than)f(b)s(efore)h(prin)m(ting)
-e(the)i(next)g(primary)f(prompt.)630 4255 y Fs(-e)384
-b Ft(Exit)36 b(immediately)f(if)g(a)i(simple)d(command)i(\(see)i
-(Section)e(3.2.1)i([Simple)1110 4364 y(Commands],)31
-b(page)i(8\))f(exits)f(with)g(a)h(non-zero)g(status,)g(unless)e(the)i
-(com-)1110 4474 y(mand)f(that)h(fails)f(is)g(part)g(of)h(the)g(command)
-g(list)e(immediately)g(follo)m(wing)1110 4583 y(a)41
-b Fs(while)d Ft(or)j Fs(until)e Ft(k)m(eyw)m(ord,)k(part)d(of)g(the)h
-(test)g(in)e(an)h Fs(if)g Ft(statemen)m(t,)1110 4693
-y(part)33 b(of)h(a)g Fs(&&)f Ft(or)g Fs(||)g Ft(list,)g(or)g(if)g(the)g
-(command's)h(return)e(status)i(is)e(b)s(eing)1110 4802
-y(in)m(v)m(erted)e(using)e Fs(!)p Ft(.)40 b(A)30 b(trap)f(on)h
-Fs(ERR)p Ft(,)f(if)g(set,)h(is)f(executed)i(b)s(efore)e(the)h(shell)
-1110 4912 y(exits.)630 5071 y Fs(-f)384 b Ft(Disable)29
-b(\014le)h(name)g(generation)h(\(globbing\).)630 5230
-y Fs(-h)384 b Ft(Lo)s(cate)33 b(and)e(remem)m(b)s(er)h(\(hash\))g
-(commands)f(as)h(they)g(are)g(lo)s(ok)m(ed)g(up)f(for)1110
-5340 y(execution.)41 b(This)28 b(option)i(is)g(enabled)f(b)m(y)h
-(default.)p eop
+b Fs(...)o(])630 3095 y Ft(If)31 b(no)h(options)h(or)e(argumen)m(ts)i
+(are)f(supplied,)f Fs(set)g Ft(displa)m(ys)h(the)g(names)g(and)g(v)-5
+b(alues)32 b(of)630 3204 y(all)41 b(shell)f(v)-5 b(ariables)40
+b(and)f(functions,)j(sorted)e(according)g(to)h(the)f(curren)m(t)f(lo)s
+(cale,)44 b(in)c(a)630 3314 y(format)31 b(that)g(ma)m(y)g(b)s(e)e
+(reused)h(as)h(input.)630 3448 y(When)e(options)g(are)g(supplied,)f
+(they)h(set)h(or)f(unset)f(shell)h(attributes.)41 b(Options,)29
+b(if)g(sp)s(ec-)630 3558 y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i
+(meanings:)630 3717 y Fs(-a)384 b Ft(Mark)32 b(v)-5 b(ariables)33
+b(and)e(function)h(whic)m(h)g(are)g(mo)s(di\014ed)f(or)h(created)h(for)
+f(ex-)1110 3827 y(p)s(ort)e(to)h(the)f(en)m(vironmen)m(t)h(of)g
+(subsequen)m(t)f(commands.)630 3986 y Fs(-b)384 b Ft(Cause)44
+b(the)h(status)g(of)f(terminated)h(bac)m(kground)g(jobs)f(to)h(b)s(e)f
+(rep)s(orted)1110 4095 y(immediately)-8 b(,)30 b(rather)d(than)f(b)s
+(efore)h(prin)m(ting)g(the)g(next)g(primary)g(prompt.)630
+4255 y Fs(-e)384 b Ft(Exit)37 b(immediately)h(if)e(a)h(simple)f
+(command)g(\(see)i(Section)f(3.2.1)h([Simple)1110 4364
+y(Commands],)31 b(page)i(8\))f(exits)g(with)g(a)g(non-zero)g(status,)g
+(unless)f(the)h(com-)1110 4474 y(mand)f(that)h(fails)h(is)f(part)f(of)h
+(the)g(command)g(list)g(immediately)h(follo)m(wing)1110
+4583 y(a)41 b Fs(while)d Ft(or)j Fs(until)e Ft(k)m(eyw)m(ord,)k(part)d
+(of)g(the)h(test)g(in)f(an)g Fs(if)g Ft(statemen)m(t,)1110
+4693 y(part)33 b(of)h(a)g Fs(&&)f Ft(or)g Fs(||)g Ft(list,)i(or)e(if)h
+(the)f(command's)h(return)e(status)i(is)f(b)s(eing)1110
+4802 y(in)m(v)m(erted)e(using)e Fs(!)p Ft(.)40 b(A)30
+b(trap)f(on)h Fs(ERR)p Ft(,)f(if)h(set,)g(is)g(executed)h(b)s(efore)e
+(the)h(shell)1110 4912 y(exits.)630 5071 y Fs(-f)384
+b Ft(Disable)31 b(\014le)g(name)f(generation)i(\(globbing\).)630
+5230 y Fs(-h)384 b Ft(Lo)s(cate)33 b(and)e(remem)m(b)s(er)h(\(hash\))g
+(commands)f(as)h(they)g(are)g(lo)s(ok)m(ed)h(up)e(for)1110
+5340 y(execution.)42 b(This)29 b(option)i(is)g(enabled)f(b)m(y)g
+(default.)p eop end
 %%Page: 51 57
-51 56 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)28
-b(Builtin)g(Commands)2069 b(51)630 299 y Fs(-k)384 b
-Ft(All)32 b(argumen)m(ts)i(in)e(the)i(form)f(of)g(assignmen)m(t)g
-(statemen)m(ts)j(are)d(placed)g(in)1110 408 y(the)38
-b(en)m(vironmen)m(t)f(for)h(a)g(command,)h(not)f(just)f(those)i(that)f
-(precede)g(the)1110 518 y(command)30 b(name.)630 677
-y Fs(-m)384 b Ft(Job)30 b(con)m(trol)h(is)e(enabled)h(\(see)h(Chapter)f
-(7)g([Job)h(Con)m(trol],)f(page)h(79\).)630 837 y Fs(-n)384
-b Ft(Read)21 b(commands)f(but)g(do)h(not)g(execute)h(them;)i(this)c(ma)
-m(y)h(b)s(e)f(used)g(to)h(c)m(hec)m(k)1110 946 y(a)42
-b(script)f(for)h(syn)m(tax)g(errors.)75 b(This)40 b(option)h(is)g
-(ignored)g(b)m(y)h(in)m(teractiv)m(e)1110 1056 y(shells.)630
-1215 y Fs(-o)30 b Fj(option-name)1110 1325 y Ft(Set)h(the)f(option)g
-(corresp)s(onding)e(to)j Fq(option-name)5 b Ft(:)1110
-1484 y Fs(allexport)1590 1594 y Ft(Same)30 b(as)h Fs(-a)p
-Ft(.)1110 1753 y Fs(braceexpand)1590 1863 y Ft(Same)f(as)h
-Fs(-B)p Ft(.)1110 2022 y Fs(emacs)240 b Ft(Use)25 b(an)f
-Fs(emacs)p Ft(-st)m(yle)g(line)e(editing)h(in)m(terface)i(\(see)h
-(Chapter)e(8)1590 2132 y([Command)30 b(Line)f(Editing],)g(page)i(83\).)
-1110 2291 y Fs(errexit)144 b Ft(Same)30 b(as)h Fs(-e)p
-Ft(.)1110 2451 y Fs(errtrace)96 b Ft(Same)30 b(as)h Fs(-E)p
-Ft(.)1110 2610 y Fs(functrace)1590 2720 y Ft(Same)f(as)h
-Fs(-T)p Ft(.)1110 2879 y Fs(hashall)144 b Ft(Same)30
-b(as)h Fs(-h)p Ft(.)1110 3039 y Fs(histexpand)1590 3148
-y Ft(Same)f(as)h Fs(-H)p Ft(.)1110 3308 y Fs(history)144
-b Ft(Enable)38 b(command)h(history)-8 b(,)41 b(as)e(describ)s(ed)e(in)h
-(Section)h(9.1)1590 3417 y([Bash)e(History)f(F)-8 b(acilities],)37
-b(page)g(109.)60 b(This)35 b(option)h(is)f(on)1590 3527
-y(b)m(y)30 b(default)g(in)f(in)m(teractiv)m(e)i(shells.)1110
-3686 y Fs(ignoreeof)1590 3796 y Ft(An)f(in)m(teractiv)m(e)h(shell)e
-(will)f(not)i(exit)g(up)s(on)f(reading)h(EOF.)1110 3955
+TeXDict begin 51 56 bop 150 -116 a Ft(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(51)630 299 y Fs(-k)384
+b Ft(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g(assignmen)m(t)h
+(statemen)m(ts)i(are)d(placed)h(in)1110 408 y(the)k(en)m(vironmen)m(t)g
+(for)g(a)g(command,)h(not)f(just)f(those)i(that)f(precede)g(the)1110
+518 y(command)30 b(name.)630 677 y Fs(-m)384 b Ft(Job)30
+b(con)m(trol)i(is)e(enabled)h(\(see)g(Chapter)f(7)g([Job)h(Con)m
+(trol],)g(page)g(79\).)630 837 y Fs(-n)384 b Ft(Read)21
+b(commands)f(but)g(do)h(not)g(execute)h(them;)i(this)d(ma)m(y)g(b)s(e)f
+(used)g(to)h(c)m(hec)m(k)1110 946 y(a)42 b(script)g(for)g(syn)m(tax)g
+(errors.)75 b(This)41 b(option)h(is)g(ignored)g(b)m(y)g(in)m(teractiv)m
+(e)1110 1056 y(shells.)630 1215 y Fs(-o)30 b Fj(option-name)1110
+1325 y Ft(Set)h(the)f(option)h(corresp)s(onding)e(to)i
+Fq(option-name)5 b Ft(:)1110 1484 y Fs(allexport)1590
+1594 y Ft(Same)30 b(as)h Fs(-a)p Ft(.)1110 1753 y Fs(braceexpand)1590
+1863 y Ft(Same)f(as)h Fs(-B)p Ft(.)1110 2022 y Fs(emacs)240
+b Ft(Use)25 b(an)f Fs(emacs)p Ft(-st)m(yle)h(line)f(editing)h(in)m
+(terface)h(\(see)g(Chapter)e(8)1590 2132 y([Command)30
+b(Line)g(Editing],)h(page)g(83\).)1110 2291 y Fs(errexit)144
+b Ft(Same)30 b(as)h Fs(-e)p Ft(.)1110 2451 y Fs(errtrace)96
+b Ft(Same)30 b(as)h Fs(-E)p Ft(.)1110 2610 y Fs(functrace)1590
+2720 y Ft(Same)f(as)h Fs(-T)p Ft(.)1110 2879 y Fs(hashall)144
+b Ft(Same)30 b(as)h Fs(-h)p Ft(.)1110 3039 y Fs(histexpand)1590
+3148 y Ft(Same)f(as)h Fs(-H)p Ft(.)1110 3308 y Fs(history)144
+b Ft(Enable)39 b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h
+(Section)h(9.1)1590 3417 y([Bash)d(History)g(F)-8 b(acilities],)41
+b(page)c(109.)60 b(This)36 b(option)h(is)f(on)1590 3527
+y(b)m(y)30 b(default)h(in)f(in)m(teractiv)m(e)j(shells.)1110
+3686 y Fs(ignoreeof)1590 3796 y Ft(An)d(in)m(teractiv)m(e)j(shell)e
+(will)g(not)f(exit)h(up)s(on)e(reading)i(EOF.)1110 3955
 y Fs(keyword)144 b Ft(Same)30 b(as)h Fs(-k)p Ft(.)1110
 4115 y Fs(monitor)144 b Ft(Same)30 b(as)h Fs(-m)p Ft(.)1110
 4274 y Fs(noclobber)1590 4384 y Ft(Same)f(as)h Fs(-C)p
 Ft(.)1110 4543 y Fs(noexec)192 b Ft(Same)30 b(as)h Fs(-n)p
 Ft(.)1110 4702 y Fs(noglob)192 b Ft(Same)30 b(as)h Fs(-f)p
-Ft(.)1110 4862 y Fs(nolog)240 b Ft(Curren)m(tly)29 b(ignored.)1110
+Ft(.)1110 4862 y Fs(nolog)240 b Ft(Curren)m(tly)30 b(ignored.)1110
 5021 y Fs(notify)192 b Ft(Same)30 b(as)h Fs(-b)p Ft(.)1110
 5181 y Fs(nounset)144 b Ft(Same)30 b(as)h Fs(-u)p Ft(.)1110
 5340 y Fs(onecmd)192 b Ft(Same)30 b(as)h Fs(-t)p Ft(.)p
-eop
+eop end
 %%Page: 52 58
-52 57 bop 150 -116 a Ft(52)2572 b(Bash)31 b(Reference)g(Man)m(ual)1110
-299 y Fs(physical)96 b Ft(Same)30 b(as)h Fs(-P)p Ft(.)1110
-448 y Fs(pipefail)96 b Ft(If)44 b(set,)k(the)d(return)e(v)-5
-b(alue)44 b(of)g(a)h(pip)s(eline)40 b(is)k(the)g(v)-5
-b(alue)44 b(of)1590 557 y(the)33 b(last)g(\(righ)m(tmost\))h(command)f
-(to)h(exit)f(with)f(a)h(non-zero)1590 667 y(status,)28
-b(or)f(zero)g(if)e(all)h(commands)g(in)f(the)i(pip)s(eline)c(exit)k
-(suc-)1590 776 y(cessfully)-8 b(.)39 b(This)29 b(option)h(is)f
-(disabled)f(b)m(y)j(default.)1110 925 y Fs(posix)240
-b Ft(Change)36 b(the)g(b)s(eha)m(vior)f(of)h(Bash)g(where)f(the)h
-(default)f(op)s(er-)1590 1035 y(ation)c(di\013ers)e(from)h(the)h
-Fl(posix)f Ft(1003.2)k(standard)c(to)h(matc)m(h)1590
-1144 y(the)44 b(standard)f(\(see)h(Section)g(6.11)h([Bash)f(POSIX)e(Mo)
-s(de],)1590 1254 y(page)35 b(76\).)55 b(This)33 b(is)g(in)m(tended)h
-(to)h(mak)m(e)h(Bash)e(b)s(eha)m(v)m(e)i(as)f(a)1590
-1363 y(strict)30 b(sup)s(erset)f(of)i(that)g(standard.)1110
+TeXDict begin 52 57 bop 150 -116 a Ft(52)2572 b(Bash)31
+b(Reference)g(Man)m(ual)1110 299 y Fs(physical)96 b Ft(Same)30
+b(as)h Fs(-P)p Ft(.)1110 448 y Fs(pipefail)96 b Ft(If)44
+b(set,)k(the)d(return)e(v)-5 b(alue)45 b(of)f(a)h(pip)s(eline)e(is)i
+(the)f(v)-5 b(alue)45 b(of)1590 557 y(the)33 b(last)h(\(righ)m(tmost\))
+h(command)e(to)h(exit)g(with)f(a)g(non-zero)1590 667
+y(status,)28 b(or)f(zero)g(if)f(all)i(commands)e(in)g(the)h(pip)s
+(eline)f(exit)i(suc-)1590 776 y(cessfully)-8 b(.)41 b(This)30
+b(option)h(is)f(disabled)g(b)m(y)h(default.)1110 925
+y Fs(posix)240 b Ft(Change)36 b(the)g(b)s(eha)m(vior)g(of)g(Bash)g
+(where)f(the)h(default)g(op)s(er-)1590 1035 y(ation)c(di\013ers)e(from)
+g(the)h Fl(posix)f Ft(1003.2)k(standard)c(to)h(matc)m(h)1590
+1144 y(the)44 b(standard)f(\(see)h(Section)h(6.11)g([Bash)f(POSIX)e(Mo)
+s(de],)1590 1254 y(page)35 b(76\).)55 b(This)34 b(is)g(in)m(tended)h
+(to)g(mak)m(e)h(Bash)e(b)s(eha)m(v)m(e)i(as)f(a)1590
+1363 y(strict)c(sup)s(erset)e(of)i(that)g(standard.)1110
 1512 y Fs(privileged)1590 1622 y Ft(Same)f(as)h Fs(-p)p
 Ft(.)1110 1771 y Fs(verbose)144 b Ft(Same)30 b(as)h Fs(-v)p
 Ft(.)1110 1919 y Fs(vi)384 b Ft(Use)31 b(a)g Fs(vi)p
-Ft(-st)m(yle)f(line)f(editing)g(in)m(terface.)1110 2068
+Ft(-st)m(yle)g(line)g(editing)g(in)m(terface.)1110 2068
 y Fs(xtrace)192 b Ft(Same)30 b(as)h Fs(-x)p Ft(.)630
-2217 y Fs(-p)384 b Ft(T)-8 b(urn)33 b(on)h(privileged)e(mo)s(de.)51
-b(In)34 b(this)f(mo)s(de,)i(the)f Fs($BASH_ENV)e Ft(and)h
-Fs($ENV)1110 2326 y Ft(\014les)j(are)i(not)g(pro)s(cessed,)h(shell)d
-(functions)g(are)i(not)f(inherited)f(from)h(the)1110
-2436 y(en)m(vironmen)m(t,)e(and)e(the)h Fs(SHELLOPTS)e
-Ft(v)-5 b(ariable,)33 b(if)g(it)h(app)s(ears)f(in)g(the)h(en-)1110
-2545 y(vironmen)m(t,)c(is)f(ignored.)40 b(If)29 b(the)i(shell)d(is)h
-(started)i(with)e(the)h(e\013ectiv)m(e)i(user)1110 2655
-y(\(group\))e(id)f(not)h(equal)g(to)g(the)g(real)g(user)f(\(group\))i
-(id,)e(and)g(the)h Fs(-p)f Ft(option)1110 2765 y(is)39
-b(not)h(supplied,)g(these)g(actions)h(are)f(tak)m(en)h(and)f(the)g
-(e\013ectiv)m(e)i(user)d(id)1110 2874 y(is)c(set)i(to)h(the)e(real)g
-(user)g(id.)57 b(If)36 b(the)h Fs(-p)f Ft(option)f(is)h(supplied)d(at)k
-(startup,)1110 2984 y(the)29 b(e\013ectiv)m(e)i(user)e(id)f(is)g(not)i
-(reset.)40 b(T)-8 b(urning)28 b(this)g(option)g(o\013)i(causes)g(the)
-1110 3093 y(e\013ectiv)m(e)d(user)e(and)g(group)g(ids)g(to)h(b)s(e)f
-(set)h(to)h(the)f(real)f(user)g(and)g(group)g(ids.)630
-3242 y Fs(-t)384 b Ft(Exit)30 b(after)h(reading)e(and)h(executing)g
-(one)h(command.)630 3391 y Fs(-u)384 b Ft(T)-8 b(reat)38
-b(unset)e(v)-5 b(ariables)35 b(as)j(an)e(error)h(when)e(p)s(erforming)g
-(parameter)i(ex-)1110 3500 y(pansion.)57 b(An)36 b(error)f(message)j
-(will)33 b(b)s(e)j(written)f(to)i(the)g(standard)e(error,)1110
-3610 y(and)30 b(a)h(non-in)m(teractiv)m(e)g(shell)d(will)g(exit.)630
-3759 y Fs(-v)384 b Ft(Prin)m(t)29 b(shell)g(input)f(lines)h(as)i(they)f
-(are)h(read.)630 3907 y Fs(-x)384 b Ft(Prin)m(t)81 b(a)i(trace)h(of)e
-(simple)e(commands,)96 b Fs(\\)p Ft(fBfor)p Fs(\\)p Ft(fP)81
+2217 y Fs(-p)384 b Ft(T)-8 b(urn)33 b(on)h(privileged)h(mo)s(de.)51
+b(In)34 b(this)g(mo)s(de,)h(the)f Fs($BASH_ENV)e Ft(and)h
+Fs($ENV)1110 2326 y Ft(\014les)k(are)h(not)g(pro)s(cessed,)h(shell)f
+(functions)f(are)h(not)f(inherited)h(from)f(the)1110
+2436 y(en)m(vironmen)m(t,)f(and)d(the)h Fs(SHELLOPTS)e
+Ft(v)-5 b(ariable,)35 b(if)f(it)h(app)s(ears)e(in)h(the)g(en-)1110
+2545 y(vironmen)m(t,)d(is)f(ignored.)41 b(If)29 b(the)i(shell)f(is)g
+(started)h(with)f(the)g(e\013ectiv)m(e)j(user)1110 2655
+y(\(group\))d(id)g(not)g(equal)h(to)f(the)g(real)h(user)e(\(group\))i
+(id,)f(and)f(the)h Fs(-p)f Ft(option)1110 2765 y(is)40
+b(not)g(supplied,)i(these)e(actions)i(are)e(tak)m(en)h(and)f(the)g
+(e\013ectiv)m(e)j(user)c(id)1110 2874 y(is)d(set)h(to)h(the)e(real)h
+(user)f(id.)58 b(If)36 b(the)h Fs(-p)f Ft(option)g(is)h(supplied)e(at)i
+(startup,)1110 2984 y(the)29 b(e\013ectiv)m(e)j(user)d(id)g(is)g(not)h
+(reset.)40 b(T)-8 b(urning)29 b(this)g(option)g(o\013)h(causes)g(the)
+1110 3093 y(e\013ectiv)m(e)e(user)d(and)g(group)g(ids)h(to)g(b)s(e)f
+(set)h(to)h(the)f(real)g(user)f(and)g(group)g(ids.)630
+3242 y Fs(-t)384 b Ft(Exit)31 b(after)g(reading)f(and)g(executing)h
+(one)g(command.)630 3391 y Fs(-u)384 b Ft(T)-8 b(reat)38
+b(unset)e(v)-5 b(ariables)37 b(as)h(an)e(error)h(when)e(p)s(erforming)h
+(parameter)h(ex-)1110 3500 y(pansion.)58 b(An)36 b(error)f(message)j
+(will)e(b)s(e)g(written)g(to)h(the)g(standard)e(error,)1110
+3610 y(and)30 b(a)h(non-in)m(teractiv)m(e)i(shell)d(will)h(exit.)630
+3759 y Fs(-v)384 b Ft(Prin)m(t)30 b(shell)h(input)e(lines)i(as)g(they)f
+(are)h(read.)630 3907 y Fs(-x)384 b Ft(Prin)m(t)82 b(a)h(trace)h(of)e
+(simple)g(commands,)96 b Fs(\\)p Ft(fBfor)p Fs(\\)p Ft(fP)81
 b(commands,)1110 4017 y Fs(\\)p Ft(fBcase)p Fs(\\)p Ft(fP)50
-b(commands,)55 b Fs(\\)p Ft(fBselect)p Fs(\\)p Ft(fP)50
-b(commands,)55 b(and)50 b(arithmetic)1110 4127 y Fs(\\)p
-Ft(fBfor)p Fs(\\)p Ft(fP)31 b(commands)g(and)g(their)g(argumen)m(ts)h
-(or)f(asso)s(ciated)h(w)m(ord)f(lists)1110 4236 y(after)k(they)g(are)g
-(expanded)f(and)h(b)s(efore)f(they)h(are)g(executed.)55
-b(The)34 b(v)-5 b(alue)1110 4346 y(of)34 b(the)g Fs(PS4)f
-Ft(v)-5 b(ariable)33 b(is)g(expanded)h(and)f(the)h(resultan)m(t)g(v)-5
-b(alue)33 b(is)g(prin)m(ted)1110 4455 y(b)s(efore)d(the)h(command)f
-(and)f(its)h(expanded)g(argumen)m(ts.)630 4604 y Fs(-B)384
-b Ft(The)41 b(shell)e(will)f(p)s(erform)i(brace)h(expansion)f(\(see)i
-(Section)f(3.5.1)h([Brace)1110 4714 y(Expansion],)29
-b(page)i(17\).)42 b(This)29 b(option)h(is)f(on)h(b)m(y)h(default.)630
-4862 y Fs(-C)384 b Ft(Prev)m(en)m(t)25 b(output)e(redirection)f(using)g
-(`)p Fs(>)p Ft(',)j(`)p Fs(>&)p Ft(',)g(and)e(`)p Fs(<>)p
-Ft(')g(from)h(o)m(v)m(erwriting)1110 4972 y(existing)29
-b(\014les.)630 5121 y Fs(-E)384 b Ft(If)39 b(set,)j(an)m(y)e(trap)f(on)
-g Fs(ERR)g Ft(is)f(inherited)f(b)m(y)i(shell)f(functions,)i(command)
-1110 5230 y(substitutions,)33 b(and)g(commands)g(executed)i(in)e(a)h
-(subshell)d(en)m(vironmen)m(t.)1110 5340 y(The)f Fs(ERR)f
-Ft(trap)i(is)e(normally)g(not)h(inherited)e(in)h(suc)m(h)h(cases.)p
-eop
+b(commands,)55 b Fs(\\)p Ft(fBselect)p Fs(\\)p Ft(fP)c(commands,)k(and)
+50 b(arithmetic)1110 4127 y Fs(\\)p Ft(fBfor)p Fs(\\)p
+Ft(fP)31 b(commands)g(and)g(their)h(argumen)m(ts)g(or)f(asso)s(ciated)i
+(w)m(ord)e(lists)1110 4236 y(after)k(they)g(are)g(expanded)f(and)h(b)s
+(efore)f(they)h(are)g(executed.)55 b(The)34 b(v)-5 b(alue)1110
+4346 y(of)34 b(the)g Fs(PS4)f Ft(v)-5 b(ariable)35 b(is)f(expanded)g
+(and)f(the)h(resultan)m(t)h(v)-5 b(alue)34 b(is)g(prin)m(ted)1110
+4455 y(b)s(efore)c(the)h(command)f(and)f(its)i(expanded)f(argumen)m
+(ts.)630 4604 y Fs(-B)384 b Ft(The)41 b(shell)g(will)g(p)s(erform)f
+(brace)h(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110
+4714 y(Expansion],)30 b(page)h(17\).)42 b(This)30 b(option)h(is)f(on)g
+(b)m(y)h(default.)630 4862 y Fs(-C)384 b Ft(Prev)m(en)m(t)25
+b(output)e(redirection)h(using)f(`)p Fs(>)p Ft(',)i(`)p
+Fs(>&)p Ft(',)g(and)e(`)p Fs(<>)p Ft(')g(from)h(o)m(v)m(erwriting)1110
+4972 y(existing)31 b(\014les.)630 5121 y Fs(-E)384 b
+Ft(If)39 b(set,)j(an)m(y)e(trap)f(on)g Fs(ERR)g Ft(is)g(inherited)g(b)m
+(y)g(shell)h(functions,)h(command)1110 5230 y(substitutions,)35
+b(and)e(commands)g(executed)i(in)f(a)g(subshell)f(en)m(vironmen)m(t.)
+1110 5340 y(The)d Fs(ERR)f Ft(trap)i(is)f(normally)h(not)f(inherited)g
+(in)g(suc)m(h)g(cases.)p eop end
 %%Page: 53 59
-53 58 bop 150 -116 a Ft(Chapter)30 b(4:)41 b(Shell)28
-b(Builtin)g(Commands)2069 b(53)630 299 y Fs(-H)384 b
-Ft(Enable)37 b(`)p Fs(!)p Ft(')i(st)m(yle)g(history)e(substitution)f
-(\(see)j(Section)g(9.3)g([History)f(In-)1110 408 y(teraction],)g(page)e
-(111\).)57 b(This)33 b(option)i(is)f(on)h(b)m(y)h(default)e(for)h(in)m
+TeXDict begin 53 58 bop 150 -116 a Ft(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y Fs(-H)384
+b Ft(Enable)38 b(`)p Fs(!)p Ft(')h(st)m(yle)h(history)e(substitution)g
+(\(see)h(Section)h(9.3)f([History)g(In-)1110 408 y(teraction],)g(page)d
+(111\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m
 (teractiv)m(e)1110 518 y(shells.)630 682 y Fs(-P)384
-b Ft(If)43 b(set,)k(do)c(not)g(follo)m(w)f(sym)m(b)s(olic)g(links)e
-(when)i(p)s(erforming)f(commands)1110 792 y(suc)m(h)29
-b(as)h Fs(cd)f Ft(whic)m(h)f(c)m(hange)i(the)g(curren)m(t)f(directory)
--8 b(.)41 b(The)28 b(ph)m(ysical)h(direc-)1110 902 y(tory)34
-b(is)f(used)g(instead.)51 b(By)34 b(default,)g(Bash)g(follo)m(ws)f(the)
-h(logical)f(c)m(hain)h(of)1110 1011 y(directories)i(when)f(p)s
-(erforming)g(commands)h(whic)m(h)f(c)m(hange)j(the)f(curren)m(t)1110
-1121 y(directory)-8 b(.)1110 1258 y(F)g(or)31 b(example,)f(if)f(`)p
-Fs(/usr/sys)p Ft(')f(is)h(a)h(sym)m(b)s(olic)f(link)f(to)i(`)p
+b Ft(If)43 b(set,)k(do)c(not)g(follo)m(w)h(sym)m(b)s(olic)g(links)e
+(when)g(p)s(erforming)g(commands)1110 792 y(suc)m(h)29
+b(as)h Fs(cd)f Ft(whic)m(h)g(c)m(hange)h(the)g(curren)m(t)f(directory)
+-8 b(.)42 b(The)28 b(ph)m(ysical)j(direc-)1110 902 y(tory)j(is)g(used)f
+(instead.)52 b(By)34 b(default,)h(Bash)f(follo)m(ws)h(the)f(logical)i
+(c)m(hain)f(of)1110 1011 y(directories)j(when)d(p)s(erforming)h
+(commands)g(whic)m(h)g(c)m(hange)i(the)f(curren)m(t)1110
+1121 y(directory)-8 b(.)1110 1258 y(F)g(or)31 b(example,)g(if)f(`)p
+Fs(/usr/sys)p Ft(')e(is)i(a)g(sym)m(b)s(olic)h(link)f(to)g(`)p
 Fs(/usr/local/sys)p Ft(')1110 1367 y(then:)1350 1504
 y Fs($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 1614 y(/usr/sys)1350
 1723 y($)g(cd)h(..;)f(pwd)1350 1833 y(/usr)1110 1970
-y Ft(If)30 b Fs(set)f(-P)h Ft(is)g(on,)g(then:)1350 2107
+y Ft(If)30 b Fs(set)f(-P)h Ft(is)h(on,)f(then:)1350 2107
 y Fs($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 2216 y(/usr/local/sys)
 1350 2326 y($)g(cd)h(..;)f(pwd)1350 2436 y(/usr/local)630
 2600 y(-T)384 b Ft(If)31 b(set,)h(an)m(y)f(trap)g(on)g
-Fs(DEBUG)e Ft(is)h(inherited)f(b)m(y)i(shell)e(functions,)h(command)
-1110 2710 y(substitutions,)j(and)g(commands)g(executed)i(in)e(a)h
-(subshell)d(en)m(vironmen)m(t.)1110 2819 y(The)f Fs(DEBUG)f
-Ft(trap)h(is)f(normally)g(not)i(inherited)d(in)h(suc)m(h)h(cases.)630
-2983 y Fs(--)384 b Ft(If)31 b(no)h(argumen)m(ts)f(follo)m(w)g(this)g
-(option,)g(then)g(the)h(p)s(ositional)e(parameters)1110
-3093 y(are)k(unset.)49 b(Otherwise,)33 b(the)h(p)s(ositional)d
-(parameters)j(are)g(set)g(to)g(the)g Fq(ar-)1110 3203
-y(gumen)m(ts)p Ft(,)d(ev)m(en)g(if)e(some)i(of)g(them)f(b)s(egin)f
-(with)g(a)i(`)p Fs(-)p Ft('.)630 3367 y Fs(-)432 b Ft(Signal)43
-b(the)i(end)f(of)h(options,)j(cause)d(all)f(remaining)e
-Fq(argumen)m(ts)49 b Ft(to)d(b)s(e)1110 3477 y(assigned)37
-b(to)i(the)f(p)s(ositional)e(parameters.)65 b(The)37
+Fs(DEBUG)e Ft(is)i(inherited)g(b)m(y)g(shell)g(functions,)g(command)
+1110 2710 y(substitutions,)k(and)e(commands)g(executed)i(in)f(a)g
+(subshell)f(en)m(vironmen)m(t.)1110 2819 y(The)d Fs(DEBUG)f
+Ft(trap)h(is)g(normally)h(not)g(inherited)f(in)g(suc)m(h)g(cases.)630
+2983 y Fs(--)384 b Ft(If)31 b(no)h(argumen)m(ts)f(follo)m(w)i(this)f
+(option,)g(then)f(the)h(p)s(ositional)h(parameters)1110
+3093 y(are)h(unset.)49 b(Otherwise,)34 b(the)g(p)s(ositional)g
+(parameters)g(are)g(set)g(to)g(the)g Fq(ar-)1110 3203
+y(gumen)m(ts)p Ft(,)d(ev)m(en)g(if)f(some)h(of)g(them)f(b)s(egin)g
+(with)g(a)h(`)p Fs(-)p Ft('.)630 3367 y Fs(-)432 b Ft(Signal)45
+b(the)g(end)f(of)h(options,)k(cause)c(all)h(remaining)e
+Fq(argumen)m(ts)49 b Ft(to)d(b)s(e)1110 3477 y(assigned)38
+b(to)h(the)f(p)s(ositional)h(parameters.)65 b(The)37
 b(`)p Fs(-x)p Ft(')h(and)g(`)p Fs(-v)p Ft(')g(options)1110
 3586 y(are)25 b(turned)e(o\013.)40 b(If)24 b(there)h(are)g(no)f
-(argumen)m(ts,)i(the)f(p)s(ositional)e(parameters)1110
-3696 y(remain)29 b(unc)m(hanged.)630 3860 y(Using)d(`)p
-Fs(+)p Ft(')i(rather)f(than)g(`)p Fs(-)p Ft(')g(causes)h(these)f
-(options)g(to)h(b)s(e)e(turned)g(o\013.)40 b(The)27 b(options)g(can)630
-3970 y(also)35 b(b)s(e)g(used)f(up)s(on)g(in)m(v)m(o)s(cation)h(of)g
-(the)g(shell.)54 b(The)34 b(curren)m(t)h(set)h(of)f(options)g(ma)m(y)h
-(b)s(e)630 4079 y(found)29 b(in)g Fs($-)p Ft(.)630 4216
-y(The)43 b(remaining)f(N)h Fq(argumen)m(ts)48 b Ft(are)c(p)s(ositional)
-d(parameters)j(and)f(are)h(assigned,)i(in)630 4326 y(order,)30
+(argumen)m(ts,)i(the)f(p)s(ositional)h(parameters)1110
+3696 y(remain)k(unc)m(hanged.)630 3860 y(Using)d(`)p
+Fs(+)p Ft(')h(rather)f(than)g(`)p Fs(-)p Ft(')g(causes)h(these)f
+(options)h(to)g(b)s(e)e(turned)g(o\013.)40 b(The)27 b(options)h(can)630
+3970 y(also)36 b(b)s(e)f(used)f(up)s(on)g(in)m(v)m(o)s(cation)j(of)e
+(the)g(shell.)56 b(The)34 b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g
+(b)s(e)630 4079 y(found)29 b(in)h Fs($-)p Ft(.)630 4216
+y(The)43 b(remaining)h(N)f Fq(argumen)m(ts)48 b Ft(are)c(p)s(ositional)
+g(parameters)g(and)f(are)h(assigned,)j(in)630 4326 y(order,)30
 b(to)h Fs($1)p Ft(,)f Fs($2)p Ft(,)36 b(.)22 b(.)g(.)42
-b Fs($N)p Ft(.)e(The)30 b(sp)s(ecial)f(parameter)i Fs(#)f
-Ft(is)f(set)i(to)g(N.)630 4463 y(The)f(return)f(status)i(is)e(alw)m(a)m
-(ys)i(zero)g(unless)e(an)h(in)m(v)-5 b(alid)28 b(option)i(is)f
+b Fs($N)p Ft(.)e(The)30 b(sp)s(ecial)h(parameter)g Fs(#)f
+Ft(is)g(set)h(to)g(N.)630 4463 y(The)f(return)f(status)i(is)f(alw)m(a)m
+(ys)i(zero)f(unless)f(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f
 (supplied.)150 4732 y Fr(4.4)68 b(Sp)t(ecial)45 b(Builtins)275
-4981 y Ft(F)-8 b(or)25 b(historical)e(reasons,)j(the)e
-Fl(posix)g Ft(1003.2)j(standard)d(has)g(classi\014ed)f(sev)m(eral)i
-(builtin)c(commands)150 5091 y(as)37 b Fm(sp)-5 b(e)g(cial)p
-Ft(.)60 b(When)36 b(Bash)h(is)f(executing)g(in)f Fl(posix)h
-Ft(mo)s(de,)i(the)f(sp)s(ecial)e(builtins)d(di\013er)k(from)g(other)150
-5201 y(builtin)27 b(commands)j(in)f(three)i(resp)s(ects:)199
-5340 y(1.)61 b(Sp)s(ecial)29 b(builtins)d(are)31 b(found)e(b)s(efore)h
-(shell)f(functions)g(during)f(command)i(lo)s(okup.)p
-eop
+4981 y Ft(F)-8 b(or)25 b(historical)h(reasons,)g(the)e
+Fl(posix)g Ft(1003.2)j(standard)d(has)g(classi\014ed)h(sev)m(eral)h
+(builtin)e(commands)150 5091 y(as)37 b Fm(sp)-5 b(e)g(cial)p
+Ft(.)60 b(When)36 b(Bash)h(is)g(executing)g(in)f Fl(posix)g
+Ft(mo)s(de,)i(the)f(sp)s(ecial)g(builtins)e(di\013er)i(from)f(other)150
+5201 y(builtin)30 b(commands)g(in)g(three)h(resp)s(ects:)199
+5340 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.)p
+eop end
 %%Page: 54 60
-54 59 bop 150 -116 a Ft(54)2572 b(Bash)31 b(Reference)g(Man)m(ual)199
-299 y(2.)61 b(If)30 b(a)h(sp)s(ecial)e(builtin)e(returns)i(an)h(error)g
-(status,)h(a)g(non-in)m(teractiv)m(e)g(shell)d(exits.)199
-433 y(3.)61 b(Assignmen)m(t)29 b(statemen)m(ts)i(preceding)e(the)g
-(command)g(sta)m(y)i(in)d(e\013ect)j(in)d(the)i(shell)d(en)m(vironmen)m
-(t)330 543 y(after)k(the)f(command)h(completes.)275 702
-y(When)36 b(Bash)g(is)g(not)g(executing)h(in)e Fl(posix)g
-Ft(mo)s(de,)j(these)f(builtins)c(b)s(eha)m(v)m(e)k(no)f(di\013eren)m
-(tly)f(than)150 812 y(the)c(rest)f(of)h(the)f(Bash)h(builtin)26
-b(commands.)41 b(The)30 b(Bash)g Fl(posix)g Ft(mo)s(de)g(is)f(describ)s
-(ed)f(in)h(Section)h(6.11)150 922 y([Bash)h(POSIX)e(Mo)s(de],)i(page)g
-(76.)275 1056 y(These)f(are)g(the)h Fl(posix)f Ft(sp)s(ecial)f
-(builtins:)390 1191 y Fs(break)46 b(:)i(.)f(continue)f(eval)g(exec)h
-(exit)g(export)f(readonly)f(return)h(set)390 1300 y(shift)g(trap)h
-(unset)p eop
+TeXDict begin 54 59 bop 150 -116 a Ft(54)2572 b(Bash)31
+b(Reference)g(Man)m(ual)199 299 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 433 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 543 y(after)i(the)f(command)h
+(completes.)275 702 y(When)36 b(Bash)g(is)h(not)f(executing)i(in)e
+Fl(posix)f Ft(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 812 y(the)31 b(rest)f(of)h(the)f(Bash)h
+(builtin)e(commands.)41 b(The)30 b(Bash)g Fl(posix)g
+Ft(mo)s(de)g(is)g(describ)s(ed)f(in)h(Section)h(6.11)150
+922 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(76.)275 1056
+y(These)f(are)g(the)h Fl(posix)f Ft(sp)s(ecial)h(builtins:)390
+1191 y Fs(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f
+(readonly)f(return)h(set)390 1300 y(shift)g(trap)h(unset)p
+eop end
 %%Page: 55 61
-55 60 bop 150 -116 a Ft(Chapter)30 b(5:)41 b(Shell)28
-b(V)-8 b(ariables)2457 b(55)150 299 y Fo(5)80 b(Shell)55
-b(V)-13 b(ariables)275 525 y Ft(This)35 b(c)m(hapter)j(describ)s(es)d
-(the)i(shell)e(v)-5 b(ariables)36 b(that)i(Bash)f(uses.)61
-b(Bash)37 b(automatically)g(assigns)150 635 y(default)30
-b(v)-5 b(alues)29 b(to)i(a)g(n)m(um)m(b)s(er)e(of)i(v)-5
+TeXDict begin 55 60 bop 150 -116 a Ft(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(55)150 299 y Fo(5)80
+b(Shell)53 b(V)-13 b(ariables)275 525 y Ft(This)36 b(c)m(hapter)i
+(describ)s(es)e(the)h(shell)g(v)-5 b(ariables)38 b(that)g(Bash)f(uses.)
+61 b(Bash)37 b(automatically)j(assigns)150 635 y(default)31
+b(v)-5 b(alues)30 b(to)h(a)g(n)m(um)m(b)s(er)e(of)i(v)-5
 b(ariables.)150 887 y Fr(5.1)68 b(Bourne)45 b(Shell)g(V)-11
-b(ariables)275 1130 y Ft(Bash)36 b(uses)g(certain)g(shell)e(v)-5
-b(ariables)35 b(in)g(the)i(same)g(w)m(a)m(y)g(as)f(the)h(Bourne)f
-(shell.)57 b(In)35 b(some)i(cases,)150 1240 y(Bash)31
-b(assigns)e(a)i(default)e(v)-5 b(alue)30 b(to)h(the)g(v)-5
-b(ariable.)150 1396 y Fs(CDPATH)192 b Ft(A)39 b(colon-separated)h(list)
-d(of)i(directories)f(used)h(as)g(a)g(searc)m(h)h(path)e(for)h(the)g
+b(ariables)275 1130 y Ft(Bash)36 b(uses)g(certain)h(shell)f(v)-5
+b(ariables)37 b(in)f(the)h(same)g(w)m(a)m(y)g(as)f(the)h(Bourne)f
+(shell.)59 b(In)35 b(some)i(cases,)150 1240 y(Bash)31
+b(assigns)f(a)h(default)f(v)-5 b(alue)31 b(to)g(the)g(v)-5
+b(ariable.)150 1396 y Fs(CDPATH)192 b Ft(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
 Fs(cd)f Ft(builtin)630 1505 y(command.)150 1662 y Fs(HOME)288
-b Ft(The)23 b(curren)m(t)h(user's)f(home)g(directory;)j(the)e(default)f
-(for)g(the)h Fs(cd)f Ft(builtin)d(command.)38 b(The)630
-1771 y(v)-5 b(alue)36 b(of)g(this)f(v)-5 b(ariable)35
-b(is)h(also)g(used)f(b)m(y)h(tilde)f(expansion)g(\(see)j(Section)e
-(3.5.2)i([Tilde)630 1881 y(Expansion],)29 b(page)i(18\).)150
-2037 y Fs(IFS)336 b Ft(A)25 b(list)g(of)g(c)m(haracters)i(that)f
-(separate)g(\014elds;)g(used)f(when)f(the)i(shell)d(splits)h(w)m(ords)g
+b Ft(The)23 b(curren)m(t)h(user's)f(home)g(directory;)k(the)d(default)g
+(for)f(the)h Fs(cd)f Ft(builtin)g(command.)38 b(The)630
+1771 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 1881 y(Expansion],)30 b(page)h(18\).)150
+2037 y Fs(IFS)336 b Ft(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 2147 y(of)31 b(expansion.)150 2303 y Fs(MAIL)288
-b Ft(If)26 b(this)e(parameter)j(is)e(set)h(to)h(a)g(\014lename)e(and)g
-(the)h Fs(MAILPATH)e Ft(v)-5 b(ariable)25 b(is)g(not)h(set,)i(Bash)630
-2413 y(informs)h(the)h(user)g(of)g(the)h(arriv)-5 b(al)29
-b(of)h(mail)f(in)g(the)i(sp)s(eci\014ed)e(\014le.)150
-2569 y Fs(MAILPATH)96 b Ft(A)33 b(colon-separated)h(list)e(of)h
-(\014lenames)g(whic)m(h)f(the)h(shell)e(p)s(erio)s(dically)f(c)m(hec)m
-(ks)k(for)f(new)630 2678 y(mail.)58 b(Eac)m(h)37 b(list)e(en)m(try)i
-(can)g(sp)s(ecify)e(the)i(message)h(that)f(is)f(prin)m(ted)f(when)g
-(new)h(mail)630 2788 y(arriv)m(es)28 b(in)g(the)h(mail)e(\014le)h(b)m
-(y)h(separating)f(the)h(\014le)f(name)h(from)f(the)h(message)h(with)d
-(a)j(`)p Fs(?)p Ft('.)630 2898 y(When)i(used)f(in)g(the)h(text)i(of)e
+b Ft(If)26 b(this)f(parameter)i(is)f(set)g(to)h(a)g(\014lename)f(and)f
+(the)h Fs(MAILPATH)e Ft(v)-5 b(ariable)27 b(is)f(not)g(set,)i(Bash)630
+2413 y(informs)i(the)g(user)g(of)g(the)h(arriv)-5 b(al)31
+b(of)f(mail)h(in)f(the)h(sp)s(eci\014ed)f(\014le.)150
+2569 y Fs(MAILPATH)96 b Ft(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 2678 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 2788 y(arriv)m(es)29 b(in)g(the)g(mail)g(\014le)g(b)m
+(y)g(separating)g(the)g(\014le)g(name)g(from)f(the)h(message)h(with)e
+(a)i(`)p Fs(?)p Ft('.)630 2898 y(When)i(used)f(in)h(the)g(text)i(of)e
 (the)g(message,)i Fs($_)e Ft(expands)f(to)i(the)f(name)g(of)h(the)f
-(curren)m(t)630 3007 y(mail)d(\014le.)150 3163 y Fs(OPTARG)192
-b Ft(The)30 b(v)-5 b(alue)30 b(of)g(the)h(last)f(option)g(argumen)m(t)h
+(curren)m(t)630 3007 y(mail)f(\014le.)150 3163 y Fs(OPTARG)192
+b Ft(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 Fs(getopts)f Ft(builtin.)150
-3320 y Fs(OPTIND)192 b Ft(The)30 b(index)f(of)h(the)h(last)f(option)g
-(argumen)m(t)h(pro)s(cessed)f(b)m(y)g(the)g Fs(getopts)f
-Ft(builtin.)150 3476 y Fs(PATH)288 b Ft(A)32 b(colon-separated)h(list)e
-(of)h(directories)f(in)f(whic)m(h)h(the)h(shell)e(lo)s(oks)i(for)g
-(commands.)45 b(A)630 3586 y(zero-length)d(\(n)m(ull\))f(directory)g
-(name)h(in)f(the)h(v)-5 b(alue)41 b(of)h Fs(PATH)f Ft(indicates)g(the)h
-(curren)m(t)630 3695 y(directory)-8 b(.)48 b(A)33 b(n)m(ull)d
-(directory)j(name)f(ma)m(y)i(app)s(ear)e(as)h(t)m(w)m(o)h(adjacen)m(t)g
-(colons,)f(or)g(as)g(an)630 3805 y(initial)28 b(or)i(trailing)e(colon.)
-150 3961 y Fs(PS1)336 b Ft(The)35 b(primary)e(prompt)i(string.)54
-b(The)35 b(default)g(v)-5 b(alue)34 b(is)h(`)p Fs(\\s-\\v\\$)28
-b Ft('.)56 b(See)36 b(Section)f(6.9)630 4071 y([Prin)m(ting)26
-b(a)i(Prompt],)g(page)h(75,)g(for)e(the)h(complete)g(list)f(of)g(escap)
+3320 y Fs(OPTIND)192 b Ft(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 Fs(getopts)f
+Ft(builtin.)150 3476 y Fs(PATH)288 b Ft(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 3586 y(zero-length)e(\(n)m(ull\))g(directory)f
+(name)g(in)g(the)g(v)-5 b(alue)42 b(of)g Fs(PATH)f Ft(indicates)i(the)f
+(curren)m(t)630 3695 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 3805 y(initial)f(or)e(trailing)h(colon.)150
+3961 y Fs(PS1)336 b Ft(The)35 b(primary)f(prompt)h(string.)55
+b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Fs(\\s-\\v\\$)28
+b Ft('.)56 b(See)36 b(Section)g(6.9)630 4071 y([Prin)m(ting)28
+b(a)g(Prompt],)g(page)h(75,)g(for)e(the)h(complete)h(list)g(of)e(escap)
 s(e)h(sequences)g(that)h(are)630 4180 y(expanded)h(b)s(efore)g
-Fs(PS1)f Ft(is)g(displa)m(y)m(ed.)150 4336 y Fs(PS2)336
-b Ft(The)30 b(secondary)g(prompt)g(string.)40 b(The)29
-b(default)h(v)-5 b(alue)30 b(is)f(`)p Fs(>)h Ft('.)150
+Fs(PS1)f Ft(is)h(displa)m(y)m(ed.)150 4336 y Fs(PS2)336
+b Ft(The)30 b(secondary)g(prompt)g(string.)41 b(The)29
+b(default)i(v)-5 b(alue)31 b(is)f(`)p Fs(>)g Ft('.)150
 4589 y Fr(5.2)68 b(Bash)45 b(V)-11 b(ariables)275 4832
-y Ft(These)36 b(v)-5 b(ariables)36 b(are)i(set)f(or)h(used)e(b)m(y)h
-(Bash,)i(but)d(other)i(shells)d(do)i(not)g(normally)f(treat)i(them)150
+y Ft(These)36 b(v)-5 b(ariables)38 b(are)g(set)f(or)h(used)e(b)m(y)h
+(Bash,)i(but)d(other)i(shells)f(do)g(not)g(normally)h(treat)g(them)150
 4941 y(sp)s(ecially)-8 b(.)275 5074 y(A)24 b(few)g(v)-5
-b(ariables)22 b(used)i(b)m(y)f(Bash)i(are)f(describ)s(ed)e(in)h
-(di\013eren)m(t)g(c)m(hapters:)38 b(v)-5 b(ariables)23
-b(for)h(con)m(trolling)150 5184 y(the)31 b(job)f(con)m(trol)g
-(facilities)f(\(see)i(Section)f(7.3)i([Job)e(Con)m(trol)g(V)-8
-b(ariables],)30 b(page)i(82\).)150 5340 y Fs(BASH)288
-b Ft(The)30 b(full)e(pathname)i(used)g(to)h(execute)h(the)e(curren)m(t)
-g(instance)g(of)h(Bash.)p eop
+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 5184 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(82\).)150 5340 y Fs(BASH)288
+b Ft(The)30 b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t)
+g(instance)h(of)g(Bash.)p eop end
 %%Page: 56 62
-56 61 bop 150 -116 a Ft(56)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fs(BASH_ARGC)630 408 y Ft(An)f(arra)m(y)h(v)-5
-b(ariable)29 b(whose)h(v)-5 b(alues)30 b(are)h(the)f(n)m(um)m(b)s(er)f
-(of)i(parameters)g(in)e(eac)m(h)i(frame)g(of)630 518
-y(the)26 b(curren)m(t)f(bash)g(execution)h(call)f(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 628 y(subroutine)h(\(shell)h(function)h(or)g(script)f(executed)j
-(with)d Fs(.)h Ft(or)h Fs(source)p Ft(\))e(is)g(at)i(the)g(top)g(of)630
-737 y(the)h(stac)m(k.)42 b(When)30 b(a)g(subroutine)f(is)g(executed,)i
-(the)g(n)m(um)m(b)s(er)e(of)h(parameters)h(passed)f(is)630
-847 y(pushed)f(on)m(to)i Fs(BASH_ARGC)p Ft(.)150 1017
-y Fs(BASH_ARGV)630 1127 y Ft(An)24 b(arra)m(y)g(v)-5
-b(ariable)23 b(con)m(taining)h(all)f(of)h(the)h(parameters)f(in)f(the)h
-(curren)m(t)g(bash)g(execution)630 1236 y(call)33 b(stac)m(k.)53
-b(The)34 b(\014nal)f(parameter)h(of)g(the)g(last)g(subroutine)e(call)h
-(is)g(at)i(the)f(top)h(of)f(the)630 1346 y(stac)m(k;)28
-b(the)c(\014rst)f(parameter)i(of)f(the)g(initial)e(call)h(is)g(at)i
-(the)f(b)s(ottom.)39 b(When)24 b(a)g(subroutine)630 1456
-y(is)29 b(executed,)j(the)e(parameters)h(supplied)c(are)k(pushed)e(on)m
-(to)i Fs(BASH_ARGV)p Ft(.)150 1626 y Fs(BASH_COMMAND)630
-1736 y Ft(The)39 b(command)h(curren)m(tly)f(b)s(eing)f(executed)j(or)e
-(ab)s(out)h(to)g(b)s(e)f(executed,)44 b(unless)38 b(the)630
-1845 y(shell)f(is)h(executing)g(a)h(command)g(as)g(the)f(result)g(of)h
-(a)g(trap,)i(in)c(whic)m(h)g(case)j(it)e(is)g(the)630
-1955 y(command)30 b(executing)h(at)g(the)f(time)g(of)h(the)g(trap.)150
-2125 y Fs(BASH_ENV)96 b Ft(If)28 b(this)f(v)-5 b(ariable)28
-b(is)f(set)i(when)f(Bash)g(is)g(in)m(v)m(ok)m(ed)h(to)g(execute)h(a)e
-(shell)f(script,)h(its)g(v)-5 b(alue)28 b(is)630 2235
-y(expanded)33 b(and)h(used)g(as)g(the)h(name)f(of)g(a)h(startup)f
-(\014le)f(to)i(read)f(b)s(efore)g(executing)h(the)630
-2345 y(script.)40 b(See)30 b(Section)g(6.2)i([Bash)f(Startup)e(Files],)
-h(page)h(65.)150 2515 y Fs(BASH_EXECUTION_STRING)630
-2625 y Ft(The)f(command)g(argumen)m(t)h(to)g(the)g(`)p
-Fs(-c)p Ft(')f(in)m(v)m(o)s(cation)g(option.)150 2795
-y Fs(BASH_LINENO)630 2905 y Ft(An)38 b(arra)m(y)h(v)-5
-b(ariable)37 b(whose)i(mem)m(b)s(ers)e(are)i(the)g(line)e(n)m(um)m(b)s
-(ers)g(in)g(source)i(\014les)e(corre-)630 3014 y(sp)s(onding)h(to)j
+TeXDict begin 56 61 bop 150 -116 a Ft(56)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(BASH_ARGC)630 408
+y Ft(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)f(of)i(parameters)g(in)f(eac)m
+(h)h(frame)g(of)630 518 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 628 y(subroutine)i(\(shell)i(function)g(or)f
+(script)g(executed)i(with)e Fs(.)g Ft(or)h Fs(source)p
+Ft(\))e(is)h(at)h(the)g(top)g(of)630 737 y(the)h(stac)m(k.)42
+b(When)30 b(a)g(subroutine)g(is)g(executed,)h(the)g(n)m(um)m(b)s(er)e
+(of)h(parameters)h(passed)f(is)630 847 y(pushed)f(on)m(to)i
+Fs(BASH_ARGC)p Ft(.)150 1017 y Fs(BASH_ARGV)630 1127
+y Ft(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
+1236 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
+1346 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
+1456 y(is)30 b(executed,)i(the)e(parameters)h(supplied)e(are)i(pushed)e
+(on)m(to)i Fs(BASH_ARGV)p Ft(.)150 1626 y Fs(BASH_COMMAND)630
+1736 y Ft(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
+1845 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
+1955 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.)150
+2125 y Fs(BASH_ENV)96 b Ft(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 2235
+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 2345 y(script.)41
+b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(65.)150
+2515 y Fs(BASH_EXECUTION_STRING)630 2625 y Ft(The)f(command)g(argumen)m
+(t)h(to)g(the)g(`)p Fs(-c)p Ft(')f(in)m(v)m(o)s(cation)i(option.)150
+2795 y Fs(BASH_LINENO)630 2905 y Ft(An)38 b(arra)m(y)h(v)-5
+b(ariable)39 b(whose)g(mem)m(b)s(ers)e(are)i(the)g(line)g(n)m(um)m(b)s
+(ers)e(in)h(source)h(\014les)f(corre-)630 3014 y(sp)s(onding)h(to)i
 (eac)m(h)g(mem)m(b)s(er)e(of)i Fq(FUNCNAME)p Ft(.)g Fs
-(${BASH_LINENO[$i]})35 b Ft(is)k(the)i(line)630 3124
-y(n)m(um)m(b)s(er)34 b(in)f(the)i(source)g(\014le)f(where)g
-Fs(${FUNCNAME[$i)27 b(+)j(1]})k Ft(w)m(as)h(called.)54
-b(The)34 b(corre-)630 3233 y(sp)s(onding)d(source)j(\014le)f(name)h(is)
-f Fs(${BASH_SOURCE[$i)26 b(+)k(1]})p Ft(.)50 b(Use)35
-b Fs(LINENO)d Ft(to)i(obtain)630 3343 y(the)d(curren)m(t)f(line)e(n)m
+(${BASH_LINENO[$i]})35 b Ft(is)40 b(the)h(line)630 3124
+y(n)m(um)m(b)s(er)34 b(in)g(the)h(source)g(\014le)g(where)f
+Fs(${FUNCNAME[$i)27 b(+)j(1]})k Ft(w)m(as)h(called.)56
+b(The)34 b(corre-)630 3233 y(sp)s(onding)e(source)i(\014le)g(name)g(is)
+g Fs(${BASH_SOURCE[$i)26 b(+)k(1]})p Ft(.)50 b(Use)35
+b Fs(LINENO)d Ft(to)i(obtain)630 3343 y(the)d(curren)m(t)f(line)g(n)m
 (um)m(b)s(er.)150 3513 y Fs(BASH_REMATCH)630 3623 y Ft(An)43
-b(arra)m(y)i(v)-5 b(ariable)42 b(whose)i(mem)m(b)s(ers)f(are)h
-(assigned)f(b)m(y)g(the)h(`)p Fs(=~)p Ft(')g(binary)e(op)s(erator)630
-3733 y(to)37 b(the)f Fs([[)g Ft(conditional)f(command)h(\(see)h
-(Section)f(3.2.4.2)j([Conditional)34 b(Constructs],)630
-3842 y(page)h(10\).)52 b(The)33 b(elemen)m(t)i(with)d(index)g(0)j(is)e
-(the)h(p)s(ortion)e(of)i(the)g(string)f(matc)m(hing)h(the)630
-3952 y(en)m(tire)28 b(regular)f(expression.)39 b(The)27
-b(elemen)m(t)i(with)d(index)h Fq(n)g Ft(is)g(the)h(p)s(ortion)f(of)h
-(the)g(string)630 4061 y(matc)m(hing)i(the)h Fq(n)p Ft(th)f(paren)m
-(thesized)g(sub)s(expression.)38 b(This)28 b(v)-5 b(ariable)29
-b(is)h(read-only)-8 b(.)150 4232 y Fs(BASH_SOURCE)630
-4341 y Ft(An)24 b(arra)m(y)h(v)-5 b(ariable)24 b(whose)g(mem)m(b)s(ers)
-g(are)h(the)g(source)f(\014lenames)g(corresp)s(onding)e(to)k(the)630
-4451 y(elemen)m(ts)31 b(in)e(the)h Fs(FUNCNAME)e Ft(arra)m(y)j(v)-5
+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 Fs(=~)p Ft(')g(binary)f(op)s(erator)630
+3733 y(to)37 b(the)f Fs([[)g Ft(conditional)i(command)e(\(see)h
+(Section)g(3.2.4.2)i([Conditional)e(Constructs],)630
+3842 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
+3952 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27
+b(elemen)m(t)j(with)d(index)h Fq(n)f Ft(is)h(the)g(p)s(ortion)g(of)g
+(the)g(string)630 4061 y(matc)m(hing)j(the)g Fq(n)p Ft(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 4232 y Fs(BASH_SOURCE)630
+4341 y Ft(An)24 b(arra)m(y)h(v)-5 b(ariable)26 b(whose)e(mem)m(b)s(ers)
+g(are)h(the)g(source)f(\014lenames)h(corresp)s(onding)e(to)j(the)630
+4451 y(elemen)m(ts)32 b(in)e(the)g Fs(FUNCNAME)e Ft(arra)m(y)j(v)-5
 b(ariable.)150 4622 y Fs(BASH_SUBSHELL)630 4731 y Ft(Incremen)m(ted)34
-b(b)m(y)h(one)f(eac)m(h)i(time)e(a)g(subshell)e(or)i(subshell)d(en)m
-(vironmen)m(t)j(is)f(spa)m(wned.)630 4841 y(The)d(initial)d(v)-5
-b(alue)30 b(is)g(0.)150 5011 y Fs(BASH_VERSINFO)630 5121
-y Ft(A)36 b(readonly)f(arra)m(y)h(v)-5 b(ariable)35 b(\(see)h(Section)g
-(6.7)h([Arra)m(ys],)h(page)e(72\))h(whose)f(mem)m(b)s(ers)630
-5230 y(hold)31 b(v)m(ersion)h(information)e(for)i(this)f(instance)h(of)
-h(Bash.)46 b(The)32 b(v)-5 b(alues)31 b(assigned)h(to)h(the)630
+b(b)m(y)h(one)f(eac)m(h)i(time)f(a)f(subshell)g(or)g(subshell)f(en)m
+(vironmen)m(t)i(is)f(spa)m(wned.)630 4841 y(The)c(initial)h(v)-5
+b(alue)31 b(is)g(0.)150 5011 y Fs(BASH_VERSINFO)630 5121
+y Ft(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(72\))h(whose)f(mem)m(b)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
 5340 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g(follo)m(ws:)p
-eop
+eop end
 %%Page: 57 63
-57 62 bop 150 -116 a Ft(Chapter)30 b(5:)41 b(Shell)28
-b(V)-8 b(ariables)2457 b(57)630 299 y Fs(BASH_VERSINFO[0])1110
-408 y Ft(The)30 b(ma)5 b(jor)30 b(v)m(ersion)g(n)m(um)m(b)s(er)f(\(the)
-i Fq(release)5 b Ft(\).)630 582 y Fs(BASH_VERSINFO[1])1110
-692 y Ft(The)30 b(minor)f(v)m(ersion)h(n)m(um)m(b)s(er)f(\(the)i
+TeXDict begin 57 62 bop 150 -116 a Ft(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(57)630 299 y Fs(BASH_VERSINFO[0])
+1110 408 y Ft(The)30 b(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e
+(\(the)i Fq(release)5 b Ft(\).)630 582 y Fs(BASH_VERSINFO[1])1110
+692 y Ft(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i
 Fq(v)m(ersion)p Ft(\).)630 865 y Fs(BASH_VERSINFO[2])1110
 975 y Ft(The)f(patc)m(h)h(lev)m(el.)630 1148 y Fs(BASH_VERSINFO[3])1110
-1258 y Ft(The)f(build)d(v)m(ersion.)630 1431 y Fs(BASH_VERSINFO[4])1110
-1541 y Ft(The)j(release)h(status)f(\(e.g.,)j Fq(b)s(eta1)7
+1258 y Ft(The)f(build)f(v)m(ersion.)630 1431 y Fs(BASH_VERSINFO[4])1110
+1541 y Ft(The)h(release)i(status)e(\(e.g.,)j Fq(b)s(eta1)7
 b Ft(\).)630 1714 y Fs(BASH_VERSINFO[5])1110 1824 y Ft(The)30
-b(v)-5 b(alue)30 b(of)g Fs(MACHTYPE)p Ft(.)150 1998 y
-Fs(BASH_VERSION)630 2107 y Ft(The)g(v)m(ersion)g(n)m(um)m(b)s(er)f(of)h
-(the)h(curren)m(t)f(instance)g(of)h(Bash.)150 2281 y
+b(v)-5 b(alue)31 b(of)f Fs(MACHTYPE)p Ft(.)150 1998 y
+Fs(BASH_VERSION)630 2107 y Ft(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 2281 y
 Fs(COLUMNS)144 b Ft(Used)36 b(b)m(y)h(the)f Fs(select)f
-Ft(builtin)e(command)k(to)g(determine)e(the)i(terminal)e(width)g(when)
-630 2390 y(prin)m(ting)28 b(selection)i(lists.)40 b(Automatically)30
-b(set)h(up)s(on)d(receipt)j(of)f(a)h Fs(SIGWINCH)p Ft(.)150
-2564 y Fs(COMP_CWORD)630 2673 y Ft(An)38 b(index)f(in)m(to)h
-Fs(${COMP_WORDS})d Ft(of)k(the)g(w)m(ord)f(con)m(taining)g(the)g
-(curren)m(t)g(cursor)g(p)s(o-)630 2783 y(sition.)70 b(This)39
-b(v)-5 b(ariable)39 b(is)g(a)m(v)-5 b(ailable)40 b(only)g(in)f(shell)g
-(functions)g(in)m(v)m(ok)m(ed)i(b)m(y)f(the)h(pro-)630
-2892 y(grammable)35 b(completion)f(facilities)g(\(see)i(Section)f(8.6)h
-([Programmable)f(Completion],)630 3002 y(page)c(103\).)150
+Ft(builtin)h(command)h(to)g(determine)f(the)h(terminal)g(width)f(when)
+630 2390 y(prin)m(ting)30 b(selection)i(lists.)42 b(Automatically)33
+b(set)e(up)s(on)d(receipt)k(of)e(a)h Fs(SIGWINCH)p Ft(.)150
+2564 y Fs(COMP_CWORD)630 2673 y Ft(An)38 b(index)g(in)m(to)h
+Fs(${COMP_WORDS})c Ft(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e
+(curren)m(t)g(cursor)g(p)s(o-)630 2783 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
+2892 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g
+([Programmable)g(Completion],)630 3002 y(page)31 b(103\).)150
 3176 y Fs(COMP_LINE)630 3285 y Ft(The)38 b(curren)m(t)h(command)f
-(line.)64 b(This)36 b(v)-5 b(ariable)38 b(is)g(a)m(v)-5
-b(ailable)38 b(only)f(in)h(shell)e(functions)630 3395
-y(and)25 b(external)g(commands)g(in)m(v)m(ok)m(ed)g(b)m(y)g(the)h
-(programmable)e(completion)h(facilities)e(\(see)630 3504
-y(Section)30 b(8.6)i([Programmable)e(Completion],)f(page)i(103\).)150
-3678 y Fs(COMP_POINT)630 3787 y Ft(The)25 b(index)f(of)i(the)g(curren)m
-(t)f(cursor)g(p)s(osition)f(relativ)m(e)i(to)g(the)g(b)s(eginning)d(of)
-i(the)h(curren)m(t)630 3897 y(command.)40 b(If)27 b(the)h(curren)m(t)g
-(cursor)g(p)s(osition)e(is)h(at)h(the)g(end)g(of)g(the)g(curren)m(t)g
-(command,)630 4007 y(the)i(v)-5 b(alue)29 b(of)h(this)f(v)-5
-b(ariable)29 b(is)g(equal)g(to)i Fs(${#COMP_LINE})p Ft(.)37
-b(This)28 b(v)-5 b(ariable)29 b(is)g(a)m(v)-5 b(ailable)630
-4116 y(only)35 b(in)f(shell)g(functions)g(and)h(external)g(commands)h
-(in)m(v)m(ok)m(ed)g(b)m(y)f(the)h(programmable)630 4226
-y(completion)30 b(facilities)e(\(see)k(Section)e(8.6)h([Programmable)f
-(Completion],)g(page)h(103\).)150 4399 y Fs(COMP_WORDBREAKS)630
-4509 y Ft(The)e(set)i(of)e(c)m(haracters)j(that)e(the)g(Readline)e
-(library)g(treats)i(as)g(w)m(ord)g(separators)g(when)630
-4619 y(p)s(erforming)h(w)m(ord)i(completion.)49 b(If)33
-b Fs(COMP_WORDBREAKS)c Ft(is)k(unset,)h(it)e(loses)i(its)e(sp)s(ecial)
-630 4728 y(prop)s(erties,)d(ev)m(en)i(if)e(it)h(is)g(subsequen)m(tly)f
-(reset.)150 4902 y Fs(COMP_WORDS)630 5011 y Ft(An)36
-b(arra)m(y)g(v)-5 b(ariable)35 b(consisting)g(of)h(the)g(individual)31
-b(w)m(ords)36 b(in)e(the)i(curren)m(t)g(command)630 5121
-y(line.)86 b(This)44 b(v)-5 b(ariable)45 b(is)g(a)m(v)-5
-b(ailable)45 b(only)g(in)g(shell)f(functions)h(in)m(v)m(ok)m(ed)h(b)m
-(y)g(the)g(pro-)630 5230 y(grammable)35 b(completion)f(facilities)g
-(\(see)i(Section)f(8.6)h([Programmable)f(Completion],)630
-5340 y(page)c(103\).)p eop
+(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 3395
+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 3504
+y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(103\).)150
+3678 y Fs(COMP_POINT)630 3787 y Ft(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 3897 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 4007 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 Fs(${#COMP_LINE})p Ft(.)37
+b(This)29 b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630
+4116 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 4226
+y(completion)c(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g
+(Completion],)h(page)f(103\).)150 4399 y Fs(COMP_WORDBREAKS)630
+4509 y Ft(The)e(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
+4619 y(p)s(erforming)i(w)m(ord)h(completion.)51 b(If)33
+b Fs(COMP_WORDBREAKS)c Ft(is)34 b(unset,)g(it)f(loses)i(its)e(sp)s
+(ecial)630 4728 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g(subsequen)m
+(tly)f(reset.)150 4902 y Fs(COMP_WORDS)630 5011 y Ft(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 5121
+y(line.)88 b(This)45 b(v)-5 b(ariable)47 b(is)f(a)m(v)-5
+b(ailable)48 b(only)e(in)g(shell)g(functions)g(in)m(v)m(ok)m(ed)h(b)m
+(y)f(the)g(pro-)630 5230 y(grammable)36 b(completion)g(facilities)i
+(\(see)e(Section)g(8.6)g([Programmable)g(Completion],)630
+5340 y(page)31 b(103\).)p eop end
 %%Page: 58 64
-58 63 bop 150 -116 a Ft(58)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fs(COMPREPLY)630 408 y Ft(An)37 b(arra)m(y)h(v)-5
-b(ariable)36 b(from)h(whic)m(h)f(Bash)h(reads)g(the)h(p)s(ossible)c
-(completions)j(generated)630 518 y(b)m(y)c(a)g(shell)f(function)g(in)m
-(v)m(ok)m(ed)h(b)m(y)g(the)g(programmable)g(completion)f(facilit)m(y)g
-(\(see)i(Sec-)630 628 y(tion)c(8.6)h([Programmable)f(Completion],)g
-(page)h(103\).)150 774 y Fs(DIRSTACK)96 b Ft(An)26 b(arra)m(y)h(v)-5
-b(ariable)26 b(con)m(taining)g(the)h(curren)m(t)f(con)m(ten)m(ts)j(of)e
-(the)f(directory)h(stac)m(k.)41 b(Direc-)630 883 y(tories)32
-b(app)s(ear)g(in)f(the)i(stac)m(k)h(in)d(the)i(order)f(they)h(are)g
-(displa)m(y)m(ed)e(b)m(y)h(the)h Fs(dirs)e Ft(builtin.)630
-993 y(Assigning)d(to)j(mem)m(b)s(ers)f(of)g(this)f(arra)m(y)h(v)-5
-b(ariable)29 b(ma)m(y)i(b)s(e)e(used)h(to)h(mo)s(dify)d(directories)630
-1103 y(already)40 b(in)f(the)i(stac)m(k,)k(but)40 b(the)h
-Fs(pushd)e Ft(and)h Fs(popd)f Ft(builtins)e(m)m(ust)k(b)s(e)e(used)h
-(to)i(add)630 1212 y(and)37 b(remo)m(v)m(e)h(directories.)61
-b(Assignmen)m(t)36 b(to)i(this)e(v)-5 b(ariable)36 b(will)f(not)i(c)m
+TeXDict begin 58 63 bop 150 -116 a Ft(58)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(COMPREPLY)630 408
+y Ft(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
+518 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
+628 y(tion)d(8.6)g([Programmable)g(Completion],)h(page)f(103\).)150
+774 y Fs(DIRSTACK)96 b Ft(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 883 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 Fs(dirs)e Ft(builtin.)630
+993 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
+1103 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h
+Fs(pushd)e Ft(and)h Fs(popd)f Ft(builtins)h(m)m(ust)h(b)s(e)e(used)h
+(to)i(add)630 1212 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 1322 y(ren)m(t)c(directory)-8
-b(.)46 b(If)32 b Fs(DIRSTACK)e Ft(is)h(unset,)h(it)g(loses)g(its)g(sp)s
-(ecial)f(prop)s(erties,)g(ev)m(en)i(if)e(it)h(is)630
+b(.)47 b(If)32 b Fs(DIRSTACK)e Ft(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
 1431 y(subsequen)m(tly)d(reset.)150 1577 y Fs(EMACS)240
-b Ft(If)31 b(Bash)h(\014nds)d(this)i(v)-5 b(ariable)30
-b(in)g(the)i(en)m(vironmen)m(t)f(when)f(the)i(shell)d(starts)j(with)e
-(v)-5 b(alue)630 1687 y(`)p Fs(t)p Ft(',)38 b(it)d(assumes)h(that)g
-(the)h(shell)d(is)h(running)e(in)i(an)h(emacs)g(shell)f(bu\013er)g(and)
-g(disables)630 1797 y(line)29 b(editing.)150 1943 y Fs(EUID)288
-b Ft(The)30 b(n)m(umeric)f(e\013ectiv)m(e)j(user)e(id)f(of)h(the)h
-(curren)m(t)f(user.)40 b(This)29 b(v)-5 b(ariable)29
-b(is)g(readonly)-8 b(.)150 2089 y Fs(FCEDIT)192 b Ft(The)30
-b(editor)g(used)f(as)i(a)g(default)e(b)m(y)i(the)f(`)p
-Fs(-e)p Ft(')g(option)g(to)h(the)g Fs(fc)f Ft(builtin)d(command.)150
-2235 y Fs(FIGNORE)144 b Ft(A)35 b(colon-separated)h(list)e(of)i
-(su\016xes)e(to)i(ignore)f(when)f(p)s(erforming)f(\014lename)i(comple-)
-630 2345 y(tion.)j(A)25 b(\014le)f(name)h(whose)f(su\016x)g(matc)m(hes)
-i(one)f(of)g(the)g(en)m(tries)f(in)g Fs(FIGNORE)e Ft(is)i(excluded)630
-2454 y(from)30 b(the)g(list)f(of)i(matc)m(hed)g(\014le)f(names.)40
-b(A)31 b(sample)e(v)-5 b(alue)30 b(is)g(`)p Fs(.o:~)p
+b Ft(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 1687 y(`)p Fs(t)p Ft(',)38 b(it)e(assumes)g(that)g
+(the)h(shell)f(is)g(running)e(in)i(an)g(emacs)g(shell)h(bu\013er)e(and)
+g(disables)630 1797 y(line)c(editing.)150 1943 y Fs(EUID)288
+b Ft(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 2089 y Fs(FCEDIT)192 b Ft(The)30
+b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f(`)p
+Fs(-e)p Ft(')g(option)h(to)g(the)g Fs(fc)f Ft(builtin)g(command.)150
+2235 y Fs(FIGNORE)144 b Ft(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 2345 y(tion.)j(A)25 b(\014le)g(name)g(whose)f(su\016x)g(matc)m(hes)
+i(one)f(of)g(the)g(en)m(tries)g(in)g Fs(FIGNORE)d Ft(is)j(excluded)630
+2454 y(from)30 b(the)g(list)h(of)g(matc)m(hed)g(\014le)g(names.)40
+b(A)31 b(sample)f(v)-5 b(alue)31 b(is)g(`)p Fs(.o:~)p
 Ft(')150 2600 y Fs(FUNCNAME)96 b Ft(An)35 b(arra)m(y)i(v)-5
-b(ariable)34 b(con)m(taining)h(the)h(names)g(of)g(all)e(shell)g
-(functions)h(curren)m(tly)f(in)h(the)630 2710 y(execution)g(call)g
-(stac)m(k.)57 b(The)34 b(elemen)m(t)i(with)e(index)g(0)i(is)e(the)h
-(name)h(of)f(an)m(y)h(curren)m(tly-)630 2819 y(executing)h(shell)e
-(function.)57 b(The)37 b(b)s(ottom-most)g(elemen)m(t)g(is)f
-Fs(")p Ft(main)p Fs(")p Ft(.)57 b(This)35 b(v)-5 b(ariable)630
-2929 y(exists)32 b(only)g(when)g(a)h(shell)e(function)g(is)h
-(executing.)48 b(Assignmen)m(ts)32 b(to)h Fs(FUNCNAME)e
+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 2710 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 2819 y(executing)i(shell)f
+(function.)58 b(The)37 b(b)s(ottom-most)g(elemen)m(t)h(is)f
+Fs(")p Ft(main)p Fs(")p Ft(.)58 b(This)36 b(v)-5 b(ariable)630
+2929 y(exists)33 b(only)g(when)f(a)h(shell)g(function)f(is)h
+(executing.)49 b(Assignmen)m(ts)33 b(to)g Fs(FUNCNAME)e
 Ft(ha)m(v)m(e)630 3039 y(no)36 b(e\013ect)h(and)e(return)f(an)i(error)f
-(status.)57 b(If)36 b Fs(FUNCNAME)d Ft(is)i(unset,)i(it)e(loses)g(its)g
-(sp)s(ecial)630 3148 y(prop)s(erties,)29 b(ev)m(en)i(if)e(it)h(is)g
+(status.)57 b(If)36 b Fs(FUNCNAME)d Ft(is)j(unset,)h(it)f(loses)g(its)g
+(sp)s(ecial)630 3148 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g
 (subsequen)m(tly)f(reset.)150 3294 y Fs(GLOBIGNORE)630
-3404 y Ft(A)38 b(colon-separated)h(list)e(of)h(patterns)g(de\014ning)e
-(the)i(set)g(of)h(\014lenames)e(to)h(b)s(e)g(ignored)630
-3513 y(b)m(y)31 b(\014lename)f(expansion.)42 b(If)31
-b(a)h(\014lename)e(matc)m(hed)i(b)m(y)f(a)g(\014lename)g(expansion)f
-(pattern)630 3623 y(also)i(matc)m(hes)h(one)f(of)g(the)g(patterns)g(in)
-e Fs(GLOBIGNORE)p Ft(,)g(it)h(is)g(remo)m(v)m(ed)i(from)e(the)h(list)f
+3404 y Ft(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
+3513 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 3623 y(also)i(matc)m(hes)g(one)f(of)g(the)g(patterns)g(in)
+f Fs(GLOBIGNORE)p Ft(,)f(it)i(is)g(remo)m(v)m(ed)h(from)e(the)h(list)h
 (of)630 3733 y(matc)m(hes.)150 3879 y Fs(GROUPS)192 b
-Ft(An)36 b(arra)m(y)g(v)-5 b(ariable)35 b(con)m(taining)g(the)h(list)f
-(of)h(groups)g(of)g(whic)m(h)e(the)j(curren)m(t)e(user)h(is)f(a)630
-3988 y(mem)m(b)s(er.)47 b(Assignmen)m(ts)32 b(to)h Fs(GROUPS)e
+Ft(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
+3988 y(mem)m(b)s(er.)47 b(Assignmen)m(ts)33 b(to)g Fs(GROUPS)e
 Ft(ha)m(v)m(e)j(no)f(e\013ect)h(and)e(return)g(an)g(error)g(status.)48
-b(If)630 4098 y Fs(GROUPS)29 b Ft(is)g(unset,)h(it)g(loses)g(its)g(sp)s
-(ecial)f(prop)s(erties,)g(ev)m(en)i(if)e(it)h(is)g(subsequen)m(tly)f
-(reset.)150 4244 y Fs(histchars)630 4354 y Ft(Up)d(to)g(three)g(c)m
-(haracters)i(whic)m(h)c(con)m(trol)j(history)d(expansion,)i(quic)m(k)g
-(substitution,)f(and)630 4463 y(tok)m(enization)k(\(see)h(Section)e
-(9.3)i([History)e(In)m(teraction],)i(page)g(111\).)41
-b(The)29 b(\014rst)e(c)m(harac-)630 4573 y(ter)j(is)e(the)h
-Fq(history)f(expansion)g Ft(c)m(haracter,)k(that)e(is,)e(the)i(c)m
-(haracter)h(whic)m(h)c(signi\014es)h(the)630 4682 y(start)d(of)f(a)h
-(history)e(expansion,)i(normally)d(`)p Fs(!)p Ft('.)39
-b(The)24 b(second)g(c)m(haracter)i(is)d(the)h(c)m(haracter)630
-4792 y(whic)m(h)35 b(signi\014es)f(`quic)m(k)i(substitution')e(when)h
+b(If)630 4098 y Fs(GROUPS)29 b Ft(is)h(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)g(subsequen)m(tly)f
+(reset.)150 4244 y Fs(histchars)630 4354 y Ft(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 4463 y(tok)m(enization)k(\(see)f(Section)f
+(9.3)h([History)f(In)m(teraction],)i(page)f(111\).)41
+b(The)29 b(\014rst)e(c)m(harac-)630 4573 y(ter)j(is)f(the)g
+Fq(history)g(expansion)g Ft(c)m(haracter,)j(that)e(is,)f(the)h(c)m
+(haracter)h(whic)m(h)d(signi\014es)i(the)630 4682 y(start)25
+b(of)f(a)h(history)f(expansion,)i(normally)e(`)p Fs(!)p
+Ft('.)39 b(The)24 b(second)g(c)m(haracter)i(is)e(the)g(c)m(haracter)630
+4792 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
-4902 y(normally)25 b(`)p Fs(^)p Ft('.)39 b(The)26 b(optional)g(third)e
-(c)m(haracter)k(is)d(the)i(c)m(haracter)h(whic)m(h)d(indicates)g(that)
-630 5011 y(the)34 b(remainder)e(of)i(the)g(line)e(is)g(a)i(commen)m(t)h
+4902 y(normally)27 b(`)p Fs(^)p Ft('.)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 5011 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
-5121 y(w)m(ord,)i(usually)d(`)p Fs(#)p Ft('.)55 b(The)34
-b(history)g(commen)m(t)i(c)m(haracter)h(causes)e(history)f
-(substitution)630 5230 y(to)27 b(b)s(e)f(skipp)s(ed)e(for)j(the)f
-(remaining)f(w)m(ords)h(on)h(the)f(line.)38 b(It)27 b(do)s(es)f(not)h
-(necessarily)e(cause)630 5340 y(the)31 b(shell)d(parser)i(to)h(treat)g
-(the)g(rest)g(of)f(the)h(line)d(as)j(a)g(commen)m(t.)p
-eop
+5121 y(w)m(ord,)i(usually)f(`)p Fs(#)p Ft('.)55 b(The)34
+b(history)h(commen)m(t)h(c)m(haracter)h(causes)e(history)g
+(substitution)630 5230 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 5340 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.)p
+eop end
 %%Page: 59 65
-59 64 bop 150 -116 a Ft(Chapter)30 b(5:)41 b(Shell)28
-b(V)-8 b(ariables)2457 b(59)150 299 y Fs(HISTCMD)144
-b Ft(The)35 b(history)g(n)m(um)m(b)s(er,)h(or)f(index)f(in)h(the)h
-(history)e(list,)i(of)g(the)g(curren)m(t)f(command.)56
-b(If)630 408 y Fs(HISTCMD)28 b Ft(is)g(unset,)i(it)f(loses)h(its)f(sp)s
-(ecial)f(prop)s(erties,)h(ev)m(en)h(if)f(it)g(is)g(subsequen)m(tly)f
-(reset.)150 578 y Fs(HISTCONTROL)630 688 y Ft(A)40 b(colon-separated)h
-(list)e(of)h(v)-5 b(alues)39 b(con)m(trolling)g(ho)m(w)h(commands)g
-(are)h(sa)m(v)m(ed)g(on)f(the)630 797 y(history)28 b(list.)39
-b(If)28 b(the)h(list)f(of)h(v)-5 b(alues)28 b(includes)e(`)p
-Fs(ignorespace)p Ft(',)h(lines)g(whic)m(h)h(b)s(egin)f(with)630
-907 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g(sa)m(v)m(ed)g(in)f(the)
-h(history)e(list.)64 b(A)39 b(v)-5 b(alue)38 b(of)h(`)p
-Fs(ignoredups)p Ft(')630 1017 y(causes)34 b(lines)f(whic)m(h)g(matc)m
-(h)i(the)f(previous)e(history)h(en)m(try)i(to)g(not)f(b)s(e)f(sa)m(v)m
+TeXDict begin 59 64 bop 150 -116 a Ft(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(59)150 299 y Fs(HISTCMD)144
+b Ft(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 408 y Fs(HISTCMD)28 b Ft(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 578 y Fs(HISTCONTROL)630 688 y Ft(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 797 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
+Fs(ignorespace)p Ft(',)f(lines)i(whic)m(h)g(b)s(egin)f(with)630
+907 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
+Fs(ignoredups)p Ft(')630 1017 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 1126 y(of)32 b(`)p Fs(ignoreboth)p
-Ft(')d(is)i(shorthand)f(for)i(`)p Fs(ignorespace)p Ft(')d(and)i(`)p
-Fs(ignoredups)p Ft('.)42 b(A)32 b(v)-5 b(alue)31 b(of)630
-1236 y(`)p Fs(erasedups)p Ft(')g(causes)i(all)f(previous)g(lines)f
-(matc)m(hing)i(the)g(curren)m(t)g(line)e(to)j(b)s(e)e(remo)m(v)m(ed)630
-1345 y(from)42 b(the)h(history)e(list)h(b)s(efore)g(that)h(line)e(is)h
-(sa)m(v)m(ed.)78 b(An)m(y)43 b(v)-5 b(alue)42 b(not)h(in)e(the)i(ab)s
-(o)m(v)m(e)630 1455 y(list)33 b(is)h(ignored.)52 b(If)34
-b Fs(HISTCONTROL)e Ft(is)h(unset,)j(or)e(do)s(es)h(not)g(include)d(a)j
-(v)-5 b(alid)33 b(v)-5 b(alue,)35 b(all)630 1564 y(lines)28
-b(read)i(b)m(y)g(the)g(shell)e(parser)i(are)g(sa)m(v)m(ed)h(on)f(the)g
-(history)f(list,)g(sub)5 b(ject)30 b(to)g(the)g(v)-5
+Ft(')d(is)j(shorthand)e(for)i(`)p Fs(ignorespace)p Ft(')d(and)i(`)p
+Fs(ignoredups)p Ft('.)42 b(A)32 b(v)-5 b(alue)32 b(of)630
+1236 y(`)p Fs(erasedups)p Ft(')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
+1345 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 1455 y(list)35 b(is)g(ignored.)53 b(If)34
+b Fs(HISTCONTROL)e Ft(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 1564 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 1674 y(of)42 b Fs(HISTIGNORE)p Ft(.)73 b(The)42
-b(second)g(and)g(subsequen)m(t)f(lines)f(of)j(a)f(m)m(ulti-line)d(comp)
+b(second)g(and)g(subsequen)m(t)f(lines)h(of)h(a)f(m)m(ulti-line)h(comp)
 s(ound)630 1784 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added)
-f(to)h(the)g(history)f(regardless)g(of)h(the)f(v)-5 b(alue)630
+f(to)h(the)g(history)g(regardless)g(of)g(the)f(v)-5 b(alue)630
 1893 y(of)31 b Fs(HISTCONTROL)p Ft(.)150 2063 y Fs(HISTFILE)96
-b Ft(The)27 b(name)h(of)g(the)g(\014le)f(to)i(whic)m(h)e(the)h(command)
-f(history)g(is)g(sa)m(v)m(ed.)41 b(The)27 b(default)g(v)-5
-b(alue)630 2172 y(is)29 b(`)p Fs(~/.bash_history)p Ft('.)150
-2342 y Fs(HISTFILESIZE)630 2452 y Ft(The)d(maxim)m(um)e(n)m(um)m(b)s
-(er)h(of)h(lines)f(con)m(tained)h(in)f(the)h(history)f(\014le.)38
-b(When)26 b(this)f(v)-5 b(ariable)630 2561 y(is)24 b(assigned)h(a)h(v)
--5 b(alue,)26 b(the)g(history)e(\014le)h(is)f(truncated,)j(if)d
-(necessary)-8 b(,)28 b(to)e(con)m(tain)f(no)h(more)630
-2671 y(than)34 b(that)h(n)m(um)m(b)s(er)d(of)j(lines.)50
-b(The)34 b(history)f(\014le)g(is)g(also)h(truncated)g(to)h(this)e(size)
-h(after)630 2781 y(writing)28 b(it)i(when)g(an)g(in)m(teractiv)m(e)h
-(shell)e(exits.)40 b(The)30 b(default)g(v)-5 b(alue)30
-b(is)f(500.)150 2950 y Fs(HISTIGNORE)630 3060 y Ft(A)k(colon-separated)
-g(list)e(of)i(patterns)f(used)g(to)h(decide)f(whic)m(h)f(command)h
-(lines)f(should)630 3169 y(b)s(e)h(sa)m(v)m(ed)h(on)g(the)f(history)g
-(list.)45 b(Eac)m(h)33 b(pattern)g(is)e(anc)m(hored)i(at)g(the)f(b)s
-(eginning)e(of)j(the)630 3279 y(line)41 b(and)g(m)m(ust)h(matc)m(h)h
-(the)g(complete)g(line)d(\(no)j(implicit)c(`)p Fs(*)p
-Ft(')j(is)f(app)s(ended\).)75 b(Eac)m(h)630 3389 y(pattern)42
-b(is)f(tested)h(against)g(the)g(line)e(after)i(the)g(c)m(hec)m(ks)h(sp)
-s(eci\014ed)d(b)m(y)i Fs(HISTCONTROL)630 3498 y Ft(are)37
-b(applied.)57 b(In)36 b(addition)f(to)i(the)g(normal)f(shell)e(pattern)
-j(matc)m(hing)g(c)m(haracters,)j(`)p Fs(&)p Ft(')630
-3608 y(matc)m(hes)d(the)f(previous)f(history)g(line.)55
-b(`)p Fs(&)p Ft(')36 b(ma)m(y)h(b)s(e)e(escap)s(ed)h(using)f(a)h(bac)m
-(kslash;)j(the)630 3717 y(bac)m(kslash)33 b(is)g(remo)m(v)m(ed)i(b)s
-(efore)e(attempting)h(a)h(matc)m(h.)51 b(The)34 b(second)f(and)h
-(subsequen)m(t)630 3827 y(lines)c(of)j(a)g(m)m(ulti-line)c(comp)s(ound)
-i(command)h(are)h(not)f(tested,)i(and)e(are)g(added)g(to)h(the)630
-3937 y(history)c(regardless)h(of)h(the)f(v)-5 b(alue)30
-b(of)h Fs(HISTIGNORE)p Ft(.)630 4076 y Fs(HISTIGNORE)20
-b Ft(subsumes)g(the)j(function)e(of)i Fs(HISTCONTROL)p
-Ft(.)35 b(A)23 b(pattern)f(of)h(`)p Fs(&)p Ft(')g(is)e(iden)m(tical)630
-4186 y(to)26 b Fs(ignoredups)p Ft(,)e(and)h(a)h(pattern)g(of)f(`)p
-Fs([)31 b(]*)p Ft(')25 b(is)g(iden)m(tical)f(to)i Fs(ignorespace)p
+b Ft(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 2172 y(is)30 b(`)p Fs(~/.bash_history)p Ft('.)150
+2342 y Fs(HISTFILESIZE)630 2452 y Ft(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 2561 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
+2671 y(than)34 b(that)h(n)m(um)m(b)s(er)d(of)j(lines.)52
+b(The)34 b(history)g(\014le)g(is)g(also)h(truncated)f(to)h(this)f(size)
+h(after)630 2781 y(writing)30 b(it)h(when)f(an)g(in)m(teractiv)m(e)j
+(shell)e(exits.)41 b(The)30 b(default)h(v)-5 b(alue)31
+b(is)f(500.)150 2950 y Fs(HISTIGNORE)630 3060 y Ft(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 3169 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 3279 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 Fs(*)p
+Ft(')f(is)g(app)s(ended\).)75 b(Eac)m(h)630 3389 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 Fs(HISTCONTROL)630 3498 y Ft(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 Fs(&)p Ft(')630
+3608 y(matc)m(hes)d(the)f(previous)g(history)g(line.)57
+b(`)p Fs(&)p Ft(')36 b(ma)m(y)h(b)s(e)e(escap)s(ed)h(using)g(a)g(bac)m
+(kslash;)k(the)630 3717 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 3827 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
+3937 y(history)d(regardless)h(of)g(the)f(v)-5 b(alue)31
+b(of)g Fs(HISTIGNORE)p Ft(.)630 4076 y Fs(HISTIGNORE)20
+b Ft(subsumes)g(the)j(function)f(of)h Fs(HISTCONTROL)p
+Ft(.)35 b(A)23 b(pattern)f(of)h(`)p Fs(&)p Ft(')g(is)f(iden)m(tical)630
+4186 y(to)k Fs(ignoredups)p Ft(,)e(and)h(a)h(pattern)g(of)f(`)p
+Fs([)31 b(]*)p Ft(')25 b(is)h(iden)m(tical)h(to)f Fs(ignorespace)p
 Ft(.)36 b(Com)m(bining)630 4295 y(these)30 b(t)m(w)m(o)h(patterns,)f
-(separating)f(them)h(with)e(a)i(colon,)g(pro)m(vides)e(the)i
-(functionalit)m(y)e(of)630 4405 y Fs(ignoreboth)p Ft(.)150
-4575 y Fs(HISTSIZE)96 b Ft(The)42 b(maxim)m(um)f(n)m(um)m(b)s(er)g(of)i
-(commands)e(to)j(remem)m(b)s(er)d(on)h(the)h(history)e(list.)75
-b(The)630 4684 y(default)30 b(v)-5 b(alue)29 b(is)h(500.)150
-4854 y Fs(HISTTIMEFORMAT)630 4963 y Ft(If)44 b(this)f(v)-5
-b(ariable)43 b(is)g(set)h(and)g(not)g(n)m(ull,)i(its)e(v)-5
-b(alue)43 b(is)g(used)h(as)g(a)h(format)f(string)f(for)630
-5073 y Fq(strftime)c Ft(to)c(prin)m(t)e(the)i(time)f(stamp)g(asso)s
-(ciated)h(with)f(eac)m(h)h(history)f(en)m(try)g(displa)m(y)m(ed)630
-5183 y(b)m(y)g(the)f Fs(history)f Ft(builtin.)47 b(If)33
-b(this)g(v)-5 b(ariable)32 b(is)h(set,)i(time)e(stamps)h(are)g(written)
-e(to)j(the)630 5292 y(history)29 b(\014le)h(so)g(they)h(ma)m(y)g(b)s(e)
-f(preserv)m(ed)g(across)h(shell)d(sessions.)p eop
+(separating)g(them)g(with)f(a)h(colon,)h(pro)m(vides)e(the)h
+(functionalit)m(y)h(of)630 4405 y Fs(ignoreboth)p Ft(.)150
+4575 y Fs(HISTSIZE)96 b Ft(The)42 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
+(commands)e(to)j(remem)m(b)s(er)d(on)h(the)h(history)f(list.)77
+b(The)630 4684 y(default)31 b(v)-5 b(alue)30 b(is)h(500.)150
+4854 y Fs(HISTTIMEFORMAT)630 4963 y Ft(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
+5073 y Fq(strftime)c Ft(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
+5183 y(b)m(y)g(the)f Fs(history)f Ft(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 5292 y(history)30 b(\014le)h(so)f(they)h(ma)m(y)g(b)s(e)
+f(preserv)m(ed)g(across)h(shell)f(sessions.)p eop end
 %%Page: 60 66
-60 65 bop 150 -116 a Ft(60)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fs(HOSTFILE)96 b Ft(Con)m(tains)38 b(the)g(name)g(of)h(a)g
-(\014le)e(in)g(the)h(same)h(format)g(as)f(`)p Fs(/etc/hosts)p
-Ft(')e(that)j(should)630 408 y(b)s(e)i(read)h(when)f(the)i(shell)d
-(needs)h(to)i(complete)g(a)f(hostname.)76 b(The)42 b(list)e(of)i(p)s
-(ossible)630 518 y(hostname)26 b(completions)e(ma)m(y)j(b)s(e)d(c)m
-(hanged)j(while)c(the)j(shell)e(is)g(running;)h(the)h(next)f(time)630
-628 y(hostname)37 b(completion)g(is)f(attempted)i(after)g(the)f(v)-5
-b(alue)36 b(is)h(c)m(hanged,)i(Bash)e(adds)g(the)630
-737 y(con)m(ten)m(ts)27 b(of)f(the)g(new)f(\014le)g(to)i(the)f
-(existing)e(list.)38 b(If)25 b Fs(HOSTFILE)f Ft(is)h(set,)i(but)e(has)h
-(no)f(v)-5 b(alue,)630 847 y(Bash)41 b(attempts)g(to)g(read)f(`)p
-Fs(/etc/hosts)p Ft(')f(to)i(obtain)f(the)g(list)f(of)i(p)s(ossible)d
+TeXDict begin 60 65 bop 150 -116 a Ft(60)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(HOSTFILE)96 b Ft(Con)m(tains)39
+b(the)f(name)g(of)h(a)g(\014le)f(in)g(the)g(same)h(format)g(as)f(`)p
+Fs(/etc/hosts)p Ft(')e(that)j(should)630 408 y(b)s(e)i(read)h(when)f
+(the)i(shell)f(needs)f(to)i(complete)h(a)e(hostname.)76
+b(The)42 b(list)g(of)g(p)s(ossible)630 518 y(hostname)26
+b(completions)g(ma)m(y)h(b)s(e)d(c)m(hanged)j(while)e(the)h(shell)g(is)
+f(running;)h(the)g(next)f(time)630 628 y(hostname)37
+b(completion)i(is)e(attempted)h(after)g(the)f(v)-5 b(alue)37
+b(is)h(c)m(hanged,)h(Bash)e(adds)g(the)630 737 y(con)m(ten)m(ts)27
+b(of)f(the)g(new)f(\014le)h(to)h(the)f(existing)g(list.)40
+b(If)25 b Fs(HOSTFILE)f Ft(is)i(set,)h(but)e(has)h(no)f(v)-5
+b(alue,)630 847 y(Bash)41 b(attempts)g(to)g(read)f(`)p
+Fs(/etc/hosts)p Ft(')f(to)i(obtain)g(the)f(list)h(of)g(p)s(ossible)f
 (hostname)630 956 y(completions.)i(When)30 b Fs(HOSTFILE)e
-Ft(is)i(unset,)g(the)g(hostname)h(list)e(is)g(cleared.)150
+Ft(is)j(unset,)f(the)g(hostname)h(list)g(is)f(cleared.)150
 1125 y Fs(HOSTNAME)96 b Ft(The)30 b(name)g(of)h(the)f(curren)m(t)h
-(host.)150 1294 y Fs(HOSTTYPE)96 b Ft(A)30 b(string)g(describing)e(the)
-i(mac)m(hine)g(Bash)h(is)e(running)f(on.)150 1462 y Fs(IGNOREEOF)630
-1572 y Ft(Con)m(trols)e(the)i(action)f(of)g(the)g(shell)e(on)i(receipt)
-g(of)g(an)g Fs(EOF)f Ft(c)m(haracter)i(as)g(the)f(sole)g(input.)630
-1681 y(If)j(set,)i(the)f(v)-5 b(alue)31 b(denotes)g(the)g(n)m(um)m(b)s
-(er)f(of)h(consecutiv)m(e)h Fs(EOF)e Ft(c)m(haracters)i(that)f(can)h(b)
+(host.)150 1294 y Fs(HOSTTYPE)96 b Ft(A)30 b(string)h(describing)f(the)
+g(mac)m(hine)h(Bash)g(is)f(running)f(on.)150 1462 y Fs(IGNOREEOF)630
+1572 y Ft(Con)m(trols)e(the)h(action)g(of)f(the)g(shell)g(on)g(receipt)
+h(of)f(an)g Fs(EOF)f Ft(c)m(haracter)i(as)g(the)f(sole)h(input.)630
+1681 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 Fs(EOF)d Ft(c)m(haracters)i(that)f(can)h(b)
 s(e)630 1791 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f
-(input)f(line)g(b)s(efore)h(the)h(shell)e(will)f(exit.)69
-b(If)39 b(the)630 1901 y(v)-5 b(ariable)36 b(exists)g(but)g(do)s(es)g
-(not)h(ha)m(v)m(e)h(a)g(n)m(umeric)d(v)-5 b(alue)36 b(\(or)i(has)e(no)h
-(v)-5 b(alue\))36 b(then)h(the)630 2010 y(default)30
-b(is)g(10.)43 b(If)30 b(the)h(v)-5 b(ariable)29 b(do)s(es)i(not)g
-(exist,)g(then)f Fs(EOF)g Ft(signi\014es)f(the)i(end)f(of)h(input)630
-2120 y(to)g(the)g(shell.)39 b(This)28 b(is)i(only)f(in)g(e\013ect)j
-(for)e(in)m(teractiv)m(e)h(shells.)150 2288 y Fs(INPUTRC)144
-b Ft(The)68 b(name)h(of)f(the)h(Readline)e(initialization)f(\014le,)77
-b(o)m(v)m(erriding)67 b(the)i(default)f(of)630 2398 y(`)p
+(input)g(line)h(b)s(efore)f(the)h(shell)g(will)g(exit.)70
+b(If)39 b(the)630 1901 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 2010 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 Fs(EOF)g Ft(signi\014es)h(the)g(end)f(of)h(input)630
+2120 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 2288 y Fs(INPUTRC)144
+b Ft(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 2398 y(`)p
 Fs(~/.inputrc)p Ft('.)150 2567 y Fs(LANG)288 b Ft(Used)28
-b(to)h(determine)e(the)h(lo)s(cale)f(category)j(for)e(an)m(y)h
-(category)h(not)e(sp)s(eci\014cally)d(selected)630 2676
-y(with)k(a)i(v)-5 b(ariable)29 b(starting)h(with)f Fs(LC_)p
-Ft(.)150 2845 y Fs(LC_ALL)192 b Ft(This)27 b(v)-5 b(ariable)27
-b(o)m(v)m(errides)i(the)g(v)-5 b(alue)28 b(of)h Fs(LANG)f
-Ft(and)g(an)m(y)h(other)g Fs(LC_)f Ft(v)-5 b(ariable)27
-b(sp)s(ecifying)630 2954 y(a)k(lo)s(cale)f(category)-8
-b(.)150 3123 y Fs(LC_COLLATE)630 3232 y Ft(This)36 b(v)-5
-b(ariable)36 b(determines)h(the)h(collation)f(order)g(used)g(when)f
-(sorting)h(the)h(results)f(of)630 3342 y(\014lename)e(expansion,)i(and)
-f(determines)f(the)i(b)s(eha)m(vior)e(of)h(range)h(expressions,)g
-(equiv-)630 3452 y(alence)e(classes,)h(and)f(collating)f(sequences)h
-(within)d(\014lename)i(expansion)g(and)g(pattern)630
-3561 y(matc)m(hing)c(\(see)i(Section)e(3.5.8)i([Filename)e(Expansion],)
-f(page)i(22\).)150 3730 y Fs(LC_CTYPE)96 b Ft(This)35
-b(v)-5 b(ariable)35 b(determines)g(the)i(in)m(terpretation)f(of)h(c)m
-(haracters)h(and)e(the)g(b)s(eha)m(vior)g(of)630 3839
-y(c)m(haracter)46 b(classes)f(within)d(\014lename)i(expansion)g(and)g
-(pattern)h(matc)m(hing)g(\(see)g(Sec-)630 3949 y(tion)30
-b(3.5.8)i([Filename)e(Expansion],)f(page)i(22\).)150
-4118 y Fs(LC_MESSAGES)630 4227 y Ft(This)24 b(v)-5 b(ariable)25
-b(determines)g(the)h(lo)s(cale)g(used)f(to)i(translate)f(double-quoted)
+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 2676
+y(with)i(a)h(v)-5 b(ariable)31 b(starting)g(with)f Fs(LC_)p
+Ft(.)150 2845 y Fs(LC_ALL)192 b Ft(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 Fs(LANG)f
+Ft(and)g(an)m(y)h(other)g Fs(LC_)f Ft(v)-5 b(ariable)29
+b(sp)s(ecifying)630 2954 y(a)i(lo)s(cale)h(category)-8
+b(.)150 3123 y Fs(LC_COLLATE)630 3232 y Ft(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 3342 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 3452 y(alence)e(classes,)h(and)e(collating)i(sequences)e
+(within)f(\014lename)h(expansion)g(and)f(pattern)630
+3561 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g(Expansion],)
+e(page)h(22\).)150 3730 y Fs(LC_CTYPE)96 b Ft(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 3839
+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 3949 y(tion)31
+b(3.5.8)h([Filename)g(Expansion],)e(page)h(22\).)150
+4118 y Fs(LC_MESSAGES)630 4227 y Ft(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 4337 y(ceded)31 b(b)m(y)f(a)h(`)p
-Fs($)p Ft(')f(\(see)h(Section)g(3.1.2.5)h([Lo)s(cale)f(T)-8
-b(ranslation],)30 b(page)h(7\).)150 4505 y Fs(LC_NUMERIC)630
-4615 y Ft(This)e(v)-5 b(ariable)29 b(determines)g(the)i(lo)s(cale)f
-(category)i(used)e(for)g(n)m(um)m(b)s(er)f(formatting.)150
-4784 y Fs(LINENO)192 b Ft(The)30 b(line)f(n)m(um)m(b)s(er)g(in)g(the)h
-(script)g(or)g(shell)e(function)i(curren)m(tly)f(executing.)150
+Fs($)p Ft(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8
+b(ranslation],)32 b(page)f(7\).)150 4505 y Fs(LC_NUMERIC)630
+4615 y Ft(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
+4784 y Fs(LINENO)192 b Ft(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
 4952 y Fs(LINES)240 b Ft(Used)25 b(b)m(y)g(the)g Fs(select)e
-Ft(builtin)f(command)j(to)h(determine)e(the)h(column)f(length)g(for)h
-(prin)m(t-)630 5062 y(ing)30 b(selection)g(lists.)39
-b(Automatically)30 b(set)h(up)s(on)e(receipt)h(of)g(a)h
+Ft(builtin)i(command)g(to)h(determine)f(the)g(column)g(length)g(for)g
+(prin)m(t-)630 5062 y(ing)31 b(selection)h(lists.)41
+b(Automatically)33 b(set)e(up)s(on)e(receipt)i(of)f(a)h
 Fs(SIGWINCH)p Ft(.)150 5230 y Fs(MACHTYPE)96 b Ft(A)26
-b(string)f(that)i(fully)d(describ)s(es)g(the)i(system)g(t)m(yp)s(e)h
-(on)f(whic)m(h)e(Bash)j(is)e(executing,)i(in)e(the)630
-5340 y(standard)30 b Fl(gnu)g Fq(cpu-compan)m(y-system)h
-Ft(format.)p eop
+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
+5340 y(standard)k Fl(gnu)g Fq(cpu-compan)m(y-system)h
+Ft(format.)p eop end
 %%Page: 61 67
-61 66 bop 150 -116 a Ft(Chapter)30 b(5:)41 b(Shell)28
-b(V)-8 b(ariables)2457 b(61)150 299 y Fs(MAILCHECK)630
-408 y Ft(Ho)m(w)28 b(often)g(\(in)f(seconds\))h(that)g(the)f(shell)f
-(should)g(c)m(hec)m(k)j(for)e(mail)f(in)g(the)i(\014les)f(sp)s
-(eci\014ed)630 518 y(in)i(the)i Fs(MAILPATH)e Ft(or)i
-Fs(MAIL)e Ft(v)-5 b(ariables.)41 b(The)30 b(default)g(is)f(60)j
-(seconds.)42 b(When)30 b(it)g(is)g(time)630 628 y(to)37
-b(c)m(hec)m(k)h(for)e(mail,)h(the)g(shell)d(do)s(es)i(so)h(b)s(efore)f
-(displa)m(ying)e(the)i(primary)f(prompt.)57 b(If)630
-737 y(this)36 b(v)-5 b(ariable)36 b(is)g(unset,)i(or)f(set)h(to)g(a)f
-(v)-5 b(alue)37 b(that)g(is)f(not)i(a)f(n)m(um)m(b)s(er)f(greater)i
-(than)f(or)630 847 y(equal)30 b(to)h(zero,)g(the)g(shell)e(disables)f
+TeXDict begin 61 66 bop 150 -116 a Ft(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(61)150 299 y Fs(MAILCHECK)630
+408 y Ft(Ho)m(w)28 b(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 518 y(in)i(the)h Fs(MAILPATH)e Ft(or)i
+Fs(MAIL)e Ft(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 628 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
+737 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 847 y(equal)31 b(to)g(zero,)g(the)g(shell)g(disables)f
 (mail)h(c)m(hec)m(king.)150 1011 y Fs(OLDPWD)192 b Ft(The)30
-b(previous)f(w)m(orking)g(directory)h(as)h(set)g(b)m(y)f(the)h
+b(previous)g(w)m(orking)g(directory)h(as)g(set)g(b)m(y)f(the)h
 Fs(cd)e Ft(builtin.)150 1176 y Fs(OPTERR)192 b Ft(If)35
-b(set)i(to)f(the)h(v)-5 b(alue)35 b(1,)j(Bash)e(displa)m(ys)e(error)h
+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 Fs(getopts)630
-1285 y Ft(builtin)27 b(command.)150 1450 y Fs(OSTYPE)192
-b Ft(A)30 b(string)g(describing)e(the)i(op)s(erating)g(system)h(Bash)f
-(is)g(running)d(on.)150 1614 y Fs(PIPESTATUS)630 1724
-y Ft(An)c(arra)m(y)h(v)-5 b(ariable)22 b(\(see)j(Section)e(6.7)i([Arra)
-m(ys],)g(page)f(72\))h(con)m(taining)e(a)h(list)e(of)i(exit)f(sta-)630
-1833 y(tus)i(v)-5 b(alues)26 b(from)f(the)h(pro)s(cesses)g(in)e(the)i
-(most-recen)m(tly-executed)i(foreground)d(pip)s(eline)630
-1943 y(\(whic)m(h)k(ma)m(y)i(con)m(tain)g(only)f(a)g(single)f
+1285 y Ft(builtin)30 b(command.)150 1450 y Fs(OSTYPE)192
+b Ft(A)30 b(string)h(describing)f(the)g(op)s(erating)h(system)g(Bash)f
+(is)h(running)d(on.)150 1614 y Fs(PIPESTATUS)630 1724
+y Ft(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(72\))h(con)m(taining)g(a)f(list)g(of)g(exit)g
+(sta-)630 1833 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
+1943 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h
 (command\).)150 2107 y Fs(POSIXLY_CORRECT)630 2217 y
-Ft(If)j(this)g(v)-5 b(ariable)32 b(is)g(in)f(the)i(en)m(vironmen)m(t)g
-(when)e Fs(bash)h Ft(starts,)i(the)f(shell)e(en)m(ters)j
-Fl(posix)630 2326 y Ft(mo)s(de)22 b(\(see)h(Section)f(6.11)i([Bash)e
-(POSIX)f(Mo)s(de],)k(page)e(76\))g(b)s(efore)f(reading)f(the)h(startup)
-630 2436 y(\014les,)31 b(as)g(if)g(the)g(`)p Fs(--posix)p
-Ft(')f(in)m(v)m(o)s(cation)h(option)g(had)g(b)s(een)g(supplied.)40
-b(If)31 b(it)g(is)f(set)i(while)630 2545 y(the)f(shell)d(is)i(running,)
-d Fs(bash)j Ft(enables)f Fl(posix)h Ft(mo)s(de,)g(as)h(if)e(the)i
+Ft(If)h(this)h(v)-5 b(ariable)34 b(is)f(in)f(the)h(en)m(vironmen)m(t)h
+(when)d Fs(bash)h Ft(starts,)i(the)f(shell)g(en)m(ters)h
+Fl(posix)630 2326 y Ft(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e
+(POSIX)f(Mo)s(de],)k(page)e(76\))g(b)s(efore)f(reading)g(the)g(startup)
+630 2436 y(\014les,)32 b(as)f(if)h(the)f(`)p Fs(--posix)p
+Ft(')f(in)m(v)m(o)s(cation)j(option)f(had)f(b)s(een)g(supplied.)42
+b(If)31 b(it)h(is)f(set)h(while)630 2545 y(the)f(shell)f(is)h(running,)
+d Fs(bash)i Ft(enables)g Fl(posix)g Ft(mo)s(de,)g(as)h(if)f(the)h
 (command)870 2682 y Fs(set)47 b(-o)g(posix)630 2819 y
 Ft(had)30 b(b)s(een)f(executed.)150 2984 y Fs(PPID)288
-b Ft(The)30 b(pro)s(cess)g Fl(id)g Ft(of)h(the)f(shell's)f(paren)m(t)i
-(pro)s(cess.)40 b(This)29 b(v)-5 b(ariable)29 b(is)g(readonly)-8
+b Ft(The)30 b(pro)s(cess)g Fl(id)g Ft(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 3148 y Fs(PROMPT_COMMAND)630 3258 y Ft(If)32
-b(set,)h(the)f(v)-5 b(alue)32 b(is)f(in)m(terpreted)g(as)h(a)h(command)
-f(to)h(execute)g(b)s(efore)f(the)g(prin)m(ting)e(of)630
-3367 y(eac)m(h)i(primary)c(prompt)h(\()p Fs($PS1)p Ft(\).)150
-3532 y Fs(PS3)336 b Ft(The)34 b(v)-5 b(alue)34 b(of)g(this)f(v)-5
-b(ariable)33 b(is)h(used)f(as)i(the)f(prompt)g(for)g(the)g
-Fs(select)f Ft(command.)52 b(If)630 3641 y(this)29 b(v)-5
-b(ariable)29 b(is)h(not)g(set,)i(the)e Fs(select)f Ft(command)h
-(prompts)f(with)g(`)p Fs(#?)h Ft(')150 3806 y Fs(PS4)336
-b Ft(The)33 b(v)-5 b(alue)33 b(is)g(the)h(prompt)f(prin)m(ted)f(b)s
-(efore)h(the)h(command)f(line)f(is)h(ec)m(ho)s(ed)h(when)f(the)630
-3915 y(`)p Fs(-x)p Ft(')23 b(option)g(is)g(set)h(\(see)g(Section)g(4.3)
-g([The)f(Set)h(Builtin],)f(page)h(50\).)40 b(The)23 b(\014rst)f(c)m
-(haracter)630 4025 y(of)34 b Fs(PS4)g Ft(is)f(replicated)h(m)m(ultiple)
-e(times,)j(as)f(necessary)-8 b(,)37 b(to)e(indicate)e(m)m(ultiple)f
-(lev)m(els)i(of)630 4134 y(indirection.)k(The)30 b(default)g(is)f(`)p
-Fs(+)h Ft('.)150 4299 y Fs(PWD)336 b Ft(The)30 b(curren)m(t)g(w)m
-(orking)g(directory)g(as)g(set)h(b)m(y)f(the)h Fs(cd)f
+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
+3367 y(eac)m(h)g(primary)d(prompt)g(\()p Fs($PS1)p Ft(\).)150
+3532 y Fs(PS3)336 b Ft(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
+Fs(select)f Ft(command.)52 b(If)630 3641 y(this)30 b(v)-5
+b(ariable)31 b(is)g(not)f(set,)i(the)e Fs(select)f Ft(command)h
+(prompts)f(with)h(`)p Fs(#?)g Ft(')150 3806 y Fs(PS4)336
+b Ft(The)33 b(v)-5 b(alue)34 b(is)g(the)g(prompt)f(prin)m(ted)g(b)s
+(efore)g(the)h(command)f(line)h(is)g(ec)m(ho)s(ed)g(when)f(the)630
+3915 y(`)p Fs(-x)p Ft(')23 b(option)h(is)g(set)g(\(see)g(Section)h(4.3)
+f([The)f(Set)h(Builtin],)i(page)e(50\).)40 b(The)23 b(\014rst)f(c)m
+(haracter)630 4025 y(of)34 b Fs(PS4)g Ft(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 4134 y(indirection.)41 b(The)30 b(default)h(is)f(`)
+p Fs(+)g Ft('.)150 4299 y Fs(PWD)336 b Ft(The)30 b(curren)m(t)g(w)m
+(orking)h(directory)g(as)f(set)h(b)m(y)f(the)h Fs(cd)f
 Ft(builtin.)150 4463 y Fs(RANDOM)192 b Ft(Eac)m(h)30
-b(time)f(this)f(parameter)h(is)f(referenced,)i(a)f(random)g(in)m(teger)
-g(b)s(et)m(w)m(een)h(0)f(and)g(32767)630 4573 y(is)h(generated.)43
-b(Assigning)29 b(a)i(v)-5 b(alue)30 b(to)h(this)f(v)-5
-b(ariable)29 b(seeds)i(the)g(random)f(n)m(um)m(b)s(er)f(gen-)630
-4682 y(erator.)150 4847 y Fs(REPLY)240 b Ft(The)30 b(default)f(v)-5
-b(ariable)30 b(for)g(the)g Fs(read)g Ft(builtin.)150
-5011 y Fs(SECONDS)144 b Ft(This)39 b(v)-5 b(ariable)39
-b(expands)h(to)h(the)g(n)m(um)m(b)s(er)e(of)i(seconds)g(since)f(the)g
-(shell)f(w)m(as)i(started.)630 5121 y(Assignmen)m(t)h(to)h(this)f(v)-5
-b(ariable)41 b(resets)i(the)g(coun)m(t)g(to)g(the)g(v)-5
-b(alue)42 b(assigned,)j(and)d(the)630 5230 y(expanded)35
-b(v)-5 b(alue)35 b(b)s(ecomes)i(the)f(v)-5 b(alue)35
-b(assigned)g(plus)f(the)i(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630
-5340 y(the)31 b(assignmen)m(t.)p eop
+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 4573 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
+4682 y(erator.)150 4847 y Fs(REPLY)240 b Ft(The)30 b(default)g(v)-5
+b(ariable)32 b(for)e(the)g Fs(read)g Ft(builtin.)150
+5011 y Fs(SECONDS)144 b Ft(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 5121 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 5230 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
+5340 y(the)31 b(assignmen)m(t.)p eop end
 %%Page: 62 68
-62 67 bop 150 -116 a Ft(62)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fs(SHELL)240 b Ft(The)29 b(full)f(pathname)i(to)h(the)f(shell)e
-(is)h(k)m(ept)h(in)f(this)g(en)m(vironmen)m(t)g(v)-5
-b(ariable.)40 b(If)29 b(it)h(is)f(not)630 408 y(set)36
-b(when)f(the)h(shell)e(starts,)k(Bash)e(assigns)g(to)g(it)g(the)g(full)
-d(pathname)j(of)g(the)g(curren)m(t)630 518 y(user's)30
-b(login)f(shell.)150 666 y Fs(SHELLOPTS)630 775 y Ft(A)i
-(colon-separated)g(list)e(of)i(enabled)e(shell)g(options.)40
-b(Eac)m(h)31 b(w)m(ord)f(in)f(the)i(list)e(is)h(a)h(v)-5
+TeXDict begin 62 67 bop 150 -116 a Ft(62)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(SHELL)240 b Ft(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
+408 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 518
+y(user's)30 b(login)h(shell.)150 666 y Fs(SHELLOPTS)630
+775 y Ft(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 885 y(argumen)m(t)29 b(for)g(the)g(`)p Fs(-o)p
-Ft(')g(option)f(to)i(the)f Fs(set)f Ft(builtin)e(command)j(\(see)g
-(Section)g(4.3)h([The)630 994 y(Set)f(Builtin],)e(page)i(50\).)42
-b(The)28 b(options)g(app)s(earing)f(in)g Fs(SHELLOPTS)f
+Ft(')g(option)g(to)h(the)f Fs(set)f Ft(builtin)h(command)g(\(see)g
+(Section)h(4.3)g([The)630 994 y(Set)f(Builtin],)h(page)f(50\).)42
+b(The)28 b(options)h(app)s(earing)f(in)g Fs(SHELLOPTS)e
 Ft(are)j(those)h(rep)s(orted)630 1104 y(as)g(`)p Fs(on)p
-Ft(')f(b)m(y)h(`)p Fs(set)g(-o)p Ft('.)40 b(If)29 b(this)g(v)-5
-b(ariable)28 b(is)h(in)f(the)i(en)m(vironmen)m(t)f(when)g(Bash)h
-(starts)g(up,)630 1213 y(eac)m(h)41 b(shell)c(option)i(in)f(the)i(list)
-e(will)e(b)s(e)j(enabled)g(b)s(efore)g(reading)f(an)m(y)i(startup)f
-(\014les.)630 1323 y(This)29 b(v)-5 b(ariable)29 b(is)g(readonly)-8
+Ft(')f(b)m(y)h(`)p Fs(set)g(-o)p Ft('.)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 1213 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 1323 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8
 b(.)150 1471 y Fs(SHLVL)240 b Ft(Incremen)m(ted)21 b(b)m(y)g(one)g(eac)
-m(h)h(time)e(a)i(new)e(instance)g(of)h(Bash)g(is)f(started.)38
-b(This)19 b(is)h(in)m(tended)630 1580 y(to)31 b(b)s(e)f(a)h(coun)m(t)g
-(of)f(ho)m(w)h(deeply)e(y)m(our)h(Bash)h(shells)d(are)j(nested.)150
-1728 y Fs(TIMEFORMAT)630 1837 y Ft(The)f(v)-5 b(alue)31
-b(of)g(this)f(parameter)h(is)f(used)g(as)h(a)g(format)h(string)e(sp)s
-(ecifying)e(ho)m(w)j(the)g(tim-)630 1947 y(ing)36 b(information)e(for)j
-(pip)s(elines)c(pre\014xed)i(with)g(the)i Fs(time)e Ft(reserv)m(ed)i(w)
-m(ord)f(should)f(b)s(e)630 2056 y(displa)m(y)m(ed.)j(The)27
-b(`)p Fs(\045)p Ft(')h(c)m(haracter)h(in)m(tro)s(duces)d(an)i(escap)s
-(e)g(sequence)g(that)g(is)e(expanded)h(to)630 2166 y(a)37
-b(time)f(v)-5 b(alue)35 b(or)i(other)f(information.)57
-b(The)36 b(escap)s(e)g(sequences)h(and)e(their)h(meanings)630
-2276 y(are)31 b(as)f(follo)m(ws;)g(the)h(braces)f(denote)h(optional)f
-(p)s(ortions.)630 2423 y Fs(\045\045)384 b Ft(A)30 b(literal)f(`)p
+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 1580 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
+1728 y Fs(TIMEFORMAT)630 1837 y Ft(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 1947 y(ing)37 b(information)f(for)h
+(pip)s(elines)f(pre\014xed)f(with)h(the)h Fs(time)e Ft(reserv)m(ed)i(w)
+m(ord)f(should)g(b)s(e)630 2056 y(displa)m(y)m(ed.)k(The)27
+b(`)p Fs(\045)p Ft(')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 2166 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
+2276 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h
+(p)s(ortions.)630 2423 y Fs(\045\045)384 b Ft(A)30 b(literal)i(`)p
 Fs(\045)p Ft('.)630 2570 y Fs(\045[)p Fj(p)11 b Fs(][l]R)85
-b Ft(The)30 b(elapsed)g(time)g(in)f(seconds.)630 2718
+b Ft(The)30 b(elapsed)h(time)g(in)f(seconds.)630 2718
 y Fs(\045[)p Fj(p)11 b Fs(][l]U)85 b Ft(The)30 b(n)m(um)m(b)s(er)f(of)h
-(CPU)g(seconds)h(sp)s(en)m(t)f(in)f(user)g(mo)s(de.)630
+(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)630
 2865 y Fs(\045[)p Fj(p)11 b Fs(][l]S)85 b Ft(The)30 b(n)m(um)m(b)s(er)f
-(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)f(system)h(mo)s(de.)630
+(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)630
 3013 y Fs(\045P)384 b Ft(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e
 (as)h(\(\045U)f Fs(+)g Ft(\045S\))g(/)h(\045R.)630 3160
-y(The)23 b(optional)h Fq(p)i Ft(is)d(a)h(digit)f(sp)s(ecifying)e(the)j
-(precision,)g(the)g(n)m(um)m(b)s(er)f(of)h(fractional)f(digits)630
-3270 y(after)36 b(a)f(decimal)g(p)s(oin)m(t.)54 b(A)35
-b(v)-5 b(alue)35 b(of)g(0)h(causes)g(no)f(decimal)f(p)s(oin)m(t)g(or)i
-(fraction)f(to)h(b)s(e)630 3379 y(output.)48 b(A)m(t)34
-b(most)f(three)g(places)g(after)g(the)g(decimal)f(p)s(oin)m(t)g(ma)m(y)
-i(b)s(e)e(sp)s(eci\014ed;)h(v)-5 b(alues)630 3489 y(of)31
+y(The)23 b(optional)j Fq(p)g Ft(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
+3270 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 3379 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 3489 y(of)31
 b Fq(p)h Ft(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42
-b(If)29 b Fq(p)k Ft(is)c(not)i(sp)s(eci\014ed,)e(the)i(v)-5
-b(alue)29 b(3)i(is)f(used.)630 3618 y(The)54 b(optional)f
-Fs(l)h Ft(sp)s(eci\014es)f(a)i(longer)e(format,)61 b(including)51
-b(min)m(utes,)60 b(of)54 b(the)g(form)630 3727 y Fq(MM)10
+b(If)29 b Fq(p)k Ft(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5
+b(alue)30 b(3)h(is)g(used.)630 3618 y(The)54 b(optional)h
+Fs(l)f Ft(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 3727 y Fq(MM)10
 b Ft(m)p Fq(SS)p Ft(.)p Fq(FF)d Ft(s.)103 b(The)50 b(v)-5
-b(alue)51 b(of)g Fq(p)j Ft(determines)c(whether)g(or)h(not)h(the)f
-(fraction)g(is)630 3837 y(included.)630 3965 y(If)30
-b(this)f(v)-5 b(ariable)29 b(is)h(not)g(set,)i(Bash)e(acts)h(as)g(if)e
-(it)h(had)g(the)h(v)-5 b(alue)870 4094 y Fs
+b(alue)52 b(of)f Fq(p)j Ft(determines)d(whether)f(or)h(not)h(the)f
+(fraction)h(is)630 3837 y(included.)630 3965 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 4094 y Fs
 ($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630
-4222 y Ft(If)37 b(the)g(v)-5 b(alue)37 b(is)f(n)m(ull,)h(no)h(timing)d
-(information)h(is)g(displa)m(y)m(ed.)60 b(A)37 b(trailing)f(newline)f
-(is)630 4332 y(added)30 b(when)f(the)i(format)f(string)g(is)f(displa)m
+4222 y Ft(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 4332 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m
 (y)m(ed.)150 4479 y Fs(TMOUT)240 b Ft(If)22 b(set)h(to)g(a)g(v)-5
-b(alue)22 b(greater)i(than)e(zero,)j Fs(TMOUT)d Ft(is)f(treated)j(as)e
-(the)h(default)f(timeout)g(for)h(the)630 4589 y Fs(read)31
-b Ft(builtin)e(\(see)k(Section)e(4.2)j([Bash)e(Builtins],)e(page)j
+b(alue)23 b(greater)h(than)e(zero,)j Fs(TMOUT)d Ft(is)g(treated)i(as)e
+(the)h(default)g(timeout)g(for)g(the)630 4589 y Fs(read)31
+b Ft(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g
 (39\).)47 b(The)32 b Fs(select)e Ft(command)630 4699
-y(\(see)f(Section)g(3.2.4.2)h([Conditional)d(Constructs],)h(page)i
-(10\))f(terminates)f(if)g(input)e(do)s(es)630 4808 y(not)31
-b(arriv)m(e)f(after)h Fs(TMOUT)e Ft(seconds)h(when)f(input)g(is)g
-(coming)h(from)g(a)h(terminal.)630 4937 y(In)d(an)h(in)m(terativ)m(e)g
-(shell,)e(the)i(v)-5 b(alue)29 b(is)e(in)m(terpreted)h(as)h(the)g(n)m
-(um)m(b)s(er)f(of)h(seconds)f(to)i(w)m(ait)630 5046 y(for)i(input)e
-(after)j(issuing)d(the)i(primary)f(prompt)g(when)g(the)i(shell)d(is)i
-(in)m(teractiv)m(e.)47 b(Bash)630 5156 y(terminates)30
-b(after)h(that)g(n)m(um)m(b)s(er)e(of)i(seconds)f(if)f(input)g(do)s(es)
-h(not)g(arriv)m(e.)150 5303 y Fs(UID)336 b Ft(The)30
-b(n)m(umeric)f(real)h(user)g(id)f(of)h(the)h(curren)m(t)f(user.)40
-b(This)29 b(v)-5 b(ariable)29 b(is)g(readonly)-8 b(.)p
-eop
+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 4808 y(not)k(arriv)m(e)g
+(after)g Fs(TMOUT)e Ft(seconds)h(when)f(input)h(is)g(coming)h(from)f(a)
+h(terminal.)630 4937 y(In)d(an)h(in)m(terativ)m(e)i(shell,)e(the)g(v)-5
+b(alue)30 b(is)e(in)m(terpreted)h(as)g(the)g(n)m(um)m(b)s(er)f(of)h
+(seconds)f(to)i(w)m(ait)630 5046 y(for)i(input)f(after)i(issuing)f(the)
+g(primary)g(prompt)f(when)g(the)i(shell)f(is)h(in)m(teractiv)m(e.)49
+b(Bash)630 5156 y(terminates)31 b(after)g(that)g(n)m(um)m(b)s(er)e(of)i
+(seconds)f(if)g(input)g(do)s(es)g(not)g(arriv)m(e.)150
+5303 y Fs(UID)336 b Ft(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: 63 69
-63 68 bop 150 -116 a Ft(Chapter)30 b(6:)41 b(Bash)30
-b(F)-8 b(eatures)2484 b(63)150 299 y Fo(6)80 b(Bash)54
-b(F)-13 b(eatures)275 537 y Ft(This)28 b(section)j(describ)s(es)d
-(features)j(unique)d(to)k(Bash.)150 798 y Fr(6.1)68 b(In)l(v)l(oking)46
-b(Bash)390 1017 y Fs(bash)h([long-opt])e([-ir])h
+TeXDict begin 63 68 bop 150 -116 a Ft(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(63)150 299 y Fo(6)80
+b(Bash)54 b(F)-13 b(eatures)275 537 y Ft(This)29 b(section)j(describ)s
+(es)d(features)i(unique)e(to)j(Bash.)150 798 y Fr(6.1)68
+b(In)l(v)l(oking)46 b(Bash)390 1017 y Fs(bash)h([long-opt])e([-ir])h
 ([-abefhkmnptuvxdBCDHP])c([-o)47 b Fj(option)11 b Fs(])45
 b([-O)i Fj(shopt_option)11 b Fs(])44 b([)p Fj(ar-)390
 1127 y(gument)57 b Fs(...)o(])390 1236 y(bash)47 b([long-opt])e
@@ -7292,1458 +8992,1463 @@ b Fs([)p Fj(ar-)390 1346 y(gument)g Fs(...)o(])390 1455
 y(bash)47 b([long-opt])e(-s)i([-abefhkmnptuvxdBCDHP])42
 b([-o)k Fj(option)11 b Fs(])46 b([-O)h Fj(shopt_option)11
 b Fs(])43 b([)p Fj(ar-)390 1565 y(gument)57 b Fs(...)o(])275
-1701 y Ft(In)28 b(addition)g(to)i(the)f(single-c)m(haracter)h(shell)e
-(command-line)g(options)h(\(see)h(Section)f(4.3)i([The)e(Set)150
-1810 y(Builtin],)24 b(page)h(50\),)i(there)e(are)g(sev)m(eral)g(m)m
-(ulti-c)m(haracter)g(options)f(that)h(y)m(ou)g(can)g(use.)38
+1701 y Ft(In)28 b(addition)i(to)g(the)f(single-c)m(haracter)j(shell)e
+(command-line)g(options)g(\(see)g(Section)g(4.3)h([The)e(Set)150
+1810 y(Builtin],)e(page)e(50\),)i(there)e(are)g(sev)m(eral)h(m)m
+(ulti-c)m(haracter)h(options)e(that)g(y)m(ou)g(can)g(use.)38
 b(These)25 b(options)150 1920 y(m)m(ust)30 b(app)s(ear)g(on)g(the)h
-(command)f(line)f(b)s(efore)h(the)g(single-c)m(haracter)h(options)f(to)
-h(b)s(e)f(recognized.)150 2081 y Fs(--debugger)630 2191
-y Ft(Arrange)j(for)g(the)g(debugger)g(pro\014le)f(to)i(b)s(e)e
-(executed)i(b)s(efore)f(the)g(shell)e(starts.)49 b(T)-8
-b(urns)630 2301 y(on)40 b(extended)g(debugging)f(mo)s(de)h(\(see)h
-(Section)e(4.2)i([Bash)g(Builtins],)f(page)h(39)g(for)f(a)630
-2410 y(description)g(of)i(the)f Fs(extdebug)f Ft(option)h(to)h(the)g
-Fs(shopt)f Ft(builtin\))d(and)j(shell)f(function)630
-2520 y(tracing)35 b(\(see)h(Section)f(4.3)i([The)e(Set)g(Builtin],)g
-(page)h(50)g(for)f(a)g(description)f(of)h(the)h Fs(-o)630
+(command)f(line)h(b)s(efore)f(the)g(single-c)m(haracter)j(options)e(to)
+g(b)s(e)f(recognized.)150 2081 y Fs(--debugger)630 2191
+y Ft(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 2301 y(on)40 b(extended)g(debugging)g(mo)s(de)g(\(see)h
+(Section)f(4.2)h([Bash)g(Builtins],)i(page)e(39)g(for)f(a)630
+2410 y(description)i(of)g(the)f Fs(extdebug)f Ft(option)i(to)g(the)g
+Fs(shopt)f Ft(builtin\))g(and)g(shell)h(function)630
+2520 y(tracing)36 b(\(see)g(Section)g(4.3)h([The)e(Set)g(Builtin],)j
+(page)e(50)g(for)f(a)g(description)h(of)f(the)h Fs(-o)630
 2629 y(functrace)28 b Ft(option\).)150 2790 y Fs(--dump-po-strings)630
-2900 y Ft(A)37 b(list)e(of)h(all)g(double-quoted)f(strings)g(preceded)h
-(b)m(y)h(`)p Fs($)p Ft(')f(is)g(prin)m(ted)f(on)h(the)h(standard)630
-3009 y(ouput)27 b(in)g(the)h Fl(gnu)g Fs(gettext)d Ft(PO)j(\(p)s
-(ortable)f(ob)5 b(ject\))29 b(\014le)e(format.)41 b(Equiv)-5
-b(alen)m(t)26 b(to)j(`)p Fs(-D)p Ft(')630 3119 y(except)i(for)f(the)h
+2900 y Ft(A)37 b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g
+(b)m(y)h(`)p Fs($)p Ft(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630
+3009 y(ouput)27 b(in)h(the)g Fl(gnu)g Fs(gettext)d Ft(PO)j(\(p)s
+(ortable)g(ob)5 b(ject\))29 b(\014le)f(format.)41 b(Equiv)-5
+b(alen)m(t)28 b(to)h(`)p Fs(-D)p Ft(')630 3119 y(except)i(for)f(the)h
 (output)f(format.)150 3280 y Fs(--dump-strings)630 3389
-y Ft(Equiv)-5 b(alen)m(t)29 b(to)i(`)p Fs(-D)p Ft('.)150
-3550 y Fs(--help)192 b Ft(Displa)m(y)30 b(a)g(usage)h(message)h(on)e
-(standard)g(output)g(and)f(exit)i(sucessfully)-8 b(.)150
+y Ft(Equiv)-5 b(alen)m(t)31 b(to)g(`)p Fs(-D)p Ft('.)150
+3550 y Fs(--help)192 b Ft(Displa)m(y)32 b(a)e(usage)h(message)h(on)e
+(standard)g(output)g(and)f(exit)j(sucessfully)-8 b(.)150
 3711 y Fs(--init-file)27 b Fj(filename)150 3820 y Fs(--rcfile)h
 Fj(filename)630 3930 y Ft(Execute)42 b(commands)f(from)f
-Fq(\014lename)46 b Ft(\(instead)41 b(of)g(`)p Fs(~/.bashrc)p
-Ft('\))e(in)h(an)h(in)m(teractiv)m(e)630 4039 y(shell.)150
-4200 y Fs(--login)144 b Ft(Equiv)-5 b(alen)m(t)29 b(to)i(`)p
+Fq(\014lename)47 b Ft(\(instead)42 b(of)f(`)p Fs(~/.bashrc)p
+Ft('\))e(in)i(an)g(in)m(teractiv)m(e)630 4039 y(shell.)150
+4200 y Fs(--login)144 b Ft(Equiv)-5 b(alen)m(t)31 b(to)g(`)p
 Fs(-l)p Ft('.)150 4361 y Fs(--noediting)630 4471 y Ft(Do)h(not)e(use)h
-(the)g Fl(gnu)f Ft(Readline)g(library)e(\(see)j(Chapter)g(8)g([Command)
-f(Line)f(Editing],)630 4580 y(page)i(83\))h(to)f(read)f(command)g
-(lines)f(when)g(the)i(shell)d(is)i(in)m(teractiv)m(e.)150
-4741 y Fs(--noprofile)630 4850 y Ft(Don't)i(load)e(the)h(system-wide)f
-(startup)g(\014le)f(`)p Fs(/etc/profile)p Ft(')f(or)j(an)m(y)g(of)g
-(the)f(p)s(ersonal)630 4960 y(initialization)24 b(\014les)i(`)p
-Fs(~/.bash_profile)p Ft(',)f(`)p Fs(~/.bash_login)p Ft(',)g(or)i(`)p
-Fs(~/.profile)p Ft(')e(when)630 5070 y(Bash)31 b(is)e(in)m(v)m(ok)m(ed)
-i(as)f(a)h(login)e(shell.)150 5230 y Fs(--norc)192 b
-Ft(Don't)31 b(read)g(the)f(`)p Fs(~/.bashrc)p Ft(')f(initialization)e
-(\014le)i(in)g(an)i(in)m(teractiv)m(e)g(shell.)39 b(This)29
-b(is)g(on)630 5340 y(b)m(y)h(default)g(if)f(the)i(shell)d(is)i(in)m(v)m
-(ok)m(ed)h(as)f Fs(sh)p Ft(.)p eop
+(the)g Fl(gnu)f Ft(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command)
+f(Line)g(Editing],)630 4580 y(page)h(83\))h(to)f(read)f(command)g
+(lines)h(when)e(the)i(shell)f(is)h(in)m(teractiv)m(e.)150
+4741 y Fs(--noprofile)630 4850 y Ft(Don't)h(load)f(the)g(system-wide)g
+(startup)f(\014le)g(`)p Fs(/etc/profile)p Ft(')e(or)j(an)m(y)g(of)g
+(the)f(p)s(ersonal)630 4960 y(initialization)g(\014les)d(`)p
+Fs(~/.bash_profile)p Ft(',)e(`)p Fs(~/.bash_login)p Ft(',)g(or)i(`)p
+Fs(~/.profile)p Ft(')e(when)630 5070 y(Bash)31 b(is)f(in)m(v)m(ok)m(ed)
+i(as)e(a)h(login)g(shell.)150 5230 y Fs(--norc)192 b
+Ft(Don't)31 b(read)g(the)f(`)p Fs(~/.bashrc)p Ft(')f(initialization)k
+(\014le)d(in)g(an)h(in)m(teractiv)m(e)i(shell.)41 b(This)30
+b(is)g(on)630 5340 y(b)m(y)g(default)h(if)f(the)h(shell)f(is)h(in)m(v)m
+(ok)m(ed)h(as)e Fs(sh)p Ft(.)p eop end
 %%Page: 64 70
-64 69 bop 150 -116 a Ft(64)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fs(--posix)144 b Ft(Change)24 b(the)h(b)s(eha)m(vior)e(of)h(Bash)
-h(where)e(the)i(default)e(op)s(eration)h(di\013ers)f(from)g(the)i
-Fl(posix)630 408 y Ft(1003.2)31 b(standard)d(to)i(matc)m(h)f(the)g
-(standard.)40 b(This)27 b(is)g(in)m(tended)h(to)i(mak)m(e)f(Bash)g(b)s
-(eha)m(v)m(e)630 518 y(as)39 b(a)f(strict)g(sup)s(erset)g(of)g(that)h
-(standard.)64 b(See)38 b(Section)g(6.11)i([Bash)f(POSIX)e(Mo)s(de],)630
-628 y(page)31 b(76,)h(for)e(a)g(description)f(of)h(the)h(Bash)g
+TeXDict begin 64 69 bop 150 -116 a Ft(64)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(--posix)144 b Ft(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 Fl(posix)630 408
+y Ft(1003.2)31 b(standard)d(to)i(matc)m(h)f(the)g(standard.)40
+b(This)28 b(is)g(in)m(tended)h(to)h(mak)m(e)f(Bash)g(b)s(eha)m(v)m(e)
+630 518 y(as)39 b(a)f(strict)h(sup)s(erset)f(of)g(that)h(standard.)64
+b(See)38 b(Section)h(6.11)h([Bash)f(POSIX)e(Mo)s(de],)630
+628 y(page)31 b(76,)h(for)e(a)g(description)h(of)f(the)h(Bash)g
 Fl(posix)e Ft(mo)s(de.)150 787 y Fs(--restricted)630
-897 y Ft(Mak)m(e)54 b(the)e(shell)e(a)j(restricted)f(shell)e(\(see)j
-(Section)f(6.10)i([The)d(Restricted)i(Shell],)630 1006
+897 y Ft(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h
+(Section)g(6.10)h([The)d(Restricted)j(Shell],)630 1006
 y(page)31 b(76\).)150 1166 y Fs(--verbose)630 1275 y
-Ft(Equiv)-5 b(alen)m(t)29 b(to)i(`)p Fs(-v)p Ft('.)41
-b(Prin)m(t)29 b(shell)g(input)f(lines)h(as)i(they're)f(read.)150
-1435 y Fs(--version)630 1544 y Ft(Sho)m(w)e(v)m(ersion)f(information)f
-(for)i(this)f(instance)h(of)g(Bash)g(on)g(the)g(standard)f(output)h
-(and)630 1654 y(exit)i(successfully)-8 b(.)275 1813 y(There)28
-b(are)i(sev)m(eral)f(single-c)m(haracter)h(options)e(that)i(ma)m(y)g(b)
-s(e)e(supplied)e(at)k(in)m(v)m(o)s(cation)f(whic)m(h)f(are)150
-1923 y(not)j(a)m(v)-5 b(ailable)29 b(with)g(the)i Fs(set)e
+Ft(Equiv)-5 b(alen)m(t)31 b(to)g(`)p Fs(-v)p Ft('.)41
+b(Prin)m(t)30 b(shell)h(input)e(lines)i(as)g(they're)f(read.)150
+1435 y Fs(--version)630 1544 y Ft(Sho)m(w)e(v)m(ersion)g(information)g
+(for)g(this)g(instance)h(of)f(Bash)g(on)g(the)g(standard)f(output)h
+(and)630 1654 y(exit)j(successfully)-8 b(.)275 1813 y(There)28
+b(are)i(sev)m(eral)g(single-c)m(haracter)i(options)d(that)h(ma)m(y)g(b)
+s(e)e(supplied)g(at)i(in)m(v)m(o)s(cation)h(whic)m(h)e(are)150
+1923 y(not)i(a)m(v)-5 b(ailable)32 b(with)e(the)h Fs(set)e
 Ft(builtin.)150 2082 y Fs(-c)h Fj(string)630 2192 y Ft(Read)23
-b(and)f(execute)i(commands)f(from)f Fq(string)30 b Ft(after)23
-b(pro)s(cessing)e(the)i(options,)h(then)f(exit.)630 2301
-y(An)m(y)37 b(remaining)d(argumen)m(ts)j(are)g(assigned)f(to)h(the)g(p)
-s(ositional)d(parameters,)39 b(starting)630 2411 y(with)29
+b(and)f(execute)i(commands)f(from)f Fq(string)31 b Ft(after)23
+b(pro)s(cessing)f(the)h(options,)i(then)e(exit.)630 2301
+y(An)m(y)37 b(remaining)f(argumen)m(ts)h(are)g(assigned)g(to)g(the)g(p)
+s(ositional)g(parameters,)i(starting)630 2411 y(with)30
 b Fs($0)p Ft(.)150 2570 y Fs(-i)384 b Ft(F)-8 b(orce)22
-b(the)g(shell)d(to)i(run)f(in)m(teractiv)m(ely)-8 b(.)38
-b(In)m(teractiv)m(e)22 b(shells)d(are)j(describ)s(ed)c(in)i(Section)h
-(6.3)630 2680 y([In)m(teractiv)m(e)32 b(Shells],)d(page)i(67.)150
-2839 y Fs(-l)384 b Ft(Mak)m(e)33 b(this)d(shell)g(act)i(as)g(if)e(it)h
-(had)g(b)s(een)f(directly)g(in)m(v)m(ok)m(ed)i(b)m(y)g(login.)42
-b(When)31 b(the)h(shell)630 2949 y(is)k(in)m(teractiv)m(e,)41
-b(this)36 b(is)g(equiv)-5 b(alen)m(t)37 b(to)h(starting)g(a)f(login)g
-(shell)e(with)h(`)p Fs(exec)30 b(-l)g(bash)p Ft('.)630
-3059 y(When)h(the)g(shell)f(is)g(not)h(in)m(teractiv)m(e,)i(the)e
-(login)f(shell)g(startup)h(\014les)f(will)e(b)s(e)j(executed.)630
+b(the)g(shell)f(to)g(run)f(in)m(teractiv)m(ely)-8 b(.)41
+b(In)m(teractiv)m(e)23 b(shells)e(are)h(describ)s(ed)d(in)i(Section)h
+(6.3)630 2680 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(67.)150
+2839 y Fs(-l)384 b Ft(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h
+(had)f(b)s(een)f(directly)i(in)m(v)m(ok)m(ed)h(b)m(y)f(login.)44
+b(When)31 b(the)h(shell)630 2949 y(is)37 b(in)m(teractiv)m(e,)43
+b(this)37 b(is)g(equiv)-5 b(alen)m(t)39 b(to)f(starting)h(a)e(login)i
+(shell)e(with)g(`)p Fs(exec)30 b(-l)g(bash)p Ft('.)630
+3059 y(When)h(the)g(shell)h(is)f(not)g(in)m(teractiv)m(e,)k(the)c
+(login)h(shell)g(startup)f(\014les)g(will)g(b)s(e)g(executed.)630
 3168 y(`)p Fs(exec)e(bash)h(-l)p Ft(')43 b(or)h(`)p Fs(exec)29
-b(bash)g(--login)p Ft(')42 b(will)f(replace)j(the)g(curren)m(t)f(shell)
-f(with)h(a)630 3278 y(Bash)26 b(login)e(shell.)37 b(See)26
-b(Section)f(6.2)i([Bash)e(Startup)g(Files],)h(page)g(65,)i(for)d(a)h
-(description)630 3387 y(of)31 b(the)f(sp)s(ecial)f(b)s(eha)m(vior)h(of)
-g(a)h(login)e(shell.)150 3547 y Fs(-r)384 b Ft(Mak)m(e)54
-b(the)e(shell)e(a)j(restricted)f(shell)e(\(see)j(Section)f(6.10)i([The)
-d(Restricted)i(Shell],)630 3656 y(page)31 b(76\).)150
-3816 y Fs(-s)384 b Ft(If)24 b(this)g(option)h(is)f(presen)m(t,)i(or)f
-(if)f(no)g(argumen)m(ts)i(remain)d(after)j(option)e(pro)s(cessing,)h
-(then)630 3925 y(commands)j(are)h(read)g(from)f(the)h(standard)f
-(input.)38 b(This)27 b(option)h(allo)m(ws)g(the)h(p)s(ositional)630
-4035 y(parameters)i(to)g(b)s(e)f(set)g(when)g(in)m(v)m(oking)f(an)i(in)
-m(teractiv)m(e)g(shell.)150 4194 y Fs(-D)384 b Ft(A)37
-b(list)e(of)h(all)g(double-quoted)f(strings)g(preceded)h(b)m(y)h(`)p
-Fs($)p Ft(')f(is)g(prin)m(ted)f(on)h(the)h(standard)630
-4304 y(ouput.)71 b(These)40 b(are)h(the)g(strings)f(that)h(are)g(sub)5
-b(ject)41 b(to)g(language)g(translation)f(when)630 4413
-y(the)d(curren)m(t)g(lo)s(cale)f(is)g(not)h Fs(C)g Ft(or)f
-Fs(POSIX)g Ft(\(see)h(Section)g(3.1.2.5)i([Lo)s(cale)f(T)-8
-b(ranslation],)630 4523 y(page)31 b(7\).)42 b(This)28
-b(implies)g(the)i(`)p Fs(-n)p Ft(')h(option;)f(no)g(commands)g(will)e
-(b)s(e)h(executed.)150 4682 y Fs([-+]O)g([)p Fj(shopt_option)11
-b Fs(])630 4792 y Fq(shopt)p 854 4792 28 4 v 40 w(option)43
-b Ft(is)g(one)i(of)f(the)g(shell)f(options)g(accepted)i(b)m(y)f(the)h
-Fs(shopt)d Ft(builtin)f(\(see)630 4902 y(Chapter)29 b(4)i([Shell)d
-(Builtin)f(Commands],)j(page)g(33\).)42 b(If)30 b Fq(shopt)p
-2856 4902 V 39 w(option)g Ft(is)f(presen)m(t,)h(`)p Fs(-O)p
-Ft(')630 5011 y(sets)39 b(the)f(v)-5 b(alue)38 b(of)g(that)h(option;)j
-(`)p Fs(+O)p Ft(')c(unsets)g(it.)64 b(If)38 b Fq(shopt)p
-2803 5011 V 39 w(option)g Ft(is)f(not)i(supplied,)630
-5121 y(the)28 b(names)f(and)h(v)-5 b(alues)27 b(of)g(the)h(shell)e
-(options)h(accepted)i(b)m(y)f Fs(shopt)e Ft(are)i(prin)m(ted)e(on)i
+b(bash)g(--login)p Ft(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell)
+h(with)g(a)630 3278 y(Bash)26 b(login)g(shell.)39 b(See)26
+b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(65,)i(for)d(a)h
+(description)630 3387 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of)
+f(a)h(login)g(shell.)150 3547 y Fs(-r)384 b Ft(Mak)m(e)54
+b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h(Section)g(6.10)h([The)
+d(Restricted)j(Shell],)630 3656 y(page)31 b(76\).)150
+3816 y Fs(-s)384 b Ft(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f
+(if)g(no)f(argumen)m(ts)i(remain)e(after)i(option)f(pro)s(cessing,)h
+(then)630 3925 y(commands)i(are)h(read)g(from)f(the)h(standard)f
+(input.)39 b(This)28 b(option)h(allo)m(ws)h(the)f(p)s(ositional)630
+4035 y(parameters)i(to)g(b)s(e)f(set)g(when)g(in)m(v)m(oking)h(an)g(in)
+m(teractiv)m(e)i(shell.)150 4194 y Fs(-D)384 b Ft(A)37
+b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p
+Fs($)p Ft(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630
+4304 y(ouput.)71 b(These)40 b(are)h(the)g(strings)g(that)g(are)g(sub)5
+b(ject)41 b(to)g(language)h(translation)g(when)630 4413
+y(the)37 b(curren)m(t)g(lo)s(cale)h(is)f(not)g Fs(C)g
+Ft(or)f Fs(POSIX)g Ft(\(see)h(Section)h(3.1.2.5)h([Lo)s(cale)g(T)-8
+b(ranslation],)630 4523 y(page)31 b(7\).)42 b(This)29
+b(implies)i(the)f(`)p Fs(-n)p Ft(')h(option;)g(no)f(commands)g(will)h
+(b)s(e)e(executed.)150 4682 y Fs([-+]O)g([)p Fj(shopt_option)11
+b Fs(])630 4792 y Fq(shopt)p 854 4792 28 4 v 40 w(option)44
+b Ft(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h
+Fs(shopt)d Ft(builtin)i(\(see)630 4902 y(Chapter)29 b(4)i([Shell)f
+(Builtin)g(Commands],)g(page)g(33\).)42 b(If)30 b Fq(shopt)p
+2856 4902 V 39 w(option)h Ft(is)f(presen)m(t,)g(`)p Fs(-O)p
+Ft(')630 5011 y(sets)39 b(the)f(v)-5 b(alue)39 b(of)f(that)h(option;)k
+(`)p Fs(+O)p Ft(')38 b(unsets)g(it.)65 b(If)38 b Fq(shopt)p
+2803 5011 V 39 w(option)h Ft(is)f(not)h(supplied,)630
+5121 y(the)28 b(names)f(and)h(v)-5 b(alues)28 b(of)f(the)h(shell)g
+(options)g(accepted)h(b)m(y)f Fs(shopt)e Ft(are)i(prin)m(ted)f(on)h
 (the)630 5230 y(standard)33 b(output.)50 b(If)33 b(the)h(in)m(v)m(o)s
-(cation)g(option)f(is)g(`)p Fs(+O)p Ft(',)h(the)g(output)f(is)g(displa)
-m(y)m(ed)f(in)h(a)630 5340 y(format)e(that)g(ma)m(y)g(b)s(e)e(reused)h
-(as)h(input.)p eop
+(cation)i(option)e(is)g(`)p Fs(+O)p Ft(',)g(the)g(output)f(is)h(displa)
+m(y)m(ed)g(in)g(a)630 5340 y(format)d(that)g(ma)m(y)g(b)s(e)e(reused)h
+(as)h(input.)p eop end
 %%Page: 65 71
-65 70 bop 150 -116 a Ft(Chapter)30 b(6:)41 b(Bash)30
-b(F)-8 b(eatures)2484 b(65)150 299 y Fs(--)384 b Ft(A)38
-b Fs(--)g Ft(signals)e(the)j(end)e(of)i(options)e(and)h(disables)e
-(further)h(option)g(pro)s(cessing.)63 b(An)m(y)630 408
-y(argumen)m(ts)31 b(after)g(the)f Fs(--)g Ft(are)h(treated)g(as)g
-(\014lenames)e(and)h(argumen)m(ts.)275 575 y(A)d Fm(lo)-5
-b(gin)35 b Ft(shell)25 b(is)h(one)i(whose)f(\014rst)f(c)m(haracter)j
-(of)e(argumen)m(t)h(zero)f(is)g(`)p Fs(-)p Ft(',)h(or)f(one)g(in)m(v)m
-(ok)m(ed)h(with)e(the)150 685 y(`)p Fs(--login)p Ft(')j(option.)275
-825 y(An)24 b Fm(inter)-5 b(active)33 b Ft(shell)23 b(is)h(one)h
-(started)g(without)f(non-option)h(argumen)m(ts,)h(unless)e(`)p
-Fs(-s)p Ft(')g(is)g(sp)s(eci\014ed,)150 934 y(without)42
-b(sp)s(ecifying)e(the)k(`)p Fs(-c)p Ft(')e(option,)k(and)c(whose)h
-(input)e(and)h(output)g(are)h(b)s(oth)g(connected)g(to)150
-1044 y(terminals)20 b(\(as)j(determined)e(b)m(y)h Fs(isatty\(3\))p
-Ft(\),)f(or)i(one)f(started)g(with)f(the)h(`)p Fs(-i)p
-Ft(')g(option.)38 b(See)22 b(Section)g(6.3)150 1153 y([In)m(teractiv)m
-(e)32 b(Shells],)d(page)i(67,)g(for)f(more)h(information.)275
-1293 y(If)38 b(argumen)m(ts)h(remain)f(after)h(option)g(pro)s(cessing,)
-h(and)e(neither)g(the)h(`)p Fs(-c)p Ft(')f(nor)h(the)g(`)p
-Fs(-s)p Ft(')f(option)150 1403 y(has)33 b(b)s(een)g(supplied,)f(the)i
-(\014rst)e(argumen)m(t)j(is)d(assumed)h(to)h(b)s(e)f(the)h(name)g(of)g
-(a)g(\014le)f(con)m(taining)g(shell)150 1512 y(commands)d(\(see)g
-(Section)g(3.8)h([Shell)d(Scripts],)h(page)i(31\).)41
-b(When)30 b(Bash)g(is)f(in)m(v)m(ok)m(ed)i(in)d(this)h(fashion,)150
-1622 y Fs($0)37 b Ft(is)f(set)i(to)h(the)e(name)h(of)f(the)h(\014le,)h
-(and)d(the)i(p)s(ositional)d(parameters)j(are)g(set)g(to)g(the)g
-(remaining)150 1731 y(argumen)m(ts.)h(Bash)26 b(reads)f(and)g(executes)
-h(commands)f(from)g(this)f(\014le,)i(then)f(exits.)39
-b(Bash's)25 b(exit)h(status)150 1841 y(is)f(the)i(exit)g(status)f(of)h
-(the)g(last)f(command)g(executed)h(in)f(the)g(script.)39
-b(If)26 b(no)g(commands)g(are)h(executed,)150 1951 y(the)k(exit)f
-(status)h(is)e(0.)150 2221 y Fr(6.2)68 b(Bash)45 b(Startup)g(Files)275
-2470 y Ft(This)35 b(section)j(describs)e(ho)m(w)h(Bash)h(executes)h
-(its)e(startup)g(\014les.)61 b(If)37 b(an)m(y)h(of)g(the)g(\014les)e
+TeXDict begin 65 70 bop 150 -116 a Ft(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(65)150 299 y Fs(--)384
+b Ft(A)38 b Fs(--)g Ft(signals)g(the)h(end)e(of)i(options)f(and)g
+(disables)g(further)f(option)h(pro)s(cessing.)64 b(An)m(y)630
+408 y(argumen)m(ts)31 b(after)g(the)f Fs(--)g Ft(are)h(treated)g(as)g
+(\014lenames)f(and)g(argumen)m(ts.)275 575 y(A)d Fm(lo)-5
+b(gin)35 b Ft(shell)27 b(is)g(one)h(whose)f(\014rst)f(c)m(haracter)j
+(of)e(argumen)m(t)h(zero)f(is)h(`)p Fs(-)p Ft(',)g(or)f(one)g(in)m(v)m
+(ok)m(ed)i(with)e(the)150 685 y(`)p Fs(--login)p Ft(')i(option.)275
+825 y(An)24 b Fm(inter)-5 b(active)33 b Ft(shell)25 b(is)g(one)g
+(started)g(without)g(non-option)h(argumen)m(ts,)g(unless)f(`)p
+Fs(-s)p Ft(')f(is)h(sp)s(eci\014ed,)150 934 y(without)43
+b(sp)s(ecifying)f(the)i(`)p Fs(-c)p Ft(')e(option,)47
+b(and)42 b(whose)h(input)f(and)g(output)g(are)h(b)s(oth)g(connected)g
+(to)150 1044 y(terminals)22 b(\(as)h(determined)f(b)m(y)g
+Fs(isatty\(3\))p Ft(\),)f(or)i(one)f(started)g(with)g(the)g(`)p
+Fs(-i)p Ft(')g(option.)39 b(See)22 b(Section)h(6.3)150
+1153 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(67,)g(for)f(more)h
+(information.)275 1293 y(If)38 b(argumen)m(ts)h(remain)g(after)g
+(option)h(pro)s(cessing,)h(and)d(neither)h(the)g(`)p
+Fs(-c)p Ft(')f(nor)h(the)g(`)p Fs(-s)p Ft(')f(option)150
+1403 y(has)33 b(b)s(een)g(supplied,)h(the)g(\014rst)e(argumen)m(t)j(is)
+e(assumed)g(to)h(b)s(e)f(the)h(name)g(of)g(a)g(\014le)g(con)m(taining)h
+(shell)150 1512 y(commands)30 b(\(see)g(Section)h(3.8)g([Shell)f
+(Scripts],)g(page)h(31\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i
+(in)d(this)h(fashion,)150 1622 y Fs($0)37 b Ft(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 1731 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 1841 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 1951 y(the)k(exit)g
+(status)g(is)f(0.)150 2221 y Fr(6.2)68 b(Bash)45 b(Startup)g(Files)275
+2470 y Ft(This)36 b(section)j(describs)e(ho)m(w)g(Bash)h(executes)h
+(its)f(startup)f(\014les.)62 b(If)37 b(an)m(y)h(of)g(the)g(\014les)f
 (exist)i(but)150 2579 y(cannot)26 b(b)s(e)e(read,)i(Bash)f(rep)s(orts)g
-(an)g(error.)38 b(Tildes)23 b(are)j(expanded)e(in)f(\014le)i(names)g
-(as)g(describ)s(ed)e(ab)s(o)m(v)m(e)150 2689 y(under)29
-b(Tilde)f(Expansion)h(\(see)i(Section)f(3.5.2)j([Tilde)28
-b(Expansion],)h(page)j(18\).)275 2828 y(In)m(teractiv)m(e)f(shells)e
-(are)i(describ)s(ed)d(in)h(Section)h(6.3)i([In)m(teractiv)m(e)g
-(Shells],)c(page)j(67.)150 3063 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(`)p
-Fi(--login)p Fk(')275 3312 y Ft(When)e(Bash)g(is)g(in)m(v)m(ok)m(ed)h
-(as)f(an)g(in)m(teractiv)m(e)i(login)d(shell,)i(or)f(as)h(a)g(non-in)m
-(teractiv)m(e)g(shell)d(with)150 3422 y(the)f(`)p Fs(--login)p
-Ft(')d(option,)k(it)d(\014rst)h(reads)g(and)g(executes)i(commands)e
-(from)f(the)i(\014le)f(`)p Fs(/etc/profile)p Ft(',)150
-3531 y(if)27 b(that)i(\014le)e(exists.)40 b(After)28
-b(reading)g(that)g(\014le,)g(it)g(lo)s(oks)g(for)g(`)p
-Fs(~/.bash_profile)p Ft(',)d(`)p Fs(~/.bash_login)p Ft(',)150
-3641 y(and)j(`)p Fs(~/.profile)p Ft(',)f(in)h(that)h(order,)g(and)f
-(reads)g(and)h(executes)h(commands)e(from)g(the)h(\014rst)f(one)h(that)
-150 3750 y(exists)h(and)f(is)g(readable.)40 b(The)30
-b(`)p Fs(--noprofile)p Ft(')d(option)j(ma)m(y)g(b)s(e)g(used)f(when)g
-(the)h(shell)f(is)g(started)h(to)150 3860 y(inhibit)d(this)i(b)s(eha)m
-(vior.)275 3999 y(When)72 b(a)i(login)e(shell)f(exits,)84
-b(Bash)73 b(reads)g(and)g(executes)h(commands)f(from)g(the)g(\014le)150
-4109 y(`)p Fs(~/.bash_logout)p Ft(',)27 b(if)j(it)f(exists.)150
-4343 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)275 4592 y Ft(When)35 b(an)g(in)m(teractiv)m(e)h
-(shell)e(that)h(is)g(not)g(a)h(login)e(shell)g(is)g(started,)j(Bash)f
-(reads)f(and)g(executes)150 4702 y(commands)24 b(from)f(`)p
-Fs(~/.bashrc)p Ft(',)h(if)f(that)h(\014le)f(exists.)39
-b(This)22 b(ma)m(y)j(b)s(e)e(inhibited)d(b)m(y)k(using)f(the)h(`)p
-Fs(--norc)p Ft(')150 4812 y(option.)51 b(The)33 b(`)p
-Fs(--rcfile)28 b Fj(file)11 b Ft(')33 b(option)g(will)e(force)k(Bash)f
-(to)h(read)e(and)h(execute)h(commands)e(from)150 4921
-y Fq(\014le)i Ft(instead)29 b(of)i(`)p Fs(~/.bashrc)p
-Ft('.)275 5061 y(So,)f(t)m(ypically)-8 b(,)30 b(y)m(our)g(`)p
-Fs(~/.bash_profile)p Ft(')d(con)m(tains)k(the)f(line)390
-5200 y Fs(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g(~/.bashrc;)e(fi)
-150 5340 y Ft(after)31 b(\(or)g(b)s(efore\))f(an)m(y)h(login-sp)s
-(eci\014c)d(initializations.)p eop
+(an)g(error.)38 b(Tildes)25 b(are)h(expanded)e(in)g(\014le)i(names)f
+(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)150 2689 y(under)29
+b(Tilde)h(Expansion)g(\(see)h(Section)g(3.5.2)i([Tilde)d(Expansion],)g
+(page)i(18\).)275 2828 y(In)m(teractiv)m(e)g(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(67.)
+150 3063 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(`)p Fi(--login)p Fk(')275
+3312 y Ft(When)e(Bash)g(is)h(in)m(v)m(ok)m(ed)h(as)e(an)g(in)m
+(teractiv)m(e)k(login)d(shell,)i(or)d(as)h(a)g(non-in)m(teractiv)m(e)i
+(shell)d(with)150 3422 y(the)d(`)p Fs(--login)p Ft(')d(option,)37
+b(it)d(\014rst)g(reads)g(and)g(executes)i(commands)e(from)f(the)i
+(\014le)g(`)p Fs(/etc/profile)p Ft(',)150 3531 y(if)28
+b(that)h(\014le)f(exists.)41 b(After)28 b(reading)h(that)f(\014le,)h
+(it)g(lo)s(oks)g(for)f(`)p Fs(~/.bash_profile)p Ft(',)d(`)p
+Fs(~/.bash_login)p Ft(',)150 3641 y(and)j(`)p Fs(~/.profile)p
+Ft(',)f(in)i(that)g(order,)g(and)f(reads)g(and)h(executes)h(commands)e
+(from)g(the)h(\014rst)f(one)h(that)150 3750 y(exists)i(and)e(is)h
+(readable.)41 b(The)30 b(`)p Fs(--noprofile)p Ft(')d(option)k(ma)m(y)f
+(b)s(e)g(used)f(when)g(the)h(shell)h(is)f(started)g(to)150
+3860 y(inhibit)g(this)g(b)s(eha)m(vior.)275 3999 y(When)72
+b(a)i(login)g(shell)f(exits,)85 b(Bash)73 b(reads)g(and)g(executes)h
+(commands)f(from)g(the)g(\014le)150 4109 y(`)p Fs(~/.bash_logout)p
+Ft(',)27 b(if)k(it)f(exists.)150 4343 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)275
+4592 y Ft(When)35 b(an)g(in)m(teractiv)m(e)j(shell)e(that)f(is)h(not)f
+(a)h(login)g(shell)g(is)f(started,)i(Bash)f(reads)f(and)g(executes)150
+4702 y(commands)24 b(from)f(`)p Fs(~/.bashrc)p Ft(',)h(if)g(that)g
+(\014le)g(exists.)40 b(This)23 b(ma)m(y)i(b)s(e)e(inhibited)g(b)m(y)h
+(using)g(the)g(`)p Fs(--norc)p Ft(')150 4812 y(option.)52
+b(The)33 b(`)p Fs(--rcfile)28 b Fj(file)11 b Ft(')33
+b(option)h(will)g(force)h(Bash)f(to)h(read)e(and)h(execute)h(commands)e
+(from)150 4921 y Fq(\014le)j Ft(instead)30 b(of)h(`)p
+Fs(~/.bashrc)p Ft('.)275 5061 y(So,)f(t)m(ypically)-8
+b(,)33 b(y)m(our)d(`)p Fs(~/.bash_profile)p Ft(')d(con)m(tains)32
+b(the)e(line)390 5200 y Fs(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g
+(~/.bashrc;)e(fi)150 5340 y Ft(after)31 b(\(or)g(b)s(efore\))f(an)m(y)h
+(login-sp)s(eci\014c)g(initializations.)p eop end
 %%Page: 66 72
-66 71 bop 150 -116 a Ft(66)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fk(In)m(v)m(ok)m(ed)40 b(non-in)m(teractiv)m(ely)275
-571 y Ft(When)24 b(Bash)h(is)f(started)h(non-in)m(teractiv)m(ely)-8
-b(,)26 b(to)g(run)d(a)i(shell)e(script,)i(for)g(example,)h(it)e(lo)s
-(oks)g(for)h(the)150 680 y(v)-5 b(ariable)33 b Fs(BASH_ENV)f
-Ft(in)h(the)i(en)m(vironmen)m(t,)g(expands)f(its)f(v)-5
-b(alue)34 b(if)g(it)g(app)s(ears)f(there,)j(and)e(uses)g(the)150
-790 y(expanded)c(v)-5 b(alue)29 b(as)i(the)g(name)f(of)h(a)f(\014le)g
-(to)h(read)f(and)g(execute.)42 b(Bash)31 b(b)s(eha)m(v)m(es)g(as)g(if)e
-(the)h(follo)m(wing)150 900 y(command)g(w)m(ere)h(executed:)390
-1062 y Fs(if)47 b([)h(-n)f("$BASH_ENV")e(];)i(then)f(.)i("$BASH_ENV";)c
-(fi)150 1224 y Ft(but)30 b(the)g(v)-5 b(alue)30 b(of)h(the)f
-Fs(PATH)f Ft(v)-5 b(ariable)30 b(is)f(not)i(used)e(to)i(searc)m(h)g
-(for)f(the)h(\014le)e(name.)275 1387 y(As)38 b(noted)h(ab)s(o)m(v)m(e,)
-j(if)37 b(a)i(non-in)m(teractiv)m(e)g(shell)e(is)h(in)m(v)m(ok)m(ed)h
-(with)e(the)h(`)p Fs(--login)p Ft(')g(option,)i(Bash)150
+TeXDict begin 66 71 bop 150 -116 a Ft(66)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fk(In)m(v)m(ok)m(ed)40
+b(non-in)m(teractiv)m(ely)275 571 y Ft(When)24 b(Bash)h(is)g(started)g
+(non-in)m(teractiv)m(ely)-8 b(,)29 b(to)d(run)d(a)i(shell)g(script,)h
+(for)f(example,)i(it)e(lo)s(oks)g(for)g(the)150 680 y(v)-5
+b(ariable)35 b Fs(BASH_ENV)d Ft(in)i(the)h(en)m(vironmen)m(t,)h
+(expands)e(its)g(v)-5 b(alue)35 b(if)g(it)g(app)s(ears)e(there,)j(and)e
+(uses)g(the)150 790 y(expanded)c(v)-5 b(alue)30 b(as)h(the)g(name)f(of)
+h(a)f(\014le)h(to)g(read)f(and)g(execute.)42 b(Bash)31
+b(b)s(eha)m(v)m(es)g(as)g(if)f(the)g(follo)m(wing)150
+900 y(command)g(w)m(ere)h(executed:)390 1062 y Fs(if)47
+b([)h(-n)f("$BASH_ENV")e(];)i(then)f(.)i("$BASH_ENV";)c(fi)150
+1224 y Ft(but)30 b(the)g(v)-5 b(alue)31 b(of)g(the)f
+Fs(PATH)f Ft(v)-5 b(ariable)32 b(is)e(not)h(used)e(to)i(searc)m(h)g
+(for)f(the)h(\014le)f(name.)275 1387 y(As)38 b(noted)h(ab)s(o)m(v)m(e,)
+j(if)c(a)h(non-in)m(teractiv)m(e)i(shell)e(is)g(in)m(v)m(ok)m(ed)h
+(with)e(the)g(`)p Fs(--login)p Ft(')g(option,)j(Bash)150
 1496 y(attempts)31 b(to)g(read)g(and)e(execute)j(commands)e(from)g(the)
-h(login)e(shell)g(startup)g(\014les.)150 1776 y Fk(In)m(v)m(ok)m(ed)40
-b(with)g(name)g Fi(sh)275 2048 y Ft(If)29 b(Bash)g(is)g(in)m(v)m(ok)m
-(ed)h(with)e(the)i(name)f Fs(sh)p Ft(,)g(it)h(tries)e(to)j(mimic)d(the)
-h(startup)g(b)s(eha)m(vior)g(of)h(historical)150 2158
-y(v)m(ersions)g(of)g Fs(sh)g Ft(as)h(closely)f(as)g(p)s(ossible,)e
-(while)h(conforming)g(to)i(the)g Fl(posix)e Ft(standard)h(as)h(w)m
-(ell.)275 2320 y(When)50 b(in)m(v)m(ok)m(ed)i(as)g(an)f(in)m(teractiv)m
-(e)h(login)e(shell,)55 b(or)c(as)g(a)h(non-in)m(teractiv)m(e)f(shell)f
-(with)g(the)150 2430 y(`)p Fs(--login)p Ft(')39 b(option,)j(it)e
-(\014rst)f(attempts)i(to)g(read)f(and)g(execute)h(commands)f(from)g(`)p
-Fs(/etc/profile)p Ft(')150 2539 y(and)d(`)p Fs(~/.profile)p
-Ft(',)g(in)f(that)i(order.)62 b(The)37 b(`)p Fs(--noprofile)p
-Ft(')e(option)i(ma)m(y)h(b)s(e)f(used)g(to)h(inhibit)c(this)150
-2649 y(b)s(eha)m(vior.)81 b(When)44 b(in)m(v)m(ok)m(ed)g(as)h(an)f(in)m
-(teractiv)m(e)h(shell)d(with)h(the)h(name)g Fs(sh)p Ft(,)j(Bash)d(lo)s
-(oks)g(for)g(the)150 2759 y(v)-5 b(ariable)35 b Fs(ENV)p
-Ft(,)i(expands)e(its)h(v)-5 b(alue)35 b(if)g(it)h(is)f(de\014ned,)i
-(and)e(uses)h(the)g(expanded)g(v)-5 b(alue)35 b(as)i(the)f(name)150
-2868 y(of)i(a)h(\014le)f(to)h(read)f(and)g(execute.)66
-b(Since)37 b(a)i(shell)d(in)m(v)m(ok)m(ed)j(as)g Fs(sh)e
-Ft(do)s(es)h(not)h(attempt)g(to)g(read)g(and)150 2978
-y(execute)i(commands)e(from)g(an)m(y)h(other)g(startup)f(\014les,)i
-(the)f(`)p Fs(--rcfile)p Ft(')d(option)i(has)h(no)f(e\013ect.)70
-b(A)150 3087 y(non-in)m(teractiv)m(e)30 b(shell)d(in)m(v)m(ok)m(ed)i
-(with)f(the)h(name)g Fs(sh)f Ft(do)s(es)g(not)i(attempt)g(to)f(read)g
+h(login)g(shell)g(startup)e(\014les.)150 1776 y Fk(In)m(v)m(ok)m(ed)40
+b(with)g(name)h Fi(sh)275 2048 y Ft(If)29 b(Bash)g(is)h(in)m(v)m(ok)m
+(ed)h(with)e(the)h(name)f Fs(sh)p Ft(,)g(it)i(tries)e(to)i(mimic)f(the)
+f(startup)g(b)s(eha)m(vior)h(of)g(historical)150 2158
+y(v)m(ersions)h(of)f Fs(sh)g Ft(as)h(closely)h(as)e(p)s(ossible,)g
+(while)h(conforming)f(to)h(the)g Fl(posix)e Ft(standard)h(as)h(w)m
+(ell.)275 2320 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 2430 y(`)p Fs(--login)p Ft(')39
+b(option,)k(it)e(\014rst)e(attempts)i(to)g(read)f(and)g(execute)h
+(commands)f(from)g(`)p Fs(/etc/profile)p Ft(')150 2539
+y(and)d(`)p Fs(~/.profile)p Ft(',)g(in)g(that)h(order.)62
+b(The)37 b(`)p Fs(--noprofile)p Ft(')e(option)j(ma)m(y)g(b)s(e)f(used)g
+(to)h(inhibit)f(this)150 2649 y(b)s(eha)m(vior.)82 b(When)44
+b(in)m(v)m(ok)m(ed)h(as)g(an)f(in)m(teractiv)m(e)j(shell)d(with)g(the)g
+(name)g Fs(sh)p Ft(,)j(Bash)d(lo)s(oks)h(for)f(the)150
+2759 y(v)-5 b(ariable)37 b Fs(ENV)p Ft(,)g(expands)e(its)i(v)-5
+b(alue)36 b(if)g(it)h(is)f(de\014ned,)h(and)e(uses)h(the)g(expanded)g
+(v)-5 b(alue)36 b(as)h(the)f(name)150 2868 y(of)i(a)h(\014le)g(to)g
+(read)f(and)g(execute.)66 b(Since)38 b(a)h(shell)f(in)m(v)m(ok)m(ed)i
+(as)f Fs(sh)e Ft(do)s(es)h(not)h(attempt)g(to)g(read)g(and)150
+2978 y(execute)i(commands)e(from)g(an)m(y)h(other)g(startup)f(\014les,)
+j(the)e(`)p Fs(--rcfile)p Ft(')d(option)j(has)g(no)f(e\013ect.)70
+b(A)150 3087 y(non-in)m(teractiv)m(e)32 b(shell)d(in)m(v)m(ok)m(ed)h
+(with)f(the)g(name)g Fs(sh)f Ft(do)s(es)g(not)i(attempt)g(to)f(read)g
 (an)m(y)g(other)g(startup)150 3197 y(\014les.)275 3359
-y(When)h(in)m(v)m(ok)m(ed)g(as)h Fs(sh)p Ft(,)f(Bash)h(en)m(ters)g
-Fl(posix)e Ft(mo)s(de)h(after)h(the)g(startup)f(\014les)f(are)i(read.)
+y(When)h(in)m(v)m(ok)m(ed)h(as)g Fs(sh)p Ft(,)f(Bash)h(en)m(ters)g
+Fl(posix)e Ft(mo)s(de)h(after)h(the)g(startup)f(\014les)g(are)h(read.)
 150 3639 y Fk(In)m(v)m(ok)m(ed)40 b(in)h Fh(posix)f Fk(mo)s(de)275
-3911 y Ft(When)d(Bash)g(is)f(started)i(in)e Fl(posix)g
-Ft(mo)s(de,)j(as)e(with)f(the)i(`)p Fs(--posix)p Ft(')d(command)i(line)
-f(option,)i(it)150 4021 y(follo)m(ws)26 b(the)i Fl(posix)e
-Ft(standard)h(for)g(startup)g(\014les.)38 b(In)27 b(this)f(mo)s(de,)h
-(in)m(teractiv)m(e)i(shells)c(expand)h(the)i Fs(ENV)150
-4131 y Ft(v)-5 b(ariable)34 b(and)h(commands)g(are)h(read)g(and)f
-(executed)h(from)f(the)h(\014le)f(whose)g(name)g(is)g(the)h(expanded)
-150 4240 y(v)-5 b(alue.)40 b(No)31 b(other)g(startup)f(\014les)f(are)i
-(read.)150 4520 y Fk(In)m(v)m(ok)m(ed)40 b(b)m(y)g(remote)g(shell)i
-(daemon)275 4792 y Ft(Bash)34 b(attempts)i(to)f(determine)f(when)f(it)h
-(is)g(b)s(eing)f(run)g(b)m(y)h(the)h(remote)h(shell)c(daemon,)k
-(usually)150 4902 y Fs(rshd)p Ft(.)60 b(If)36 b(Bash)h(determines)f(it)
-h(is)f(b)s(eing)g(run)f(b)m(y)i(rshd,)h(it)e(reads)h(and)f(executes)j
-(commands)d(from)150 5011 y(`)p Fs(~/.bashrc)p Ft(',)h(if)f(that)h
-(\014le)f(exists)h(and)f(is)g(readable.)61 b(It)37 b(will)d(not)j(do)g
-(this)f(if)g(in)m(v)m(ok)m(ed)h(as)h Fs(sh)p Ft(.)59
-b(The)150 5121 y(`)p Fs(--norc)p Ft(')34 b(option)h(ma)m(y)i(b)s(e)e
-(used)f(to)j(inhibit)32 b(this)i(b)s(eha)m(vior,)j(and)e(the)g(`)p
-Fs(--rcfile)p Ft(')f(option)h(ma)m(y)i(b)s(e)150 5230
-y(used)25 b(to)h(force)g(another)g(\014le)e(to)j(b)s(e)e(read,)h(but)f
-Fs(rshd)g Ft(do)s(es)g(not)g(generally)g(in)m(v)m(ok)m(e)i(the)e(shell)
-f(with)g(those)150 5340 y(options)30 b(or)g(allo)m(w)g(them)g(to)h(b)s
-(e)f(sp)s(eci\014ed.)p eop
+3911 y Ft(When)d(Bash)g(is)g(started)h(in)f Fl(posix)f
+Ft(mo)s(de,)j(as)e(with)g(the)h(`)p Fs(--posix)p Ft(')d(command)i(line)
+h(option,)h(it)150 4021 y(follo)m(ws)28 b(the)g Fl(posix)e
+Ft(standard)h(for)g(startup)g(\014les.)39 b(In)27 b(this)g(mo)s(de,)g
+(in)m(teractiv)m(e)k(shells)c(expand)f(the)i Fs(ENV)150
+4131 y Ft(v)-5 b(ariable)36 b(and)f(commands)g(are)h(read)g(and)f
+(executed)h(from)f(the)h(\014le)g(whose)f(name)g(is)h(the)g(expanded)
+150 4240 y(v)-5 b(alue.)41 b(No)31 b(other)g(startup)f(\014les)g(are)h
+(read.)150 4520 y Fk(In)m(v)m(ok)m(ed)40 b(b)m(y)g(remote)h(shell)h
+(daemon)275 4792 y Ft(Bash)34 b(attempts)i(to)f(determine)g(when)e(it)i
+(is)g(b)s(eing)f(run)f(b)m(y)h(the)h(remote)h(shell)e(daemon,)i
+(usually)150 4902 y Fs(rshd)p Ft(.)60 b(If)36 b(Bash)h(determines)g(it)
+h(is)f(b)s(eing)g(run)e(b)m(y)i(rshd,)h(it)f(reads)g(and)f(executes)j
+(commands)d(from)150 5011 y(`)p Fs(~/.bashrc)p Ft(',)h(if)g(that)g
+(\014le)g(exists)h(and)e(is)h(readable.)62 b(It)37 b(will)g(not)g(do)g
+(this)g(if)g(in)m(v)m(ok)m(ed)h(as)g Fs(sh)p Ft(.)59
+b(The)150 5121 y(`)p Fs(--norc)p Ft(')34 b(option)i(ma)m(y)h(b)s(e)e
+(used)f(to)j(inhibit)e(this)g(b)s(eha)m(vior,)j(and)d(the)g(`)p
+Fs(--rcfile)p Ft(')f(option)i(ma)m(y)h(b)s(e)150 5230
+y(used)25 b(to)h(force)g(another)g(\014le)f(to)i(b)s(e)e(read,)h(but)f
+Fs(rshd)g Ft(do)s(es)g(not)g(generally)i(in)m(v)m(ok)m(e)h(the)d(shell)
+h(with)f(those)150 5340 y(options)31 b(or)f(allo)m(w)i(them)e(to)h(b)s
+(e)f(sp)s(eci\014ed.)p eop end
 %%Page: 67 73
-67 72 bop 150 -116 a Ft(Chapter)30 b(6:)41 b(Bash)30
-b(F)-8 b(eatures)2484 b(67)150 299 y Fk(In)m(v)m(ok)m(ed)40
+TeXDict begin 67 72 bop 150 -116 a Ft(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(67)150 299 y Fk(In)m(v)m(ok)m(ed)40
 b(with)g(unequal)h(e\013ectiv)m(e)e(and)i(real)g Fh(uid/gid)p
-Fk(s)275 538 y Ft(If)26 b(Bash)i(is)e(started)i(with)e(the)h
-(e\013ectiv)m(e)i(user)e(\(group\))g(id)f(not)i(equal)f(to)h(the)f
-(real)g(user)g(\(group\))g(id,)150 648 y(and)f(the)i
-Fs(-p)e Ft(option)g(is)g(not)i(supplied,)c(no)j(startup)g(\014les)f
-(are)h(read,)h(shell)d(functions)h(are)h(not)g(inherited)150
-757 y(from)g(the)h(en)m(vironmen)m(t,)g(the)g Fs(SHELLOPTS)d
-Ft(v)-5 b(ariable,)27 b(if)g(it)g(app)s(ears)g(in)f(the)i(en)m
-(vironmen)m(t,)g(is)f(ignored,)150 867 y(and)g(the)h(e\013ectiv)m(e)i
-(user)d(id)f(is)h(set)h(to)h(the)f(real)f(user)g(id.)39
-b(If)27 b(the)h Fs(-p)g Ft(option)f(is)g(supplied)d(at)29
-b(in)m(v)m(o)s(cation,)150 977 y(the)i(startup)f(b)s(eha)m(vior)f(is)g
-(the)i(same,)g(but)f(the)g(e\013ectiv)m(e)i(user)e(id)f(is)g(not)i
-(reset.)150 1220 y Fr(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)150
+Fk(s)275 538 y Ft(If)26 b(Bash)i(is)f(started)h(with)f(the)g
+(e\013ectiv)m(e)j(user)d(\(group\))g(id)g(not)h(equal)g(to)g(the)f
+(real)h(user)f(\(group\))g(id,)150 648 y(and)f(the)i
+Fs(-p)e Ft(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
+757 y(from)g(the)h(en)m(vironmen)m(t,)h(the)f Fs(SHELLOPTS)d
+Ft(v)-5 b(ariable,)29 b(if)f(it)g(app)s(ears)f(in)g(the)h(en)m
+(vironmen)m(t,)h(is)f(ignored,)150 867 y(and)f(the)h(e\013ectiv)m(e)j
+(user)c(id)g(is)h(set)g(to)h(the)f(real)g(user)f(id.)40
+b(If)27 b(the)h Fs(-p)g Ft(option)g(is)g(supplied)e(at)j(in)m(v)m(o)s
+(cation,)150 977 y(the)i(startup)f(b)s(eha)m(vior)g(is)g(the)h(same,)g
+(but)f(the)g(e\013ectiv)m(e)j(user)d(id)g(is)g(not)h(reset.)150
+1220 y Fr(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)150
 1540 y Fk(6.3.1)63 b(What)40 b(is)h(an)g(In)m(teractiv)m(e)e(Shell?)275
-1779 y Ft(An)25 b(in)m(teractiv)m(e)h(shell)d(is)i(one)g(started)h
-(without)f(non-option)f(argumen)m(ts,)j(unless)d(`)p
-Fs(-s)p Ft(')h(is)f(sp)s(eci\014ed,)150 1889 y(without)32
-b(sp)s(eci\014ying)e(the)j(`)p Fs(-c)p Ft(')f(option,)h(and)f(whose)h
-(input)d(and)j(error)f(output)g(are)h(b)s(oth)f(connected)150
-1998 y(to)f(terminals)e(\(as)i(determined)e(b)m(y)h Fs(isatty\(3\))p
-Ft(\),)f(or)h(one)h(started)f(with)f(the)i(`)p Fs(-i)p
-Ft(')f(option.)275 2128 y(An)g(in)m(teractiv)m(e)h(shell)d(generally)i
-(reads)g(from)g(and)g(writes)f(to)i(a)g(user's)f(terminal.)275
-2258 y(The)e(`)p Fs(-s)p Ft(')i(in)m(v)m(o)s(cation)f(option)g(ma)m(y)h
-(b)s(e)f(used)f(to)i(set)g(the)g(p)s(ositional)d(parameters)i(when)g
-(an)g(in)m(ter-)150 2367 y(activ)m(e)j(shell)c(is)i(started.)150
+1779 y Ft(An)25 b(in)m(teractiv)m(e)j(shell)d(is)h(one)f(started)h
+(without)g(non-option)f(argumen)m(ts,)i(unless)e(`)p
+Fs(-s)p Ft(')g(is)g(sp)s(eci\014ed,)150 1889 y(without)33
+b(sp)s(eci\014ying)f(the)h(`)p Fs(-c)p Ft(')f(option,)i(and)e(whose)h
+(input)e(and)i(error)f(output)g(are)h(b)s(oth)f(connected)150
+1998 y(to)f(terminals)g(\(as)g(determined)f(b)m(y)g Fs(isatty\(3\))p
+Ft(\),)f(or)h(one)h(started)f(with)g(the)h(`)p Fs(-i)p
+Ft(')f(option.)275 2128 y(An)g(in)m(teractiv)m(e)j(shell)d(generally)i
+(reads)e(from)g(and)g(writes)g(to)h(a)g(user's)f(terminal.)275
+2258 y(The)e(`)p Fs(-s)p Ft(')i(in)m(v)m(o)s(cation)h(option)f(ma)m(y)g
+(b)s(e)f(used)f(to)i(set)g(the)g(p)s(ositional)g(parameters)f(when)g
+(an)g(in)m(ter-)150 2367 y(activ)m(e)k(shell)d(is)h(started.)150
 2577 y Fk(6.3.2)63 b(Is)41 b(this)g(Shell)g(In)m(teractiv)m(e?)275
-2817 y Ft(T)-8 b(o)32 b(determine)f(within)f(a)i(startup)g(script)f
-(whether)h(or)g(not)g(Bash)g(is)f(running)f(in)m(teractiv)m(ely)-8
-b(,)33 b(test)150 2926 y(the)42 b(v)-5 b(alue)41 b(of)g(the)h(`)p
-Fs(-)p Ft(')g(sp)s(ecial)e(parameter.)75 b(It)41 b(con)m(tains)h
-Fs(i)f Ft(when)g(the)h(shell)d(is)i(in)m(teractiv)m(e.)75
+2817 y Ft(T)-8 b(o)32 b(determine)g(within)g(a)g(startup)g(script)g
+(whether)g(or)g(not)g(Bash)g(is)g(running)f(in)m(teractiv)m(ely)-8
+b(,)36 b(test)150 2926 y(the)42 b(v)-5 b(alue)42 b(of)f(the)h(`)p
+Fs(-)p Ft(')g(sp)s(ecial)g(parameter.)75 b(It)41 b(con)m(tains)i
+Fs(i)e Ft(when)g(the)h(shell)f(is)h(in)m(teractiv)m(e.)77
 b(F)-8 b(or)150 3036 y(example:)390 3166 y Fs(case)47
 b("$-")f(in)390 3275 y(*i*\))h(echo)f(This)h(shell)f(is)h(interactive)e
 (;;)390 3385 y(*\))i(echo)g(This)f(shell)h(is)g(not)g(interactive)e(;;)
-390 3495 y(esac)275 3624 y Ft(Alternativ)m(ely)-8 b(,)25
-b(startup)e(scripts)g(ma)m(y)h(examine)f(the)h(v)-5 b(ariable)23
-b Fs(PS1)p Ft(;)i(it)f(is)e(unset)i(in)e(non-in)m(teractiv)m(e)150
-3734 y(shells,)29 b(and)g(set)i(in)e(in)m(teractiv)m(e)j(shells.)38
-b(Th)m(us:)390 3864 y Fs(if)47 b([)h(-z)f("$PS1")f(];)h(then)772
-3973 y(echo)f(This)h(shell)f(is)i(not)f(interactive)390
+390 3495 y(esac)275 3624 y Ft(Alternativ)m(ely)-8 b(,)28
+b(startup)23 b(scripts)h(ma)m(y)g(examine)g(the)g(v)-5
+b(ariable)25 b Fs(PS1)p Ft(;)g(it)g(is)e(unset)h(in)f(non-in)m
+(teractiv)m(e)150 3734 y(shells,)31 b(and)e(set)i(in)f(in)m(teractiv)m
+(e)k(shells.)40 b(Th)m(us:)390 3864 y Fs(if)47 b([)h(-z)f("$PS1")f(];)h
+(then)772 3973 y(echo)f(This)h(shell)f(is)i(not)f(interactive)390
 4083 y(else)772 4193 y(echo)f(This)h(shell)f(is)i(interactive)390
 4302 y(fi)150 4512 y Fk(6.3.3)63 b(In)m(teractiv)m(e)38
-b(Shell)k(Beha)m(vior)275 4752 y Ft(When)30 b(the)g(shell)f(is)g
-(running)f(in)m(teractiv)m(ely)-8 b(,)31 b(it)f(c)m(hanges)h(its)f(b)s
+b(Shell)k(Beha)m(vior)275 4752 y Ft(When)30 b(the)g(shell)h(is)f
+(running)f(in)m(teractiv)m(ely)-8 b(,)34 b(it)d(c)m(hanges)g(its)g(b)s
 (eha)m(vior)g(in)f(sev)m(eral)h(w)m(a)m(ys.)199 4881
-y(1.)61 b(Startup)37 b(\014les)f(are)i(read)f(and)g(executed)h(as)f
-(describ)s(ed)f(in)g(Section)h(6.2)h([Bash)g(Startup)e(Files],)330
-4991 y(page)31 b(65.)199 5121 y(2.)61 b(Job)35 b(Con)m(trol)f(\(see)i
-(Chapter)f(7)g([Job)g(Con)m(trol],)h(page)g(79\))g(is)e(enabled)g(b)m
-(y)h(default.)54 b(When)34 b(job)330 5230 y(con)m(trol)g(is)f(in)f
-(e\013ect,)37 b(Bash)d(ignores)f(the)h(k)m(eyb)s(oard-generated)h(job)e
-(con)m(trol)h(signals)f Fs(SIGTTIN)p Ft(,)330 5340 y
-Fs(SIGTTOU)p Ft(,)c(and)g Fs(SIGTSTP)p Ft(.)p eop
+y(1.)61 b(Startup)37 b(\014les)g(are)h(read)f(and)g(executed)h(as)f
+(describ)s(ed)g(in)g(Section)h(6.2)g([Bash)g(Startup)e(Files],)330
+4991 y(page)31 b(65.)199 5121 y(2.)61 b(Job)35 b(Con)m(trol)g(\(see)h
+(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(79\))g(is)f(enabled)g(b)m
+(y)g(default.)55 b(When)34 b(job)330 5230 y(con)m(trol)h(is)f(in)f
+(e\013ect,)k(Bash)d(ignores)g(the)g(k)m(eyb)s(oard-generated)h(job)e
+(con)m(trol)i(signals)g Fs(SIGTTIN)p Ft(,)330 5340 y
+Fs(SIGTTOU)p Ft(,)29 b(and)g Fs(SIGTSTP)p Ft(.)p eop
+end
 %%Page: 68 74
-68 73 bop 150 -116 a Ft(68)2572 b(Bash)31 b(Reference)g(Man)m(ual)199
-299 y(3.)61 b(Bash)39 b(expands)f(and)g(displa)m(ys)f
-Fs(PS1)h Ft(b)s(efore)h(reading)f(the)h(\014rst)f(line)f(of)i(a)g
-(command,)i(and)d(ex-)330 408 y(pands)30 b(and)g(displa)m(ys)f
-Fs(PS2)g Ft(b)s(efore)i(reading)f(the)h(second)f(and)h(subsequen)m(t)f
-(lines)f(of)i(a)g(m)m(ulti-line)330 518 y(command.)199
-669 y(4.)61 b(Bash)26 b(executes)i(the)e(v)-5 b(alue)26
-b(of)g(the)h Fs(PROMPT_COMMAND)22 b Ft(v)-5 b(ariable)25
-b(as)i(a)f(command)g(b)s(efore)g(prin)m(ting)330 779
-y(the)31 b(primary)d(prompt,)i Fs($PS1)f Ft(\(see)i(Section)f(5.2)i
-([Bash)f(V)-8 b(ariables],)30 b(page)h(55\).)199 930
-y(5.)61 b(Readline)28 b(\(see)j(Chapter)e(8)h([Command)e(Line)h
-(Editing],)f(page)i(83\))h(is)e(used)g(to)h(read)f(commands)330
+TeXDict begin 68 73 bop 150 -116 a Ft(68)2572 b(Bash)31
+b(Reference)g(Man)m(ual)199 299 y(3.)61 b(Bash)39 b(expands)f(and)g
+(displa)m(ys)h Fs(PS1)f Ft(b)s(efore)h(reading)g(the)g(\014rst)f(line)h
+(of)g(a)g(command,)i(and)d(ex-)330 408 y(pands)30 b(and)g(displa)m(ys)h
+Fs(PS2)e Ft(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 518 y(command.)199
+669 y(4.)61 b(Bash)26 b(executes)i(the)e(v)-5 b(alue)27
+b(of)f(the)h Fs(PROMPT_COMMAND)22 b Ft(v)-5 b(ariable)27
+b(as)g(a)f(command)g(b)s(efore)g(prin)m(ting)330 779
+y(the)31 b(primary)e(prompt,)h Fs($PS1)f Ft(\(see)i(Section)g(5.2)h
+([Bash)f(V)-8 b(ariables],)32 b(page)f(55\).)199 930
+y(5.)61 b(Readline)30 b(\(see)h(Chapter)e(8)h([Command)e(Line)i
+(Editing],)g(page)g(83\))h(is)f(used)f(to)h(read)f(commands)330
 1039 y(from)h(the)g(user's)g(terminal.)199 1190 y(6.)61
-b(Bash)36 b(insp)s(ects)f(the)i(v)-5 b(alue)36 b(of)g(the)g
-Fs(ignoreeof)e Ft(option)i(to)h Fs(set)29 b(-o)36 b Ft(instead)g(of)g
-(exiting)g(imme-)330 1300 y(diately)f(when)g(it)h(receiv)m(es)h(an)f
-Fs(EOF)f Ft(on)h(its)f(standard)g(input)f(when)i(reading)f(a)h(command)
-g(\(see)330 1409 y(Section)30 b(4.3)i([The)e(Set)g(Builtin],)f(page)i
-(50\).)199 1560 y(7.)61 b(Command)43 b(history)g(\(see)i(Section)f(9.1)
-h([Bash)f(History)g(F)-8 b(acilities],)47 b(page)e(109\))h(and)d
-(history)330 1670 y(expansion)22 b(\(see)j(Section)e(9.3)i([History)e
-(In)m(teraction],)j(page)e(111\))h(are)f(enabled)f(b)m(y)g(default.)38
-b(Bash)330 1779 y(will)20 b(sa)m(v)m(e)25 b(the)e(command)f(history)g
-(to)i(the)f(\014le)f(named)g(b)m(y)h Fs($HISTFILE)d Ft(when)i(an)h(in)m
-(teractiv)m(e)h(shell)330 1889 y(exits.)199 2040 y(8.)61
-b(Alias)29 b(expansion)h(\(see)h(Section)f(6.6)h([Aliases],)g(page)g
-(71\))h(is)d(p)s(erformed)g(b)m(y)h(default.)199 2191
+b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 b(of)f(the)g
+Fs(ignoreeof)e Ft(option)j(to)g Fs(set)29 b(-o)36 b Ft(instead)h(of)f
+(exiting)i(imme-)330 1300 y(diately)f(when)e(it)i(receiv)m(es)h(an)e
+Fs(EOF)f Ft(on)h(its)g(standard)f(input)g(when)h(reading)g(a)g(command)
+g(\(see)330 1409 y(Section)31 b(4.3)h([The)e(Set)g(Builtin],)i(page)f
+(50\).)199 1560 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(109\))h(and)d
+(history)330 1670 y(expansion)23 b(\(see)i(Section)f(9.3)h([History)f
+(In)m(teraction],)j(page)d(111\))h(are)f(enabled)g(b)m(y)f(default.)39
+b(Bash)330 1779 y(will)23 b(sa)m(v)m(e)i(the)e(command)f(history)h(to)h
+(the)f(\014le)g(named)f(b)m(y)h Fs($HISTFILE)d Ft(when)i(an)h(in)m
+(teractiv)m(e)j(shell)330 1889 y(exits.)199 2040 y(8.)61
+b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e
+(71\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 2191
 y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g
-(ignores)e Fs(SIGTERM)g Ft(\(see)i(Section)f(3.7.6)i([Signals],)e(page)
-h(31\).)154 2342 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g
-(traps,)g Fs(SIGINT)e Ft(is)h(caugh)m(t)i(and)f(handled)d(\(\(see)29
-b(Section)d(3.7.6)j([Signals],)330 2451 y(page)i(31\).)42
-b Fs(SIGINT)29 b Ft(will)e(in)m(terrupt)i(some)i(shell)e(builtins.)154
-2602 y(11.)61 b(An)40 b(in)m(teractiv)m(e)h(login)e(shell)g(sends)g(a)i
-Fs(SIGHUP)d Ft(to)j(all)e(jobs)h(on)g(exit)g(if)g(the)g
-Fs(hupoxexit)e Ft(shell)330 2712 y(option)30 b(has)g(b)s(een)g(enabled)
-f(\(see)i(Section)f(3.7.6)j([Signals],)c(page)i(31\).)154
-2863 y(12.)61 b(The)31 b(`)p Fs(-n)p Ft(')g(in)m(v)m(o)s(cation)g
-(option)f(is)h(ignored,)f(and)h(`)p Fs(set)f(-n)p Ft(')g(has)h(no)g
-(e\013ect)i(\(see)f(Section)f(4.3)h([The)330 2972 y(Set)f(Builtin],)d
-(page)j(50\).)154 3123 y(13.)61 b(Bash)32 b(will)d(c)m(hec)m(k)34
-b(for)e(mail)e(p)s(erio)s(dically)-8 b(,)30 b(dep)s(ending)f(on)j(the)g
-(v)-5 b(alues)31 b(of)h(the)h Fs(MAIL)p Ft(,)e Fs(MAILPATH)p
-Ft(,)330 3233 y(and)f Fs(MAILCHECK)e Ft(shell)g(v)-5
-b(ariables)29 b(\(see)j(Section)e(5.2)h([Bash)g(V)-8
-b(ariables],)30 b(page)h(55\).)154 3384 y(14.)61 b(Expansion)31
-b(errors)i(due)f(to)i(references)f(to)h(un)m(b)s(ound)c(shell)h(v)-5
-b(ariables)32 b(after)i(`)p Fs(set)29 b(-u)p Ft(')k(has)g(b)s(een)330
-3494 y(enabled)c(will)f(not)j(cause)g(the)f(shell)f(to)i(exit)f(\(see)h
-(Section)g(4.3)g([The)f(Set)h(Builtin],)d(page)j(50\).)154
-3644 y(15.)61 b(The)48 b(shell)f(will)e(not)k(exit)f(on)h(expansion)e
-(errors)h(caused)g(b)m(y)h Fq(v)-5 b(ar)54 b Ft(b)s(eing)47
-b(unset)h(or)h(n)m(ull)d(in)330 3754 y Fs(${)p Fj(var)11
-b Fs(:?)p Fj(word)g Fs(})26 b Ft(expansions)j(\(see)i(Section)g(3.5.3)h
-([Shell)c(P)m(arameter)k(Expansion],)d(page)i(18\).)154
-3905 y(16.)61 b(Redirection)29 b(errors)h(encoun)m(tered)h(b)m(y)f
-(shell)f(builtins)e(will)g(not)k(cause)g(the)f(shell)f(to)i(exit.)154
-4056 y(17.)61 b(When)26 b(running)e(in)i Fl(posix)f Ft(mo)s(de,)j(a)f
-(sp)s(ecial)e(builtin)e(returning)i(an)h(error)h(status)g(will)d(not)i
-(cause)330 4166 y(the)31 b(shell)d(to)j(exit)g(\(see)g(Section)f(6.11)i
+(ignores)f Fs(SIGTERM)f Ft(\(see)i(Section)g(3.7.6)h([Signals],)g(page)
+f(31\).)154 2342 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g
+(traps,)g Fs(SIGINT)e Ft(is)i(caugh)m(t)h(and)f(handled)e(\(\(see)k
+(Section)e(3.7.6)i([Signals],)330 2451 y(page)i(31\).)42
+b Fs(SIGINT)29 b Ft(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154
+2602 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i
+Fs(SIGHUP)d Ft(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f
+Fs(hupoxexit)e Ft(shell)330 2712 y(option)31 b(has)f(b)s(een)g(enabled)
+g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(31\).)154
+2863 y(12.)61 b(The)31 b(`)p Fs(-n)p Ft(')g(in)m(v)m(o)s(cation)i
+(option)e(is)h(ignored,)f(and)g(`)p Fs(set)f(-n)p Ft(')g(has)h(no)g
+(e\013ect)i(\(see)f(Section)g(4.3)g([The)330 2972 y(Set)f(Builtin],)g
+(page)g(50\).)154 3123 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 Fs(MAIL)p Ft(,)e Fs(MAILPATH)p
+Ft(,)330 3233 y(and)f Fs(MAILCHECK)e Ft(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(55\).)154 3384 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 Fs(set)29 b(-u)p Ft(')k(has)g(b)s(een)330
+3494 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g
+(Section)h(4.3)f([The)f(Set)h(Builtin],)g(page)g(50\).)154
+3644 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 Fq(v)-5 b(ar)54 b Ft(b)s(eing)48
+b(unset)g(or)h(n)m(ull)f(in)330 3754 y Fs(${)p Fj(var)11
+b Fs(:?)p Fj(word)g Fs(})26 b Ft(expansions)k(\(see)h(Section)h(3.5.3)g
+([Shell)e(P)m(arameter)i(Expansion],)e(page)h(18\).)154
+3905 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
+4056 y(17.)61 b(When)26 b(running)f(in)i Fl(posix)e Ft(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 4166 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(76\).)154 4316 y(18.)61
-b(A)34 b(failed)e Fs(exec)h Ft(will)e(not)j(cause)g(the)g(shell)e(to)i
-(exit)g(\(see)g(Section)g(4.1)h([Bourne)f(Shell)d(Builtins],)330
-4426 y(page)g(33\).)154 4577 y(19.)61 b(P)m(arser)31
-b(syn)m(tax)f(errors)g(will)e(not)j(cause)g(the)f(shell)f(to)i(exit.)
-154 4728 y(20.)61 b(Simple)19 b(sp)s(elling)g(correction)i(for)h
-(directory)f(argumen)m(ts)g(to)i(the)e Fs(cd)g Ft(builtin)d(is)j
-(enabled)f(b)m(y)i(default)330 4838 y(\(see)38 b(the)e(description)f
-(of)i(the)f Fs(cdspell)f Ft(option)h(to)h(the)g Fs(shopt)e
-Ft(builtin)e(in)j(Section)g(4.2)i([Bash)330 4947 y(Builtins],)28
-b(page)j(39\).)154 5098 y(21.)61 b(The)42 b(shell)f(will)f(c)m(hec)m(k)
-k(the)f(v)-5 b(alue)42 b(of)g(the)h Fs(TMOUT)e Ft(v)-5
-b(ariable)42 b(and)g(exit)g(if)g(a)h(command)f(is)g(not)330
-5208 y(read)30 b(within)e(the)i(sp)s(eci\014ed)e(n)m(um)m(b)s(er)h(of)i
-(seconds)f(after)g(prin)m(ting)e Fs($PS1)h Ft(\(see)i(Section)f(5.2)i
-([Bash)330 5317 y(V)-8 b(ariables],)30 b(page)h(55\).)p
-eop
+b(A)34 b(failed)g Fs(exec)f Ft(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
+4426 y(page)e(33\).)154 4577 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 4728 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 Fs(cd)g Ft(builtin)g(is)h
+(enabled)f(b)m(y)h(default)330 4838 y(\(see)38 b(the)e(description)h
+(of)g(the)f Fs(cdspell)f Ft(option)i(to)g(the)g Fs(shopt)e
+Ft(builtin)h(in)h(Section)g(4.2)h([Bash)330 4947 y(Builtins],)31
+b(page)g(39\).)154 5098 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 Fs(TMOUT)e Ft(v)-5
+b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h(not)330
+5208 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 Fs($PS1)f Ft(\(see)i(Section)g(5.2)h
+([Bash)330 5317 y(V)-8 b(ariables],)32 b(page)f(55\).)p
+eop end
 %%Page: 69 75
-69 74 bop 150 -116 a Ft(Chapter)30 b(6:)41 b(Bash)30
-b(F)-8 b(eatures)2484 b(69)150 299 y Fr(6.4)68 b(Bash)45
-b(Conditional)h(Expressions)275 548 y Ft(Conditional)35
-b(expressions)i(are)i(used)f(b)m(y)g(the)g Fs([[)g Ft(comp)s(ound)f
+TeXDict begin 69 74 bop 150 -116 a Ft(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(69)150 299 y Fr(6.4)68
+b(Bash)45 b(Conditional)h(Expressions)275 548 y Ft(Conditional)38
+b(expressions)g(are)h(used)f(b)m(y)g(the)g Fs([[)g Ft(comp)s(ound)f
 (command)h(and)g(the)g Fs(test)g Ft(and)f Fs([)150 657
-y Ft(builtin)27 b(commands.)275 796 y(Expressions)k(ma)m(y)i(b)s(e)g
-(unary)f(or)h(binary)-8 b(.)47 b(Unary)33 b(expressions)e(are)j(often)f
-(used)f(to)i(examine)f(the)150 906 y(status)26 b(of)g(a)h(\014le.)38
-b(There)26 b(are)g(string)f(op)s(erators)h(and)g(n)m(umeric)e
-(comparison)i(op)s(erators)g(as)g(w)m(ell.)38 b(If)26
-b(the)150 1016 y Fq(\014le)37 b Ft(argumen)m(t)d(to)f(one)h(of)f(the)g
-(primaries)e(is)h(of)h(the)g(form)g(`)p Fs(/dev/fd/)p
-Fj(N)11 b Ft(',)31 b(then)i(\014le)f(descriptor)g Fq(N)43
+y Ft(builtin)30 b(commands.)275 796 y(Expressions)i(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 906 y(status)26 b(of)g(a)h(\014le.)39
+b(There)26 b(are)g(string)g(op)s(erators)g(and)g(n)m(umeric)f
+(comparison)i(op)s(erators)f(as)g(w)m(ell.)40 b(If)26
+b(the)150 1016 y Fq(\014le)38 b Ft(argumen)m(t)c(to)f(one)h(of)f(the)g
+(primaries)g(is)g(of)g(the)g(form)g(`)p Fs(/dev/fd/)p
+Fj(N)11 b Ft(',)31 b(then)i(\014le)g(descriptor)g Fq(N)43
 b Ft(is)150 1125 y(c)m(hec)m(k)m(ed.)e(If)26 b(the)g
-Fq(\014le)k Ft(argumen)m(t)c(to)h(one)f(of)g(the)h(primaries)c(is)i
-(one)h(of)g(`)p Fs(/dev/stdin)p Ft(',)f(`)p Fs(/dev/stdout)p
-Ft(',)150 1235 y(or)30 b(`)p Fs(/dev/stderr)p Ft(',)e(\014le)i
-(descriptor)f(0,)i(1,)g(or)g(2,)g(resp)s(ectiv)m(ely)-8
-b(,)30 b(is)f(c)m(hec)m(k)m(ed.)150 1401 y Fs(-a)h Fj(file)162
-b Ft(T)-8 b(rue)30 b(if)f Fq(\014le)35 b Ft(exists.)150
-1565 y Fs(-b)30 b Fj(file)162 b Ft(T)-8 b(rue)30 b(if)f
-Fq(\014le)35 b Ft(exists)30 b(and)g(is)f(a)i(blo)s(c)m(k)f(sp)s(ecial)f
-(\014le.)150 1729 y Fs(-c)h Fj(file)162 b Ft(T)-8 b(rue)30
-b(if)f Fq(\014le)35 b Ft(exists)30 b(and)g(is)f(a)i(c)m(haracter)h(sp)s
-(ecial)d(\014le.)150 1893 y Fs(-d)h Fj(file)162 b Ft(T)-8
-b(rue)30 b(if)f Fq(\014le)35 b Ft(exists)30 b(and)g(is)f(a)i(directory)
+Fq(\014le)31 b Ft(argumen)m(t)26 b(to)h(one)f(of)g(the)h(primaries)e
+(is)h(one)g(of)g(`)p Fs(/dev/stdin)p Ft(',)f(`)p Fs(/dev/stdout)p
+Ft(',)150 1235 y(or)30 b(`)p Fs(/dev/stderr)p Ft(',)e(\014le)j
+(descriptor)f(0,)h(1,)g(or)g(2,)g(resp)s(ectiv)m(ely)-8
+b(,)32 b(is)e(c)m(hec)m(k)m(ed.)150 1401 y Fs(-a)g Fj(file)162
+b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b Ft(exists.)150
+1565 y Fs(-b)30 b Fj(file)162 b Ft(T)-8 b(rue)30 b(if)g
+Fq(\014le)36 b Ft(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g
+(\014le.)150 1729 y Fs(-c)f Fj(file)162 b Ft(T)-8 b(rue)30
+b(if)g Fq(\014le)36 b Ft(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s
+(ecial)f(\014le.)150 1893 y Fs(-d)f Fj(file)162 b Ft(T)-8
+b(rue)30 b(if)g Fq(\014le)36 b Ft(exists)31 b(and)f(is)g(a)h(directory)
 -8 b(.)150 2058 y Fs(-e)30 b Fj(file)162 b Ft(T)-8 b(rue)30
-b(if)f Fq(\014le)35 b Ft(exists.)150 2222 y Fs(-f)30
-b Fj(file)162 b Ft(T)-8 b(rue)30 b(if)f Fq(\014le)35
-b Ft(exists)30 b(and)g(is)f(a)i(regular)e(\014le.)150
-2386 y Fs(-g)h Fj(file)162 b Ft(T)-8 b(rue)30 b(if)f
-Fq(\014le)35 b Ft(exists)30 b(and)g(its)f(set-group-id)h(bit)g(is)f
-(set.)150 2550 y Fs(-h)h Fj(file)162 b Ft(T)-8 b(rue)30
-b(if)f Fq(\014le)35 b Ft(exists)30 b(and)g(is)f(a)i(sym)m(b)s(olic)e
-(link.)150 2714 y Fs(-k)h Fj(file)162 b Ft(T)-8 b(rue)30
-b(if)f Fq(\014le)35 b Ft(exists)30 b(and)g(its)f Fs(")p
-Ft(stic)m(ky)p Fs(")h Ft(bit)g(is)f(set.)150 2878 y Fs(-p)h
-Fj(file)162 b Ft(T)-8 b(rue)30 b(if)f Fq(\014le)35 b
-Ft(exists)30 b(and)g(is)f(a)i(named)f(pip)s(e)e(\(FIF)m(O\).)150
-3042 y Fs(-r)i Fj(file)162 b Ft(T)-8 b(rue)30 b(if)f
-Fq(\014le)35 b Ft(exists)30 b(and)g(is)f(readable.)150
-3206 y Fs(-s)h Fj(file)162 b Ft(T)-8 b(rue)30 b(if)f
-Fq(\014le)35 b Ft(exists)30 b(and)g(has)g(a)g(size)h(greater)g(than)f
+b(if)g Fq(\014le)36 b Ft(exists.)150 2222 y Fs(-f)30
+b Fj(file)162 b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36
+b Ft(exists)31 b(and)f(is)g(a)h(regular)f(\014le.)150
+2386 y Fs(-g)g Fj(file)162 b Ft(T)-8 b(rue)30 b(if)g
+Fq(\014le)36 b Ft(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f
+(set.)150 2550 y Fs(-h)g Fj(file)162 b Ft(T)-8 b(rue)30
+b(if)g Fq(\014le)36 b Ft(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g
+(link.)150 2714 y Fs(-k)f Fj(file)162 b Ft(T)-8 b(rue)30
+b(if)g Fq(\014le)36 b Ft(exists)31 b(and)f(its)g Fs(")p
+Ft(stic)m(ky)p Fs(")h Ft(bit)g(is)f(set.)150 2878 y Fs(-p)g
+Fj(file)162 b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b
+Ft(exists)31 b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150
+3042 y Fs(-r)h Fj(file)162 b Ft(T)-8 b(rue)30 b(if)g
+Fq(\014le)36 b Ft(exists)31 b(and)f(is)g(readable.)150
+3206 y Fs(-s)g Fj(file)162 b Ft(T)-8 b(rue)30 b(if)g
+Fq(\014le)36 b Ft(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f
 (zero.)150 3370 y Fs(-t)g Fj(fd)258 b Ft(T)-8 b(rue)30
-b(if)f(\014le)h(descriptor)f Fq(fd)k Ft(is)d(op)s(en)f(and)h(refers)g
+b(if)g(\014le)h(descriptor)f Fq(fd)j Ft(is)e(op)s(en)e(and)h(refers)g
 (to)h(a)g(terminal.)150 3534 y Fs(-u)f Fj(file)162 b
-Ft(T)-8 b(rue)30 b(if)f Fq(\014le)35 b Ft(exists)30 b(and)g(its)f
-(set-user-id)h(bit)f(is)h(set.)150 3698 y Fs(-w)g Fj(file)162
-b Ft(T)-8 b(rue)30 b(if)f Fq(\014le)35 b Ft(exists)30
-b(and)g(is)f(writable.)150 3863 y Fs(-x)h Fj(file)162
-b Ft(T)-8 b(rue)30 b(if)f Fq(\014le)35 b Ft(exists)30
-b(and)g(is)f(executable.)150 4027 y Fs(-O)h Fj(file)162
-b Ft(T)-8 b(rue)30 b(if)f Fq(\014le)35 b Ft(exists)30
-b(and)g(is)f(o)m(wned)h(b)m(y)h(the)f(e\013ectiv)m(e)i(user)e(id.)150
-4191 y Fs(-G)g Fj(file)162 b Ft(T)-8 b(rue)30 b(if)f
-Fq(\014le)35 b Ft(exists)30 b(and)g(is)f(o)m(wned)h(b)m(y)h(the)f
-(e\013ectiv)m(e)i(group)e(id.)150 4355 y Fs(-L)g Fj(file)162
-b Ft(T)-8 b(rue)30 b(if)f Fq(\014le)35 b Ft(exists)30
-b(and)g(is)f(a)i(sym)m(b)s(olic)e(link.)150 4519 y Fs(-S)h
-Fj(file)162 b Ft(T)-8 b(rue)30 b(if)f Fq(\014le)35 b
-Ft(exists)30 b(and)g(is)f(a)i(so)s(c)m(k)m(et.)150 4683
-y Fs(-N)f Fj(file)162 b Ft(T)-8 b(rue)30 b(if)f Fq(\014le)35
-b Ft(exists)30 b(and)g(has)g(b)s(een)f(mo)s(di\014ed)g(since)g(it)h(w)m
-(as)h(last)f(read.)150 4847 y Fj(file1)39 b Fs(-nt)30
-b Fj(file2)630 4957 y Ft(T)-8 b(rue)23 b(if)g Fq(\014le1)31
-b Ft(is)23 b(new)m(er)h(\(according)g(to)h(mo)s(di\014cation)d(date\))j
-(than)f Fq(\014le2)p Ft(,)h(or)f(if)f Fq(\014le1)30 b
-Ft(exists)630 5066 y(and)g Fq(\014le2)37 b Ft(do)s(es)30
+Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b Ft(exists)31 b(and)f(its)g
+(set-user-id)h(bit)f(is)h(set.)150 3698 y Fs(-w)f Fj(file)162
+b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b Ft(exists)31
+b(and)f(is)g(writable.)150 3863 y Fs(-x)g Fj(file)162
+b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b Ft(exists)31
+b(and)f(is)g(executable.)150 4027 y Fs(-O)g Fj(file)162
+b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b Ft(exists)31
+b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j(user)d(id.)150
+4191 y Fs(-G)g Fj(file)162 b Ft(T)-8 b(rue)30 b(if)g
+Fq(\014le)36 b Ft(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f
+(e\013ectiv)m(e)j(group)d(id.)150 4355 y Fs(-L)g Fj(file)162
+b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b Ft(exists)31
+b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 4519 y Fs(-S)f
+Fj(file)162 b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b
+Ft(exists)31 b(and)f(is)g(a)h(so)s(c)m(k)m(et.)150 4683
+y Fs(-N)f Fj(file)162 b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36
+b Ft(exists)31 b(and)f(has)g(b)s(een)f(mo)s(di\014ed)h(since)g(it)h(w)m
+(as)g(last)g(read.)150 4847 y Fj(file1)39 b Fs(-nt)30
+b Fj(file2)630 4957 y Ft(T)-8 b(rue)23 b(if)h Fq(\014le1)32
+b Ft(is)24 b(new)m(er)g(\(according)h(to)g(mo)s(di\014cation)f(date\))h
+(than)f Fq(\014le2)p Ft(,)i(or)e(if)g Fq(\014le1)31 b
+Ft(exists)630 5066 y(and)f Fq(\014le2)38 b Ft(do)s(es)30
 b(not.)150 5230 y Fj(file1)39 b Fs(-ot)30 b Fj(file2)630
-5340 y Ft(T)-8 b(rue)30 b(if)f Fq(\014le1)37 b Ft(is)30
-b(older)f(than)h Fq(\014le2)p Ft(,)h(or)f(if)f Fq(\014le2)37
-b Ft(exists)30 b(and)g Fq(\014le1)37 b Ft(do)s(es)30
-b(not.)p eop
+5340 y Ft(T)-8 b(rue)30 b(if)g Fq(\014le1)38 b Ft(is)31
+b(older)f(than)g Fq(\014le2)p Ft(,)i(or)e(if)g Fq(\014le2)38
+b Ft(exists)31 b(and)f Fq(\014le1)38 b Ft(do)s(es)30
+b(not.)p eop end
 %%Page: 70 76
-70 75 bop 150 -116 a Ft(70)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fj(file1)39 b Fs(-ef)30 b Fj(file2)630 408 y Ft(T)-8
-b(rue)30 b(if)f Fq(\014le1)37 b Ft(and)30 b Fq(\014le2)37
-b Ft(refer)30 b(to)i(the)e(same)h(device)f(and)g(ino)s(de)f(n)m(um)m(b)
-s(ers.)150 570 y Fs(-o)h Fj(optname)630 679 y Ft(T)-8
-b(rue)41 b(if)f(shell)f(option)i Fq(optname)47 b Ft(is)40
-b(enabled.)72 b(The)41 b(list)f(of)h(options)f(app)s(ears)h(in)f(the)
-630 789 y(description)18 b(of)j(the)f(`)p Fs(-o)p Ft(')g(option)g(to)h
-(the)g Fs(set)e Ft(builtin)e(\(see)k(Section)f(4.3)h([The)g(Set)f
-(Builtin],)630 898 y(page)31 b(50\).)150 1060 y Fs(-z)f
-Fj(string)630 1169 y Ft(T)-8 b(rue)30 b(if)f(the)i(length)f(of)g
-Fq(string)37 b Ft(is)30 b(zero.)150 1330 y Fs(-n)g Fj(string)150
-1440 y(string)192 b Ft(T)-8 b(rue)30 b(if)f(the)i(length)f(of)g
-Fq(string)37 b Ft(is)30 b(non-zero.)150 1601 y Fj(string1)39
-b Fs(==)30 b Fj(string2)630 1711 y Ft(T)-8 b(rue)33 b(if)g(the)h
-(strings)e(are)i(equal.)50 b(`)p Fs(=)p Ft(')34 b(ma)m(y)g(b)s(e)f
-(used)g(in)f(place)i(of)f(`)p Fs(==)p Ft(')h(for)f(strict)h
-Fl(posix)630 1820 y Ft(compliance.)150 1981 y Fj(string1)39
-b Fs(!=)30 b Fj(string2)630 2091 y Ft(T)-8 b(rue)30 b(if)f(the)i
-(strings)e(are)i(not)f(equal.)150 2252 y Fj(string1)39
-b Fs(<)30 b Fj(string2)630 2362 y Ft(T)-8 b(rue)30 b(if)f
-Fq(string1)37 b Ft(sorts)31 b(b)s(efore)f Fq(string2)37
-b Ft(lexicographically)28 b(in)h(the)i(curren)m(t)f(lo)s(cale.)150
-2523 y Fj(string1)39 b Fs(>)30 b Fj(string2)630 2632
-y Ft(T)-8 b(rue)30 b(if)f Fq(string1)37 b Ft(sorts)31
-b(after)g Fq(string2)37 b Ft(lexicographically)28 b(in)h(the)h(curren)m
-(t)h(lo)s(cale.)150 2794 y Fj(arg1)40 b Fs(OP)29 b Fj(arg2)630
-2903 y Fs(OP)k Ft(is)g(one)h(of)h(`)p Fs(-eq)p Ft(',)f(`)p
-Fs(-ne)p Ft(',)h(`)p Fs(-lt)p Ft(',)g(`)p Fs(-le)p Ft(',)f(`)p
+TeXDict begin 70 75 bop 150 -116 a Ft(70)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fj(file1)39 b Fs(-ef)30
+b Fj(file2)630 408 y Ft(T)-8 b(rue)30 b(if)g Fq(\014le1)38
+b Ft(and)30 b Fq(\014le2)38 b Ft(refer)30 b(to)i(the)e(same)h(device)g
+(and)f(ino)s(de)g(n)m(um)m(b)s(ers.)150 570 y Fs(-o)g
+Fj(optname)630 679 y Ft(T)-8 b(rue)41 b(if)g(shell)g(option)h
+Fq(optname)47 b Ft(is)41 b(enabled.)73 b(The)41 b(list)h(of)f(options)g
+(app)s(ears)g(in)g(the)630 789 y(description)20 b(of)h(the)f(`)p
+Fs(-o)p Ft(')g(option)h(to)g(the)g Fs(set)e Ft(builtin)h(\(see)h
+(Section)g(4.3)g([The)g(Set)f(Builtin],)630 898 y(page)31
+b(50\).)150 1060 y Fs(-z)f Fj(string)630 1169 y Ft(T)-8
+b(rue)30 b(if)g(the)h(length)g(of)f Fq(string)38 b Ft(is)31
+b(zero.)150 1330 y Fs(-n)f Fj(string)150 1440 y(string)192
+b Ft(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f Fq(string)38
+b Ft(is)31 b(non-zero.)150 1601 y Fj(string1)39 b Fs(==)30
+b Fj(string2)630 1711 y Ft(T)-8 b(rue)33 b(if)h(the)g(strings)f(are)h
+(equal.)51 b(`)p Fs(=)p Ft(')34 b(ma)m(y)g(b)s(e)f(used)g(in)g(place)i
+(of)e(`)p Fs(==)p Ft(')h(for)f(strict)i Fl(posix)630
+1820 y Ft(compliance.)150 1981 y Fj(string1)k Fs(!=)30
+b Fj(string2)630 2091 y Ft(T)-8 b(rue)30 b(if)g(the)h(strings)f(are)h
+(not)f(equal.)150 2252 y Fj(string1)39 b Fs(<)30 b Fj(string2)630
+2362 y Ft(T)-8 b(rue)30 b(if)g Fq(string1)38 b Ft(sorts)31
+b(b)s(efore)f Fq(string2)38 b Ft(lexicographically)33
+b(in)d(the)h(curren)m(t)f(lo)s(cale.)150 2523 y Fj(string1)39
+b Fs(>)30 b Fj(string2)630 2632 y Ft(T)-8 b(rue)30 b(if)g
+Fq(string1)38 b Ft(sorts)31 b(after)g Fq(string2)38 b
+Ft(lexicographically)33 b(in)d(the)g(curren)m(t)h(lo)s(cale.)150
+2794 y Fj(arg1)40 b Fs(OP)29 b Fj(arg2)630 2903 y Fs(OP)k
+Ft(is)h(one)g(of)h(`)p Fs(-eq)p Ft(',)f(`)p Fs(-ne)p
+Ft(',)h(`)p Fs(-lt)p Ft(',)g(`)p Fs(-le)p Ft(',)f(`)p
 Fs(-gt)p Ft(',)h(or)f(`)p Fs(-ge)p Ft('.)51 b(These)34
-b(arithmetic)f(binary)630 3013 y(op)s(erators)j(return)e(true)i(if)e
-Fq(arg1)44 b Ft(is)35 b(equal)g(to,)j(not)e(equal)f(to,)j(less)d(than,)
-i(less)e(than)g(or)630 3122 y(equal)28 b(to,)h(greater)h(than,)e(or)g
-(greater)i(than)d(or)i(equal)e(to)i Fq(arg2)p Ft(,)h(resp)s(ectiv)m
-(ely)-8 b(.)40 b Fq(Arg1)c Ft(and)630 3232 y Fq(arg2)j
-Ft(ma)m(y)30 b(b)s(e)g(p)s(ositiv)m(e)g(or)g(negativ)m(e)i(in)m
+b(arithmetic)h(binary)630 3013 y(op)s(erators)h(return)e(true)i(if)f
+Fq(arg1)44 b Ft(is)36 b(equal)g(to,)i(not)e(equal)g(to,)i(less)e(than,)
+h(less)f(than)f(or)630 3122 y(equal)29 b(to,)g(greater)h(than,)e(or)g
+(greater)i(than)d(or)i(equal)f(to)h Fq(arg2)p Ft(,)h(resp)s(ectiv)m
+(ely)-8 b(.)42 b Fq(Arg1)36 b Ft(and)630 3232 y Fq(arg2)j
+Ft(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 3494 y Fr(6.5)68 b(Shell)45 b(Arithmetic)275
-3740 y Ft(The)34 b(shell)e(allo)m(ws)i(arithmetic)g(expressions)g(to)h
-(b)s(e)f(ev)-5 b(aluated,)36 b(as)f(one)g(of)g(the)f(shell)f
-(expansions)150 3849 y(or)d(b)m(y)h(the)f Fs(let)g Ft(and)f(the)i(`)p
-Fs(-i)p Ft(')f(option)g(to)h(the)g Fs(declare)d Ft(builtins.)275
-3985 y(Ev)-5 b(aluation)25 b(is)h(done)g(in)f(\014xed-width)g(in)m
-(tegers)i(with)e(no)i(c)m(hec)m(k)h(for)e(o)m(v)m(er\015o)m(w,)j
-(though)d(division)e(b)m(y)150 4095 y(0)j(is)f(trapp)s(ed)g(and)h
-(\015agged)g(as)h(an)f(error.)39 b(The)26 b(op)s(erators)h(and)g(their)
-f(precedence,)i(asso)s(ciativit)m(y)-8 b(,)29 b(and)150
-4205 y(v)-5 b(alues)34 b(are)i(the)f(same)g(as)h(in)d(the)i(C)g
-(language.)55 b(The)35 b(follo)m(wing)e(list)h(of)h(op)s(erators)g(is)f
-(group)s(ed)g(in)m(to)150 4314 y(lev)m(els)25 b(of)h(equal-precedence)h
-(op)s(erators.)39 b(The)25 b(lev)m(els)h(are)g(listed)f(in)f(order)i
-(of)g(decreasing)f(precedence.)150 4476 y Fj(id)11 b
-Fs(++)29 b Fj(id)p Fs(--)630 4586 y Ft(v)-5 b(ariable)29
-b(p)s(ost-incremen)m(t)h(and)g(p)s(ost-decremen)m(t)150
-4747 y Fs(++)p Fj(id)40 b Fs(--)p Fj(id)630 4857 y Ft(v)-5
-b(ariable)29 b(pre-incremen)m(t)h(and)g(pre-decremen)m(t)150
-5018 y Fs(-)g(+)354 b Ft(unary)29 b(min)m(us)g(and)h(plus)150
-5179 y Fs(!)g(~)354 b Ft(logical)30 b(and)g(bit)m(wise)f(negation)150
-5340 y Fs(**)384 b Ft(exp)s(onen)m(tiation)p eop
+3740 y Ft(The)34 b(shell)g(allo)m(ws)i(arithmetic)g(expressions)f(to)g
+(b)s(e)f(ev)-5 b(aluated,)37 b(as)e(one)g(of)g(the)f(shell)h
+(expansions)150 3849 y(or)30 b(b)m(y)h(the)f Fs(let)g
+Ft(and)f(the)i(`)p Fs(-i)p Ft(')f(option)h(to)g(the)g
+Fs(declare)d Ft(builtins.)275 3985 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
+4095 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 4205 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 4314 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
+4476 y Fj(id)11 b Fs(++)29 b Fj(id)p Fs(--)630 4586 y
+Ft(v)-5 b(ariable)31 b(p)s(ost-incremen)m(t)g(and)f(p)s(ost-decremen)m
+(t)150 4747 y Fs(++)p Fj(id)40 b Fs(--)p Fj(id)630 4857
+y Ft(v)-5 b(ariable)31 b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150
+5018 y Fs(-)g(+)354 b Ft(unary)29 b(min)m(us)h(and)g(plus)150
+5179 y Fs(!)g(~)354 b Ft(logical)33 b(and)d(bit)m(wise)h(negation)150
+5340 y Fs(**)384 b Ft(exp)s(onen)m(tiation)p eop end
 %%Page: 71 77
-71 76 bop 150 -116 a Ft(Chapter)30 b(6:)41 b(Bash)30
-b(F)-8 b(eatures)2484 b(71)150 299 y Fs(*)30 b(/)g(\045)276
-b Ft(m)m(ultiplication,)28 b(division,)f(remainder)150
-464 y Fs(+)j(-)354 b Ft(addition,)29 b(subtraction)150
-630 y Fs(<<)h(>>)258 b Ft(left)30 b(and)g(righ)m(t)g(bit)m(wise)f
-(shifts)150 795 y Fs(<=)h(>=)g(<)g(>)102 b Ft(comparison)150
-961 y Fs(==)30 b(!=)258 b Ft(equalit)m(y)30 b(and)g(inequalit)m(y)150
-1126 y Fs(&)432 b Ft(bit)m(wise)29 b(AND)150 1292 y Fs(^)432
-b Ft(bit)m(wise)29 b(exclusiv)m(e)h(OR)150 1458 y Fs(|)432
-b Ft(bit)m(wise)29 b(OR)150 1623 y Fs(&&)384 b Ft(logical)30
-b(AND)150 1789 y Fs(||)384 b Ft(logical)30 b(OR)150 1954
-y Fs(expr)f(?)h(expr)f(:)h(expr)630 2064 y Ft(conditional)f(op)s
-(erator)150 2229 y Fs(=)h(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g
+TeXDict begin 71 76 bop 150 -116 a Ft(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(71)150 299 y Fs(*)30
+b(/)g(\045)276 b Ft(m)m(ultiplication,)33 b(division,)d(remainder)150
+464 y Fs(+)g(-)354 b Ft(addition,)31 b(subtraction)150
+630 y Fs(<<)f(>>)258 b Ft(left)31 b(and)f(righ)m(t)h(bit)m(wise)g
+(shifts)150 795 y Fs(<=)f(>=)g(<)g(>)102 b Ft(comparison)150
+961 y Fs(==)30 b(!=)258 b Ft(equalit)m(y)32 b(and)e(inequalit)m(y)150
+1126 y Fs(&)432 b Ft(bit)m(wise)31 b(AND)150 1292 y Fs(^)432
+b Ft(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 1458 y Fs(|)432
+b Ft(bit)m(wise)31 b(OR)150 1623 y Fs(&&)384 b Ft(logical)33
+b(AND)150 1789 y Fs(||)384 b Ft(logical)33 b(OR)150 1954
+y Fs(expr)c(?)h(expr)f(:)h(expr)630 2064 y Ft(conditional)i(op)s
+(erator)150 2229 y Fs(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g
 (^=)f(|=)630 2339 y Ft(assignmen)m(t)150 2504 y Fs(expr1)g(,)h(expr2)
-630 2614 y Ft(comma)275 2782 y(Shell)36 b(v)-5 b(ariables)37
-b(are)i(allo)m(w)m(ed)g(as)g(op)s(erands;)i(parameter)e(expansion)f(is)
-f(p)s(erformed)h(b)s(efore)g(the)150 2892 y(expression)f(is)g(ev)-5
-b(aluated.)65 b(Within)36 b(an)j(expression,)g(shell)d(v)-5
-b(ariables)37 b(ma)m(y)i(also)f(b)s(e)g(referenced)g(b)m(y)150
-3002 y(name)31 b(without)e(using)g(the)i(parameter)g(expansion)e(syn)m
-(tax.)42 b(A)31 b(shell)d(v)-5 b(ariable)30 b(that)h(is)e(n)m(ull)g(or)
-h(unset)150 3111 y(ev)-5 b(aluates)40 b(to)g(0)g(when)e(referenced)h(b)
-m(y)g(name)h(without)e(using)g(the)h(parameter)h(expansion)e(syn)m
-(tax.)150 3221 y(The)d(v)-5 b(alue)36 b(of)g(a)h(v)-5
-b(ariable)34 b(is)h(ev)-5 b(aluated)37 b(as)f(an)g(arithmetic)f
-(expression)g(when)g(it)g(is)g(referenced,)j(or)150 3330
-y(when)31 b(a)i(v)-5 b(ariable)31 b(whic)m(h)g(has)h(b)s(een)f(giv)m
-(en)i(the)f Fq(in)m(teger)39 b Ft(attribute)32 b(using)f(`)p
-Fs(declare)e(-i)p Ft(')i(is)h(assigned)150 3440 y(a)37
-b(v)-5 b(alue.)57 b(A)36 b(n)m(ull)e(v)-5 b(alue)36 b(ev)-5
-b(aluates)37 b(to)g(0.)58 b(A)36 b(shell)f(v)-5 b(ariable)34
-b(need)i(not)h(ha)m(v)m(e)g(its)f(in)m(teger)g(attribute)150
-3550 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)f(an)h(expression.)275
-3690 y(Constan)m(ts)41 b(with)f(a)i(leading)d(0)j(are)g(in)m(terpreted)
-e(as)h(o)s(ctal)h(n)m(um)m(b)s(ers.)72 b(A)41 b(leading)f(`)p
-Fs(0x)p Ft(')h(or)g(`)p Fs(0X)p Ft(')150 3800 y(denotes)31
-b(hexadecimal.)41 b(Otherwise,)30 b(n)m(um)m(b)s(ers)f(tak)m(e)k(the)e
+630 2614 y Ft(comma)275 2782 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 2892 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
+3002 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 3111 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 3221 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 3330
+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 Fq(in)m(teger)40 b Ft(attribute)33 b(using)f(`)p
+Fs(declare)d(-i)p Ft(')i(is)i(assigned)150 3440 y(a)k(v)-5
+b(alue.)58 b(A)36 b(n)m(ull)g(v)-5 b(alue)37 b(ev)-5
+b(aluates)38 b(to)f(0.)58 b(A)36 b(shell)h(v)-5 b(ariable)36
+b(need)g(not)h(ha)m(v)m(e)g(its)g(in)m(teger)g(attribute)150
+3550 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g(expression.)275
+3690 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
+Fs(0x)p Ft(')f(or)g(`)p Fs(0X)p Ft(')150 3800 y(denotes)31
+b(hexadecimal.)43 b(Otherwise,)31 b(n)m(um)m(b)s(ers)e(tak)m(e)k(the)e
 (form)f([)p Fq(base)5 b Fs(#)p Ft(])p Fq(n)p Ft(,)31
-b(where)f Fq(base)36 b Ft(is)30 b(a)h(decimal)150 3909
+b(where)f Fq(base)36 b Ft(is)31 b(a)g(decimal)150 3909
 y(n)m(um)m(b)s(er)26 b(b)s(et)m(w)m(een)i(2)f(and)g(64)h(represen)m
-(ting)f(the)g(arithmetic)f(base,)j(and)d Fq(n)h Ft(is)f(a)i(n)m(um)m(b)
-s(er)e(in)g(that)i(base.)150 4019 y(If)39 b Fq(base)5
-b Fs(#)40 b Ft(is)f(omitted,)j(then)e(base)g(10)g(is)f(used.)68
-b(The)39 b(digits)g(greater)i(than)e(9)h(are)g(represen)m(ted)g(b)m(y)
-150 4129 y(the)34 b(lo)m(w)m(ercase)g(letters,)h(the)e(upp)s(ercase)g
-(letters,)h(`)p Fs(@)p Ft(',)h(and)e(`)p Fs(_)p Ft(',)h(in)e(that)i
-(order.)50 b(If)32 b Fq(base)39 b Ft(is)33 b(less)f(than)150
-4238 y(or)38 b(equal)f(to)i(36,)h(lo)m(w)m(ercase)g(and)d(upp)s(ercase)
-g(letters)h(ma)m(y)g(b)s(e)f(used)g(in)m(terc)m(hangably)g(to)i
+(ting)g(the)f(arithmetic)h(base,)h(and)d Fq(n)h Ft(is)g(a)h(n)m(um)m(b)
+s(er)e(in)h(that)h(base.)150 4019 y(If)39 b Fq(base)5
+b Fs(#)40 b Ft(is)g(omitted,)j(then)d(base)g(10)g(is)g(used.)68
+b(The)39 b(digits)i(greater)g(than)e(9)h(are)g(represen)m(ted)g(b)m(y)
+150 4129 y(the)34 b(lo)m(w)m(ercase)h(letters,)h(the)d(upp)s(ercase)g
+(letters,)i(`)p Fs(@)p Ft(',)g(and)e(`)p Fs(_)p Ft(',)h(in)f(that)h
+(order.)50 b(If)32 b Fq(base)39 b Ft(is)34 b(less)f(than)150
+4238 y(or)38 b(equal)g(to)h(36,)h(lo)m(w)m(ercase)h(and)c(upp)s(ercase)
+g(letters)i(ma)m(y)f(b)s(e)f(used)g(in)m(terc)m(hangably)i(to)g
 (represen)m(t)150 4348 y(n)m(um)m(b)s(ers)29 b(b)s(et)m(w)m(een)i(10)g
-(and)f(35.)275 4488 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)45
-b(in)f(order)g(of)h(precedence.)85 b(Sub-expressions)43
-b(in)g(paren)m(theses)j(are)150 4598 y(ev)-5 b(aluated)31
-b(\014rst)e(and)h(ma)m(y)h(o)m(v)m(erride)f(the)h(precedence)g(rules)e
+(and)f(35.)275 4488 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 4598 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 4871 y Fr(6.6)68 b(Aliases)275 5121
-y Fq(Aliases)32 b Ft(allo)m(w)d(a)i(string)d(to)j(b)s(e)e(substituted)f
-(for)i(a)g(w)m(ord)f(when)g(it)g(is)g(used)g(as)h(the)g(\014rst)f(w)m
-(ord)h(of)g(a)150 5230 y(simple)g(command.)45 b(The)31
-b(shell)g(main)m(tains)f(a)j(list)d(of)i(aliases)g(that)g(ma)m(y)h(b)s
-(e)e(set)h(and)g(unset)f(with)g(the)150 5340 y Fs(alias)e
-Ft(and)h Fs(unalias)e Ft(builtin)f(commands.)p eop
+y Fq(Aliases)34 b Ft(allo)m(w)d(a)g(string)e(to)i(b)s(e)e(substituted)g
+(for)h(a)g(w)m(ord)f(when)g(it)h(is)g(used)f(as)h(the)g(\014rst)f(w)m
+(ord)h(of)g(a)150 5230 y(simple)i(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 5340 y Fs(alias)d
+Ft(and)h Fs(unalias)e Ft(builtin)i(commands.)p eop end
 %%Page: 72 78
-72 77 bop 150 -116 a Ft(72)2572 b(Bash)31 b(Reference)g(Man)m(ual)275
-299 y(The)e(\014rst)f(w)m(ord)i(of)f(eac)m(h)i(simple)d(command,)i(if)e
-(unquoted,)h(is)g(c)m(hec)m(k)m(ed)i(to)g(see)f(if)f(it)g(has)g(an)g
-(alias.)150 408 y(If)24 b(so,)i(that)g(w)m(ord)e(is)g(replaced)g(b)m(y)
-g(the)h(text)h(of)e(the)h(alias.)38 b(The)24 b(c)m(haracters)i(`)p
-Fs(/)p Ft(',)h(`)p Fs($)p Ft(',)f(`)p Fs(`)p Ft(',)g(`)p
-Fs(=)p Ft(')f(and)f(an)m(y)h(of)150 518 y(the)e(shell)e(metac)m
-(haracters)k(or)e(quoting)f(c)m(haracters)i(listed)e(ab)s(o)m(v)m(e)i
-(ma)m(y)f(not)g(app)s(ear)f(in)g(an)h(alias)f(name.)150
-628 y(The)g(replacemen)m(t)g(text)h(ma)m(y)g(con)m(tain)g(an)m(y)f(v)-5
-b(alid)21 b(shell)f(input,)i(including)d(shell)h(metac)m(haracters.)40
-b(The)150 737 y(\014rst)35 b(w)m(ord)g(of)h(the)g(replacemen)m(t)h
-(text)f(is)f(tested)i(for)e(aliases,)i(but)e(a)h(w)m(ord)g(that)g(is)f
-(iden)m(tical)g(to)h(an)150 847 y(alias)30 b(b)s(eing)g(expanded)g(is)g
-(not)h(expanded)f(a)h(second)g(time.)42 b(This)29 b(means)i(that)g(one)
-g(ma)m(y)h(alias)e Fs(ls)g Ft(to)150 956 y Fs("ls)f(-F")p
-Ft(,)36 b(for)f(instance,)h(and)e(Bash)h(do)s(es)g(not)g(try)g(to)g
-(recursiv)m(ely)f(expand)g(the)h(replacemen)m(t)h(text.)150
-1066 y(If)31 b(the)h(last)g(c)m(haracter)h(of)f(the)g(alias)f(v)-5
-b(alue)31 b(is)g(a)h(space)g(or)g(tab)g(c)m(haracter,)i(then)d(the)h
-(next)g(command)150 1176 y(w)m(ord)e(follo)m(wing)f(the)h(alias)g(is)f
-(also)i(c)m(hec)m(k)m(ed)h(for)e(alias)g(expansion.)275
-1325 y(Aliases)d(are)h(created)i(and)d(listed)g(with)g(the)h
-Fs(alias)f Ft(command,)h(and)g(remo)m(v)m(ed)h(with)e(the)h
+TeXDict begin 72 77 bop 150 -116 a Ft(72)2572 b(Bash)31
+b(Reference)g(Man)m(ual)275 299 y(The)e(\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 408 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 Fs(/)p Ft(',)h(`)p Fs($)p
+Ft(',)f(`)p Fs(`)p Ft(',)g(`)p Fs(=)p Ft(')f(and)f(an)m(y)h(of)150
+518 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 628 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 737 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 847 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 Fs(ls)e
+Ft(to)150 956 y Fs("ls)f(-F")p Ft(,)36 b(for)f(instance,)i(and)d(Bash)h
+(do)s(es)g(not)g(try)g(to)g(recursiv)m(ely)h(expand)e(the)h(replacemen)
+m(t)i(text.)150 1066 y(If)31 b(the)h(last)h(c)m(haracter)g(of)f(the)g
+(alias)h(v)-5 b(alue)32 b(is)g(a)g(space)g(or)g(tab)g(c)m(haracter,)i
+(then)d(the)h(next)g(command)150 1176 y(w)m(ord)e(follo)m(wing)i(the)e
+(alias)i(is)e(also)i(c)m(hec)m(k)m(ed)g(for)e(alias)i(expansion.)275
+1325 y(Aliases)d(are)f(created)i(and)d(listed)i(with)f(the)g
+Fs(alias)f Ft(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g
 Fs(unalias)150 1434 y Ft(command.)275 1583 y(There)44
-b(is)g(no)h(mec)m(hanism)f(for)g(using)g(argumen)m(ts)h(in)e(the)i
-(replacemen)m(t)h(text,)j(as)d(in)d Fs(csh)p Ft(.)83
-b(If)150 1693 y(argumen)m(ts)37 b(are)h(needed,)g(a)g(shell)d(function)
-g(should)g(b)s(e)i(used)f(\(see)i(Section)f(3.3)h([Shell)d(F)-8
-b(unctions],)150 1802 y(page)31 b(13\).)275 1951 y(Aliases)g(are)j(not)
-e(expanded)g(when)g(the)h(shell)e(is)h(not)h(in)m(teractiv)m(e,)h
-(unless)d(the)i Fs(expand_aliases)150 2061 y Ft(shell)c(option)g(is)h
-(set)h(using)e Fs(shopt)g Ft(\(see)i(Section)f(4.2)i([Bash)e
-(Builtins],)e(page)k(39\).)275 2210 y(The)38 b(rules)g(concerning)h
-(the)g(de\014nition)e(and)i(use)g(of)g(aliases)g(are)g(somewhat)h
-(confusing.)66 b(Bash)150 2320 y(alw)m(a)m(ys)41 b(reads)g(at)h(least)f
-(one)g(complete)h(line)d(of)i(input)e(b)s(efore)i(executing)g(an)m(y)g
-(of)g(the)g(commands)150 2429 y(on)h(that)h(line.)75
-b(Aliases)42 b(are)g(expanded)g(when)f(a)i(command)f(is)f(read,)46
-b(not)c(when)g(it)f(is)h(executed.)150 2539 y(Therefore,)g(an)e(alias)f
-(de\014nition)e(app)s(earing)i(on)g(the)h(same)h(line)d(as)i(another)g
-(command)f(do)s(es)h(not)150 2648 y(tak)m(e)31 b(e\013ect)f(un)m(til)e
-(the)h(next)g(line)f(of)h(input)e(is)h(read.)41 b(The)28
-b(commands)h(follo)m(wing)f(the)h(alias)f(de\014nition)150
-2758 y(on)f(that)h(line)d(are)j(not)f(a\013ected)i(b)m(y)e(the)g(new)g
-(alias.)39 b(This)25 b(b)s(eha)m(vior)h(is)g(also)h(an)g(issue)f(when)g
-(functions)150 2868 y(are)d(executed.)39 b(Aliases)22
-b(are)h(expanded)f(when)f(a)i(function)f(de\014nition)e(is)i(read,)i
-(not)f(when)e(the)i(function)150 2977 y(is)h(executed,)k(b)s(ecause)d
-(a)h(function)e(de\014nition)e(is)j(itself)f(a)h(comp)s(ound)f
-(command.)39 b(As)25 b(a)h(consequence,)150 3087 y(aliases)34
-b(de\014ned)f(in)g(a)h(function)f(are)i(not)f(a)m(v)-5
-b(ailable)34 b(un)m(til)e(after)j(that)g(function)e(is)g(executed.)53
-b(T)-8 b(o)35 b(b)s(e)150 3196 y(safe,)41 b(alw)m(a)m(ys)e(put)e(alias)
-h(de\014nitions)e(on)i(a)h(separate)g(line,)g(and)f(do)g(not)g(use)g
-Fs(alias)f Ft(in)g(comp)s(ound)150 3306 y(commands.)275
-3455 y(F)-8 b(or)31 b(almost)f(ev)m(ery)h(purp)s(ose,)e(shell)g
-(functions)g(are)h(preferred)g(o)m(v)m(er)h(aliases.)150
-3749 y Fr(6.7)68 b(Arra)l(ys)275 4007 y Ft(Bash)33 b(pro)m(vides)f
-(one-dimensional)f(arra)m(y)i(v)-5 b(ariables.)48 b(An)m(y)33
-b(v)-5 b(ariable)32 b(ma)m(y)h(b)s(e)g(used)f(as)h(an)g(arra)m(y;)150
-4117 y(the)c Fs(declare)d Ft(builtin)f(will)h(explicitly)g(declare)j
-(an)f(arra)m(y)-8 b(.)41 b(There)28 b(is)g(no)g(maxim)m(um)g(limit)e
-(on)i(the)h(size)150 4227 y(of)d(an)g(arra)m(y)-8 b(,)27
-b(nor)f(an)m(y)g(requiremen)m(t)f(that)h(mem)m(b)s(ers)f(b)s(e)g
-(indexed)f(or)i(assigned)f(con)m(tiguously)-8 b(.)39
+b(is)h(no)g(mec)m(hanism)g(for)f(using)h(argumen)m(ts)g(in)f(the)h
+(replacemen)m(t)i(text,)i(as)d(in)e Fs(csh)p Ft(.)83
+b(If)150 1693 y(argumen)m(ts)37 b(are)h(needed,)g(a)g(shell)f(function)
+f(should)g(b)s(e)h(used)f(\(see)i(Section)g(3.3)g([Shell)f(F)-8
+b(unctions],)150 1802 y(page)31 b(13\).)275 1951 y(Aliases)i(are)h(not)
+e(expanded)g(when)g(the)h(shell)g(is)g(not)g(in)m(teractiv)m(e,)j
+(unless)c(the)h Fs(expand_aliases)150 2061 y Ft(shell)e(option)f(is)h
+(set)g(using)f Fs(shopt)f Ft(\(see)i(Section)g(4.2)h([Bash)e
+(Builtins],)h(page)h(39\).)275 2210 y(The)38 b(rules)h(concerning)h
+(the)f(de\014nition)g(and)g(use)g(of)g(aliases)i(are)e(somewhat)h
+(confusing.)67 b(Bash)150 2320 y(alw)m(a)m(ys)42 b(reads)f(at)h(least)g
+(one)f(complete)i(line)e(of)g(input)f(b)s(efore)h(executing)h(an)m(y)f
+(of)g(the)g(commands)150 2429 y(on)h(that)h(line.)77
+b(Aliases)44 b(are)e(expanded)g(when)f(a)i(command)f(is)g(read,)k(not)c
+(when)g(it)g(is)h(executed.)150 2539 y(Therefore,)f(an)e(alias)h
+(de\014nition)e(app)s(earing)h(on)f(the)h(same)h(line)f(as)g(another)g
+(command)f(do)s(es)h(not)150 2648 y(tak)m(e)31 b(e\013ect)f(un)m(til)g
+(the)f(next)g(line)h(of)f(input)f(is)h(read.)41 b(The)28
+b(commands)h(follo)m(wing)i(the)e(alias)h(de\014nition)150
+2758 y(on)d(that)h(line)f(are)h(not)f(a\013ected)i(b)m(y)e(the)g(new)g
+(alias.)41 b(This)26 b(b)s(eha)m(vior)h(is)g(also)h(an)f(issue)g(when)f
+(functions)150 2868 y(are)d(executed.)39 b(Aliases)24
+b(are)f(expanded)f(when)f(a)i(function)g(de\014nition)f(is)h(read,)h
+(not)f(when)e(the)i(function)150 2977 y(is)i(executed,)j(b)s(ecause)d
+(a)h(function)f(de\014nition)f(is)i(itself)g(a)f(comp)s(ound)f
+(command.)39 b(As)25 b(a)h(consequence,)150 3087 y(aliases)36
+b(de\014ned)d(in)h(a)g(function)g(are)h(not)f(a)m(v)-5
+b(ailable)37 b(un)m(til)d(after)h(that)g(function)f(is)g(executed.)53
+b(T)-8 b(o)35 b(b)s(e)150 3196 y(safe,)41 b(alw)m(a)m(ys)f(put)d(alias)
+j(de\014nitions)e(on)g(a)h(separate)g(line,)i(and)d(do)g(not)g(use)g
+Fs(alias)f Ft(in)h(comp)s(ound)150 3306 y(commands.)275
+3455 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
+3749 y Fr(6.7)68 b(Arra)l(ys)275 4007 y Ft(Bash)33 b(pro)m(vides)g
+(one-dimensional)h(arra)m(y)f(v)-5 b(ariables.)50 b(An)m(y)33
+b(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)g(used)f(as)h(an)g(arra)m(y;)150
+4117 y(the)c Fs(declare)d Ft(builtin)i(will)h(explicitly)h(declare)g
+(an)e(arra)m(y)-8 b(.)41 b(There)28 b(is)h(no)f(maxim)m(um)h(limit)g
+(on)f(the)h(size)150 4227 y(of)d(an)g(arra)m(y)-8 b(,)27
+b(nor)f(an)m(y)g(requiremen)m(t)g(that)g(mem)m(b)s(ers)f(b)s(e)g
+(indexed)g(or)h(assigned)g(con)m(tiguously)-8 b(.)41
 b(Arra)m(ys)150 4336 y(are)31 b(zero-based.)275 4485
-y(An)f(arra)m(y)g(is)g(created)h(automatically)f(if)g(an)m(y)h(v)-5
-b(ariable)29 b(is)g(assigned)h(to)h(using)e(the)h(syn)m(tax)390
+y(An)f(arra)m(y)g(is)h(created)g(automatically)i(if)e(an)m(y)g(v)-5
+b(ariable)31 b(is)f(assigned)h(to)g(using)f(the)g(syn)m(tax)390
 4634 y Fs(name[)p Fj(subscript)11 b Fs(]=)p Fj(value)150
-4783 y Ft(The)25 b Fq(subscript)f Ft(is)h(treated)h(as)f(an)g
-(arithmetic)f(expression)g(that)i(m)m(ust)f(ev)-5 b(aluate)26
-b(to)f(a)h(n)m(um)m(b)s(er)e(greater)150 4893 y(than)30
-b(or)g(equal)g(to)h(zero.)42 b(T)-8 b(o)31 b(explicitly)d(declare)i(an)
-g(arra)m(y)-8 b(,)32 b(use)390 5042 y Fs(declare)46 b(-a)h
+4783 y Ft(The)25 b Fq(subscript)g Ft(is)h(treated)g(as)f(an)g
+(arithmetic)h(expression)f(that)h(m)m(ust)f(ev)-5 b(aluate)27
+b(to)e(a)h(n)m(um)m(b)s(er)e(greater)150 4893 y(than)30
+b(or)g(equal)h(to)g(zero.)42 b(T)-8 b(o)31 b(explicitly)h(declare)f(an)
+f(arra)m(y)-8 b(,)32 b(use)390 5042 y Fs(declare)46 b(-a)h
 Fj(name)150 5191 y Ft(The)30 b(syn)m(tax)390 5340 y Fs(declare)46
 b(-a)h Fj(name)11 b Fs([)p Fj(subscript)g Fs(])p eop
+end
 %%Page: 73 79
-73 78 bop 150 -116 a Ft(Chapter)30 b(6:)41 b(Bash)30
-b(F)-8 b(eatures)2484 b(73)150 299 y(is)28 b(also)i(accepted;)h(the)f
-Fq(subscript)f Ft(is)f(ignored.)40 b(A)m(ttributes)29
-b(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g(arra)m(y)h(v)-5
-b(ariable)150 408 y(using)39 b(the)i Fs(declare)d Ft(and)i
-Fs(readonly)f Ft(builtins.)67 b(Eac)m(h)42 b(attribute)e(applies)f(to)i
-(all)f(mem)m(b)s(ers)f(of)i(an)150 518 y(arra)m(y)-8
-b(.)275 663 y(Arra)m(ys)30 b(are)h(assigned)e(to)i(using)e(comp)s(ound)
-g(assignmen)m(ts)h(of)h(the)f(form)390 809 y Fs(name=\(value)p
-Fj(1)55 b Fs(...)47 b(value)p Fj(n)11 b Fs(\))150 954
-y Ft(where)37 b(eac)m(h)h Fq(v)-5 b(alue)42 b Ft(is)37
-b(of)g(the)h(form)e Fs([[)p Fj(subscript)11 b Fs(]=])p
-Fq(string)p Ft(.)57 b(If)36 b(the)i(optional)e(subscript)f(is)i(sup-)
-150 1064 y(plied,)42 b(that)g(index)e(is)g(assigned)h(to;)47
-b(otherwise)41 b(the)g(index)f(of)i(the)f(elemen)m(t)h(assigned)e(is)h
-(the)g(last)150 1173 y(index)33 b(assigned)h(to)h(b)m(y)f(the)h
-(statemen)m(t)h(plus)c(one.)54 b(Indexing)32 b(starts)j(at)g(zero.)54
-b(This)33 b(syn)m(tax)i(is)e(also)150 1283 y(accepted)i(b)m(y)f(the)g
-Fs(declare)e Ft(builtin.)47 b(Individual)30 b(arra)m(y)k(elemen)m(ts)g
-(ma)m(y)h(b)s(e)e(assigned)g(to)h(using)f(the)150 1392
-y Fs(name[)p Fq(subscript)r Fs(]=)p Fq(v)-5 b(alue)31
-b Ft(syn)m(tax)g(in)m(tro)s(duced)e(ab)s(o)m(v)m(e.)275
-1538 y(An)m(y)k(elemen)m(t)h(of)g(an)f(arra)m(y)h(ma)m(y)g(b)s(e)f
-(referenced)g(using)f Fs(${name[)p Fq(subscript)r Fs(]})p
-Ft(.)45 b(The)33 b(braces)h(are)150 1647 y(required)27
-b(to)k(a)m(v)m(oid)e(con\015icts)g(with)f(the)i(shell's)d(\014lename)i
-(expansion)f(op)s(erators.)41 b(If)28 b(the)i Fq(subscript)f
-Ft(is)150 1757 y(`)p Fs(@)p Ft(')g(or)h(`)p Fs(*)p Ft(',)f(the)h(w)m
-(ord)f(expands)f(to)i(all)e(mem)m(b)s(ers)g(of)i(the)f(arra)m(y)h
-Fq(name)p Ft(.)40 b(These)29 b(subscripts)e(di\013er)h(only)150
-1866 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)e(double)h
-(quotes.)60 b(If)36 b(the)h(w)m(ord)f(is)f(double-quoted,)j
-Fs(${name[*]})150 1976 y Ft(expands)20 b(to)h(a)g(single)e(w)m(ord)h
-(with)g(the)h(v)-5 b(alue)20 b(of)g(eac)m(h)i(arra)m(y)f(mem)m(b)s(er)f
+TeXDict begin 73 78 bop 150 -116 a Ft(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(73)150 299 y(is)29
+b(also)i(accepted;)g(the)f Fq(subscript)g Ft(is)f(ignored.)41
+b(A)m(ttributes)30 b(ma)m(y)g(b)s(e)e(sp)s(eci\014ed)h(for)g(an)g(arra)
+m(y)h(v)-5 b(ariable)150 408 y(using)40 b(the)h Fs(declare)d
+Ft(and)i Fs(readonly)f Ft(builtins.)70 b(Eac)m(h)42 b(attribute)f
+(applies)g(to)g(all)h(mem)m(b)s(ers)d(of)i(an)150 518
+y(arra)m(y)-8 b(.)275 663 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
+809 y Fs(name=\(value)p Fj(1)55 b Fs(...)47 b(value)p
+Fj(n)11 b Fs(\))150 954 y Ft(where)37 b(eac)m(h)h Fq(v)-5
+b(alue)43 b Ft(is)38 b(of)f(the)h(form)e Fs([[)p Fj(subscript)11
+b Fs(]=])p Fq(string)p Ft(.)58 b(If)36 b(the)i(optional)g(subscript)e
+(is)i(sup-)150 1064 y(plied,)44 b(that)e(index)f(is)g(assigned)h(to;)47
+b(otherwise)42 b(the)f(index)g(of)h(the)f(elemen)m(t)i(assigned)e(is)h
+(the)f(last)150 1173 y(index)34 b(assigned)h(to)g(b)m(y)f(the)h
+(statemen)m(t)h(plus)d(one.)54 b(Indexing)33 b(starts)i(at)g(zero.)54
+b(This)34 b(syn)m(tax)h(is)f(also)150 1283 y(accepted)h(b)m(y)f(the)g
+Fs(declare)e Ft(builtin.)50 b(Individual)33 b(arra)m(y)h(elemen)m(ts)h
+(ma)m(y)g(b)s(e)e(assigned)h(to)g(using)g(the)150 1392
+y Fs(name[)p Fq(subscript)r Fs(]=)p Fq(v)-5 b(alue)33
+b Ft(syn)m(tax)e(in)m(tro)s(duced)f(ab)s(o)m(v)m(e.)275
+1538 y(An)m(y)j(elemen)m(t)i(of)f(an)f(arra)m(y)h(ma)m(y)g(b)s(e)f
+(referenced)g(using)g Fs(${name[)p Fq(subscript)r Fs(]})p
+Ft(.)46 b(The)33 b(braces)h(are)150 1647 y(required)28
+b(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 Fq(subscript)g
+Ft(is)150 1757 y(`)p Fs(@)p Ft(')f(or)h(`)p Fs(*)p Ft(',)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
+Fq(name)p Ft(.)40 b(These)29 b(subscripts)f(di\013er)h(only)150
+1866 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
+Fs(${name[*]})150 1976 y Ft(expands)20 b(to)h(a)g(single)g(w)m(ord)f
+(with)h(the)g(v)-5 b(alue)21 b(of)f(eac)m(h)i(arra)m(y)f(mem)m(b)s(er)f
 (separated)h(b)m(y)g(the)f(\014rst)g(c)m(haracter)150
-2086 y(of)38 b(the)g Fs(IFS)f Ft(v)-5 b(ariable,)39 b(and)e
-Fs(${name[@]})e Ft(expands)i(eac)m(h)i(elemen)m(t)f(of)g
+2086 y(of)38 b(the)g Fs(IFS)f Ft(v)-5 b(ariable,)41 b(and)c
+Fs(${name[@]})e Ft(expands)i(eac)m(h)i(elemen)m(t)g(of)f
 Fq(name)43 b Ft(to)c(a)f(separate)h(w)m(ord.)150 2195
 y(When)33 b(there)g(are)g(no)g(arra)m(y)g(mem)m(b)s(ers,)g
-Fs(${name[@]})d Ft(expands)i(to)i(nothing.)47 b(This)31
-b(is)h(analogous)h(to)150 2305 y(the)i(expansion)f(of)i(the)f(sp)s
-(ecial)f(parameters)h(`)p Fs(@)p Ft(')h(and)e(`)p Fs(*)p
-Ft('.)55 b Fs(${#name[)p Fq(subscript)r Fs(]})31 b Ft(expands)j(to)i
-(the)150 2414 y(length)k(of)g Fs(${name[)p Fq(subscript)r
-Fs(]})p Ft(.)66 b(If)40 b Fq(subscript)g Ft(is)g(`)p
-Fs(@)p Ft(')g(or)h(`)p Fs(*)p Ft(',)i(the)e(expansion)e(is)g(the)i(n)m
-(um)m(b)s(er)e(of)150 2524 y(elemen)m(ts)e(in)e(the)i(arra)m(y)-8
-b(.)60 b(Referencing)36 b(an)g(arra)m(y)i(v)-5 b(ariable)35
-b(without)g(a)i(subscript)e(is)g(equiv)-5 b(alen)m(t)36
-b(to)150 2634 y(referencing)30 b(elemen)m(t)g(zero.)275
-2779 y(The)i Fs(unset)g Ft(builtin)e(is)i(used)h(to)h(destro)m(y)g
+Fs(${name[@]})d Ft(expands)i(to)i(nothing.)48 b(This)32
+b(is)h(analogous)h(to)150 2305 y(the)h(expansion)g(of)h(the)f(sp)s
+(ecial)h(parameters)f(`)p Fs(@)p Ft(')h(and)e(`)p Fs(*)p
+Ft('.)55 b Fs(${#name[)p Fq(subscript)r Fs(]})32 b Ft(expands)i(to)i
+(the)150 2414 y(length)41 b(of)f Fs(${name[)p Fq(subscript)r
+Fs(]})p Ft(.)67 b(If)40 b Fq(subscript)h Ft(is)g(`)p
+Fs(@)p Ft(')f(or)h(`)p Fs(*)p Ft(',)i(the)e(expansion)f(is)g(the)h(n)m
+(um)m(b)s(er)e(of)150 2524 y(elemen)m(ts)f(in)e(the)h(arra)m(y)-8
+b(.)60 b(Referencing)37 b(an)f(arra)m(y)i(v)-5 b(ariable)37
+b(without)f(a)h(subscript)f(is)g(equiv)-5 b(alen)m(t)38
+b(to)150 2634 y(referencing)31 b(elemen)m(t)g(zero.)275
+2779 y(The)h Fs(unset)g Ft(builtin)h(is)g(used)g(to)h(destro)m(y)g
 (arra)m(ys.)50 b Fs(unset)31 b Fq(name)5 b Ft([)p Fq(subscript)r
-Ft(])32 b(destro)m(ys)i(the)f(arra)m(y)150 2888 y(elemen)m(t)c(at)h
-(index)d Fq(subscript)p Ft(.)38 b Fs(unset)27 b Fq(name)p
-Ft(,)j(where)e Fq(name)34 b Ft(is)27 b(an)i(arra)m(y)-8
-b(,)30 b(remo)m(v)m(es)g(the)f(en)m(tire)g(arra)m(y)-8
-b(.)150 2998 y(A)30 b(subscript)f(of)h(`)p Fs(*)p Ft(')h(or)f(`)p
-Fs(@)p Ft(')h(also)f(remo)m(v)m(es)i(the)e(en)m(tire)h(arra)m(y)-8
+Ft(])33 b(destro)m(ys)h(the)f(arra)m(y)150 2888 y(elemen)m(t)d(at)g
+(index)e Fq(subscript)p Ft(.)39 b Fs(unset)27 b Fq(name)p
+Ft(,)j(where)e Fq(name)34 b Ft(is)28 b(an)h(arra)m(y)-8
+b(,)30 b(remo)m(v)m(es)g(the)f(en)m(tire)h(arra)m(y)-8
+b(.)150 2998 y(A)30 b(subscript)g(of)g(`)p Fs(*)p Ft(')h(or)f(`)p
+Fs(@)p Ft(')h(also)g(remo)m(v)m(es)h(the)e(en)m(tire)i(arra)m(y)-8
 b(.)275 3143 y(The)22 b Fs(declare)p Ft(,)h Fs(local)p
-Ft(,)g(and)g Fs(readonly)e Ft(builtins)e(eac)m(h)25 b(accept)f(a)g(`)p
-Fs(-a)p Ft(')f(option)f(to)i(sp)s(ecify)e(an)h(arra)m(y)-8
-b(.)150 3253 y(The)24 b Fs(read)g Ft(builtin)e(accepts)k(a)f(`)p
-Fs(-a)p Ft(')g(option)g(to)g(assign)g(a)g(list)f(of)h(w)m(ords)f(read)h
+Ft(,)g(and)g Fs(readonly)e Ft(builtins)h(eac)m(h)j(accept)f(a)g(`)p
+Fs(-a)p Ft(')f(option)g(to)h(sp)s(ecify)f(an)g(arra)m(y)-8
+b(.)150 3253 y(The)24 b Fs(read)g Ft(builtin)h(accepts)h(a)f(`)p
+Fs(-a)p Ft(')g(option)h(to)f(assign)h(a)f(list)h(of)f(w)m(ords)f(read)h
 (from)g(the)g(standard)f(input)150 3363 y(to)37 b(an)f(arra)m(y)-8
-b(,)39 b(and)c(can)h(read)g(v)-5 b(alues)36 b(from)f(the)i(standard)e
-(input)f(in)m(to)i(individual)c(arra)m(y)k(elemen)m(ts.)150
-3472 y(The)30 b Fs(set)f Ft(and)h Fs(declare)e Ft(builtins)f(displa)m
-(y)h(arra)m(y)j(v)-5 b(alues)30 b(in)f(a)h(w)m(a)m(y)h(that)g(allo)m
-(ws)f(them)g(to)h(b)s(e)f(reused)150 3582 y(as)h(input.)150
+b(,)39 b(and)c(can)h(read)g(v)-5 b(alues)37 b(from)e(the)i(standard)e
+(input)g(in)m(to)i(individual)f(arra)m(y)g(elemen)m(ts.)150
+3472 y(The)30 b Fs(set)f Ft(and)h Fs(declare)e Ft(builtins)i(displa)m
+(y)g(arra)m(y)h(v)-5 b(alues)31 b(in)f(a)g(w)m(a)m(y)h(that)g(allo)m
+(ws)h(them)e(to)h(b)s(e)f(reused)150 3582 y(as)h(input.)150
 3866 y Fr(6.8)68 b(The)45 b(Directory)g(Stac)l(k)275
-4121 y Ft(The)26 b(directory)f(stac)m(k)j(is)e(a)h(list)e(of)i(recen)m
-(tly-visited)e(directories.)39 b(The)26 b Fs(pushd)f
-Ft(builtin)e(adds)j(direc-)150 4231 y(tories)e(to)g(the)h(stac)m(k)g
-(as)f(it)g(c)m(hanges)g(the)h(curren)m(t)e(directory)-8
-b(,)26 b(and)d(the)h Fs(popd)f Ft(builtin)d(remo)m(v)m(es)26
-b(sp)s(eci\014ed)150 4340 y(directories)h(from)h(the)h(stac)m(k)h(and)d
-(c)m(hanges)j(the)e(curren)m(t)g(directory)g(to)h(the)g(directory)e
-(remo)m(v)m(ed.)41 b(The)150 4450 y Fs(dirs)29 b Ft(builtin)e(displa)m
-(ys)i(the)h(con)m(ten)m(ts)i(of)f(the)f(directory)g(stac)m(k.)275
-4595 y(The)35 b(con)m(ten)m(ts)i(of)f(the)h(directory)e(stac)m(k)i(are)
-f(also)g(visible)e(as)i(the)g(v)-5 b(alue)35 b(of)h(the)g
+4121 y Ft(The)26 b(directory)g(stac)m(k)i(is)f(a)g(list)g(of)g(recen)m
+(tly-visited)h(directories.)41 b(The)26 b Fs(pushd)f
+Ft(builtin)h(adds)g(direc-)150 4231 y(tories)f(to)f(the)h(stac)m(k)g
+(as)f(it)h(c)m(hanges)f(the)h(curren)m(t)e(directory)-8
+b(,)27 b(and)c(the)h Fs(popd)f Ft(builtin)g(remo)m(v)m(es)j(sp)s
+(eci\014ed)150 4340 y(directories)j(from)f(the)h(stac)m(k)h(and)d(c)m
+(hanges)j(the)e(curren)m(t)g(directory)h(to)g(the)g(directory)f(remo)m
+(v)m(ed.)41 b(The)150 4450 y Fs(dirs)29 b Ft(builtin)h(displa)m(ys)h
+(the)f(con)m(ten)m(ts)i(of)f(the)f(directory)h(stac)m(k.)275
+4595 y(The)k(con)m(ten)m(ts)i(of)f(the)h(directory)f(stac)m(k)h(are)f
+(also)h(visible)g(as)f(the)g(v)-5 b(alue)36 b(of)g(the)g
 Fs(DIRSTACK)e Ft(shell)150 4705 y(v)-5 b(ariable.)150
 4951 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150
 5200 y Fs(dirs)870 5340 y(dirs)47 b([+)p Fj(N)57 b Fs(|)48
-b(-)p Fj(N)11 b Fs(])46 b([-clpv])p eop
+b(-)p Fj(N)11 b Fs(])46 b([-clpv])p eop end
 %%Page: 74 80
-74 79 bop 150 -116 a Ft(74)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y(Displa)m(y)i(the)h(list)e(of)i(curren)m(tly)f(remem)m(b)s(ered)g
-(directories.)49 b(Directories)34 b(are)g(added)f(to)630
-408 y(the)28 b(list)f(with)g(the)h Fs(pushd)f Ft(command;)i(the)f
-Fs(popd)f Ft(command)h(remo)m(v)m(es)h(directories)e(from)630
-518 y(the)k(list.)630 670 y Fs(+)p Fj(N)384 b Ft(Displa)m(ys)21
-b(the)h Fq(N)10 b Ft(th)21 b(directory)g(\(coun)m(ting)h(from)f(the)h
-(left)f(of)h(the)g(list)e(prin)m(ted)1110 780 y(b)m(y)30
-b Fs(dirs)f Ft(when)h(in)m(v)m(ok)m(ed)h(without)e(options\),)h
-(starting)g(with)g(zero.)630 932 y Fs(-)p Fj(N)384 b
-Ft(Displa)m(ys)45 b(the)i Fq(N)10 b Ft(th)46 b(directory)g(\(coun)m
-(ting)g(from)g(the)g(righ)m(t)g(of)h(the)f(list)1110
-1042 y(prin)m(ted)24 b(b)m(y)h Fs(dirs)g Ft(when)f(in)m(v)m(ok)m(ed)i
-(without)f(options\),)h(starting)g(with)e(zero.)630 1194
-y Fs(-c)384 b Ft(Clears)30 b(the)g(directory)g(stac)m(k)i(b)m(y)e
-(deleting)f(all)h(of)g(the)h(elemen)m(ts.)630 1347 y
-Fs(-l)384 b Ft(Pro)s(duces)30 b(a)i(longer)f(listing;)f(the)i(default)e
-(listing)g(format)h(uses)g(a)h(tilde)e(to)1110 1456 y(denote)h(the)f
-(home)h(directory)-8 b(.)630 1609 y Fs(-p)384 b Ft(Causes)30
-b Fs(dirs)f Ft(to)i(prin)m(t)e(the)i(directory)f(stac)m(k)i(with)d(one)
-h(en)m(try)h(p)s(er)e(line.)630 1761 y Fs(-v)384 b Ft(Causes)36
-b Fs(dirs)f Ft(to)i(prin)m(t)e(the)h(directory)g(stac)m(k)i(with)d(one)
-i(en)m(try)f(p)s(er)f(line,)1110 1871 y(pre\014xing)29
-b(eac)m(h)i(en)m(try)g(with)e(its)h(index)e(in)i(the)g(stac)m(k.)150
-2023 y Fs(popd)870 2154 y(popd)47 b([+)p Fj(N)57 b Fs(|)48
-b(-)p Fj(N)11 b Fs(])46 b([-n])630 2285 y Ft(Remo)m(v)m(e)26
-b(the)e(top)g(en)m(try)h(from)e(the)h(directory)g(stac)m(k,)j(and)c
-Fs(cd)h Ft(to)h(the)f(new)f(top)i(directory)-8 b(.)630
-2395 y(When)32 b(no)g(argumen)m(ts)h(are)g(giv)m(en,)g
-Fs(popd)e Ft(remo)m(v)m(es)j(the)f(top)f(directory)g(from)g(the)g(stac)
-m(k)630 2504 y(and)f(p)s(erforms)e(a)j Fs(cd)f Ft(to)h(the)f(new)g(top)
-h(directory)-8 b(.)43 b(The)31 b(elemen)m(ts)h(are)f(n)m(um)m(b)s(ered)
-f(from)630 2614 y(0)d(starting)f(at)h(the)g(\014rst)f(directory)g
-(listed)f(with)g Fs(dirs)p Ft(;)i(i.e.,)h Fs(popd)d Ft(is)h(equiv)-5
-b(alen)m(t)26 b(to)h Fs(popd)630 2724 y(+0)p Ft(.)630
-2876 y Fs(+)p Fj(N)384 b Ft(Remo)m(v)m(es)22 b(the)f
-Fq(N)10 b Ft(th)20 b(directory)f(\(coun)m(ting)i(from)f(the)g(left)g
-(of)h(the)f(list)f(prin)m(ted)1110 2986 y(b)m(y)30 b
-Fs(dirs)p Ft(\),)g(starting)g(with)f(zero.)630 3138 y
-Fs(-)p Fj(N)384 b Ft(Remo)m(v)m(es)46 b(the)g Fq(N)10
-b Ft(th)44 b(directory)g(\(coun)m(ting)h(from)g(the)g(righ)m(t)f(of)h
-(the)g(list)1110 3248 y(prin)m(ted)29 b(b)m(y)h Fs(dirs)p
-Ft(\),)g(starting)g(with)f(zero.)630 3400 y Fs(-n)384
-b Ft(Suppresses)27 b(the)j(normal)f(c)m(hange)h(of)g(directory)f(when)f
-(remo)m(ving)i(directo-)1110 3510 y(ries)f(from)h(the)h(stac)m(k,)h(so)
-f(that)g(only)e(the)i(stac)m(k)g(is)f(manipulated.)150
-3684 y Fs(pushd)870 3815 y(pushd)46 b([)p Fj(dir)58 b
-Fs(|)47 b(+)p Fj(N)58 b Fs(|)47 b Fj(-N)11 b Fs(])47
-b([-n])630 3946 y Ft(Sa)m(v)m(e)30 b(the)e(curren)m(t)g(directory)g(on)
-g(the)h(top)f(of)h(the)f(directory)g(stac)m(k)i(and)e(then)g
-Fs(cd)f Ft(to)i Fq(dir)p Ft(.)630 4055 y(With)h(no)g(argumen)m(ts,)h
-Fs(pushd)e Ft(exc)m(hanges)j(the)e(top)h(t)m(w)m(o)h(directories.)630
-4208 y Fs(+)p Fj(N)384 b Ft(Brings)28 b(the)g Fq(N)10
-b Ft(th)29 b(directory)f(\(coun)m(ting)h(from)f(the)g(left)h(of)f(the)h
-(list)e(prin)m(ted)1110 4317 y(b)m(y)34 b Fs(dirs)p Ft(,)g(starting)g
-(with)f(zero\))j(to)f(the)f(top)g(of)h(the)f(list)f(b)m(y)h(rotating)h
-(the)1110 4427 y(stac)m(k.)630 4579 y Fs(-)p Fj(N)384
-b Ft(Brings)22 b(the)h Fq(N)10 b Ft(th)23 b(directory)g(\(coun)m(ting)g
-(from)f(the)i(righ)m(t)e(of)h(the)h(list)d(prin)m(ted)1110
-4689 y(b)m(y)34 b Fs(dirs)p Ft(,)g(starting)g(with)f(zero\))j(to)f(the)
-f(top)g(of)h(the)f(list)f(b)m(y)h(rotating)h(the)1110
-4798 y(stac)m(k.)630 4951 y Fs(-n)384 b Ft(Suppresses)26
-b(the)i(normal)g(c)m(hange)h(of)f(directory)g(when)f(adding)g
-(directories)1110 5060 y(to)k(the)g(stac)m(k,)h(so)e(that)h(only)f(the)
-g(stac)m(k)i(is)e(manipulated.)630 5213 y Fj(dir)336
-b Ft(Mak)m(es)36 b(the)f(curren)m(t)g(w)m(orking)f(directory)g(b)s(e)g
-(the)h(top)g(of)g(the)g(stac)m(k,)j(and)1110 5322 y(then)30
-b(executes)i(the)e(equiv)-5 b(alen)m(t)30 b(of)h(`)p
-Fs(cd)f Fq(dir)7 b Ft('.)38 b Fs(cd)p Ft(s)30 b(to)h
-Fq(dir)p Ft(.)p eop
+TeXDict begin 74 79 bop 150 -116 a Ft(74)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(Displa)m(y)k(the)f(list)g(of)g
+(curren)m(tly)g(remem)m(b)s(ered)f(directories.)51 b(Directories)36
+b(are)e(added)f(to)630 408 y(the)28 b(list)h(with)f(the)g
+Fs(pushd)f Ft(command;)i(the)f Fs(popd)f Ft(command)h(remo)m(v)m(es)h
+(directories)g(from)630 518 y(the)i(list.)630 670 y Fs(+)p
+Fj(N)384 b Ft(Displa)m(ys)23 b(the)f Fq(N)10 b Ft(th)21
+b(directory)h(\(coun)m(ting)h(from)e(the)h(left)g(of)g(the)g(list)g
+(prin)m(ted)1110 780 y(b)m(y)30 b Fs(dirs)f Ft(when)h(in)m(v)m(ok)m(ed)
+i(without)e(options\),)h(starting)g(with)g(zero.)630
+932 y Fs(-)p Fj(N)384 b Ft(Displa)m(ys)47 b(the)g Fq(N)10
+b Ft(th)46 b(directory)h(\(coun)m(ting)g(from)f(the)g(righ)m(t)h(of)g
+(the)f(list)1110 1042 y(prin)m(ted)25 b(b)m(y)g Fs(dirs)g
+Ft(when)f(in)m(v)m(ok)m(ed)j(without)f(options\),)h(starting)g(with)e
+(zero.)630 1194 y Fs(-c)384 b Ft(Clears)31 b(the)f(directory)h(stac)m
+(k)h(b)m(y)e(deleting)h(all)h(of)e(the)h(elemen)m(ts.)630
+1347 y Fs(-l)384 b Ft(Pro)s(duces)30 b(a)i(longer)g(listing;)h(the)f
+(default)f(listing)i(format)e(uses)g(a)h(tilde)g(to)1110
+1456 y(denote)f(the)f(home)h(directory)-8 b(.)630 1609
+y Fs(-p)384 b Ft(Causes)30 b Fs(dirs)f Ft(to)i(prin)m(t)f(the)h
+(directory)g(stac)m(k)h(with)e(one)g(en)m(try)h(p)s(er)e(line.)630
+1761 y Fs(-v)384 b Ft(Causes)36 b Fs(dirs)f Ft(to)i(prin)m(t)f(the)g
+(directory)h(stac)m(k)h(with)e(one)h(en)m(try)f(p)s(er)f(line,)1110
+1871 y(pre\014xing)30 b(eac)m(h)h(en)m(try)g(with)f(its)h(index)e(in)i
+(the)f(stac)m(k.)150 2023 y Fs(popd)870 2154 y(popd)47
+b([+)p Fj(N)57 b Fs(|)48 b(-)p Fj(N)11 b Fs(])46 b([-n])630
+2285 y Ft(Remo)m(v)m(e)26 b(the)e(top)g(en)m(try)h(from)e(the)h
+(directory)h(stac)m(k,)i(and)c Fs(cd)h Ft(to)h(the)f(new)f(top)i
+(directory)-8 b(.)630 2395 y(When)32 b(no)g(argumen)m(ts)h(are)g(giv)m
+(en,)h Fs(popd)d Ft(remo)m(v)m(es)j(the)f(top)f(directory)h(from)f(the)
+g(stac)m(k)630 2504 y(and)f(p)s(erforms)e(a)j Fs(cd)f
+Ft(to)h(the)f(new)g(top)h(directory)-8 b(.)44 b(The)31
+b(elemen)m(ts)i(are)e(n)m(um)m(b)s(ered)f(from)630 2614
+y(0)d(starting)g(at)g(the)g(\014rst)f(directory)h(listed)g(with)f
+Fs(dirs)p Ft(;)h(i.e.,)i Fs(popd)c Ft(is)i(equiv)-5 b(alen)m(t)28
+b(to)f Fs(popd)630 2724 y(+0)p Ft(.)630 2876 y Fs(+)p
+Fj(N)384 b Ft(Remo)m(v)m(es)22 b(the)f Fq(N)10 b Ft(th)20
+b(directory)g(\(coun)m(ting)i(from)e(the)g(left)h(of)g(the)f(list)h
+(prin)m(ted)1110 2986 y(b)m(y)30 b Fs(dirs)p Ft(\),)g(starting)h(with)f
+(zero.)630 3138 y Fs(-)p Fj(N)384 b Ft(Remo)m(v)m(es)46
+b(the)g Fq(N)10 b Ft(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g
+(righ)m(t)g(of)g(the)g(list)1110 3248 y(prin)m(ted)30
+b(b)m(y)g Fs(dirs)p Ft(\),)g(starting)h(with)f(zero.)630
+3400 y Fs(-n)384 b Ft(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g
+(directory)g(when)e(remo)m(ving)j(directo-)1110 3510
+y(ries)f(from)g(the)h(stac)m(k,)h(so)f(that)g(only)f(the)h(stac)m(k)g
+(is)g(manipulated.)150 3684 y Fs(pushd)870 3815 y(pushd)46
+b([)p Fj(dir)58 b Fs(|)47 b(+)p Fj(N)58 b Fs(|)47 b Fj(-N)11
+b Fs(])47 b([-n])630 3946 y Ft(Sa)m(v)m(e)30 b(the)e(curren)m(t)g
+(directory)h(on)f(the)h(top)f(of)h(the)f(directory)h(stac)m(k)h(and)e
+(then)g Fs(cd)f Ft(to)i Fq(dir)p Ft(.)630 4055 y(With)i(no)f(argumen)m
+(ts,)h Fs(pushd)e Ft(exc)m(hanges)j(the)e(top)h(t)m(w)m(o)h
+(directories.)630 4208 y Fs(+)p Fj(N)384 b Ft(Brings)29
+b(the)f Fq(N)10 b Ft(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 4317 y(b)m(y)34
+b Fs(dirs)p Ft(,)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 4427 y(stac)m(k.)630
+4579 y Fs(-)p Fj(N)384 b Ft(Brings)23 b(the)g Fq(N)10
+b Ft(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 4689 y(b)m(y)34 b Fs(dirs)p
+Ft(,)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 4798 y(stac)m(k.)630 4951 y
+Fs(-n)384 b Ft(Suppresses)26 b(the)i(normal)h(c)m(hange)g(of)f
+(directory)h(when)e(adding)h(directories)1110 5060 y(to)j(the)g(stac)m
+(k,)h(so)e(that)h(only)g(the)f(stac)m(k)i(is)f(manipulated.)630
+5213 y Fj(dir)336 b Ft(Mak)m(es)36 b(the)f(curren)m(t)g(w)m(orking)g
+(directory)g(b)s(e)f(the)h(top)g(of)g(the)g(stac)m(k,)j(and)1110
+5322 y(then)30 b(executes)i(the)e(equiv)-5 b(alen)m(t)32
+b(of)f(`)p Fs(cd)f Fq(dir)7 b Ft('.)39 b Fs(cd)p Ft(s)30
+b(to)h Fq(dir)p Ft(.)p eop end
 %%Page: 75 81
-75 80 bop 150 -116 a Ft(Chapter)30 b(6:)41 b(Bash)30
-b(F)-8 b(eatures)2484 b(75)150 299 y Fr(6.9)68 b(Con)l(trolling)47
-b(the)e(Prompt)275 544 y Ft(The)c(v)-5 b(alue)42 b(of)g(the)h(v)-5
-b(ariable)41 b Fs(PROMPT_COMMAND)d Ft(is)j(examined)g(just)h(b)s(efore)
-g(Bash)g(prin)m(ts)f(eac)m(h)150 653 y(primary)f(prompt.)73
-b(If)41 b Fs(PROMPT_COMMAND)d Ft(is)i(set)i(and)f(has)h(a)g(non-n)m
-(ull)d(v)-5 b(alue,)44 b(then)d(the)h(v)-5 b(alue)41
-b(is)150 763 y(executed)31 b(just)f(as)h(if)e(it)h(had)g(b)s(een)f(t)m
-(yp)s(ed)h(on)h(the)f(command)g(line.)275 898 y(In)d(addition,)h(the)h
-(follo)m(wing)e(table)h(describ)s(es)f(the)i(sp)s(ecial)e(c)m
-(haracters)j(whic)m(h)e(can)g(app)s(ear)g(in)g(the)150
-1008 y(prompt)h(v)-5 b(ariables:)150 1168 y Fs(\\a)384
-b Ft(A)30 b(b)s(ell)f(c)m(haracter.)150 1328 y Fs(\\d)384
-b Ft(The)30 b(date,)h(in)e Fs(")p Ft(W)-8 b(eekda)m(y)32
-b(Mon)m(th)f(Date)p Fs(")h Ft(format)f(\(e.g.,)h Fs(")p
-Ft(T)-8 b(ue)30 b(Ma)m(y)h(26)p Fs(")p Ft(\).)150 1488
-y Fs(\\D{)p Fj(format)11 b Fs(})630 1598 y Ft(The)27
-b Fq(format)i Ft(is)e(passed)f(to)i Fs(strftime)p Ft(\(3\))f(and)f(the)
-i(result)e(is)g(inserted)g(in)m(to)h(the)h(prompt)630
-1708 y(string;)41 b(an)e(empt)m(y)f Fq(format)j Ft(results)c(in)g(a)i
-(lo)s(cale-sp)s(eci\014c)e(time)h(represen)m(tation.)64
+TeXDict begin 75 80 bop 150 -116 a Ft(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(75)150 299 y Fr(6.9)68
+b(Con)l(trolling)47 b(the)e(Prompt)275 544 y Ft(The)c(v)-5
+b(alue)43 b(of)f(the)h(v)-5 b(ariable)43 b Fs(PROMPT_COMMAND)38
+b Ft(is)k(examined)g(just)g(b)s(efore)g(Bash)g(prin)m(ts)g(eac)m(h)150
+653 y(primary)f(prompt.)73 b(If)41 b Fs(PROMPT_COMMAND)d
+Ft(is)j(set)h(and)f(has)h(a)g(non-n)m(ull)f(v)-5 b(alue,)45
+b(then)c(the)h(v)-5 b(alue)42 b(is)150 763 y(executed)31
+b(just)f(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 898 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 1008 y(prompt)g(v)-5 b(ariables:)150
+1168 y Fs(\\a)384 b Ft(A)30 b(b)s(ell)h(c)m(haracter.)150
+1328 y Fs(\\d)384 b Ft(The)30 b(date,)h(in)f Fs(")p Ft(W)-8
+b(eekda)m(y)32 b(Mon)m(th)f(Date)p Fs(")h Ft(format)f(\(e.g.,)h
+Fs(")p Ft(T)-8 b(ue)30 b(Ma)m(y)h(26)p Fs(")p Ft(\).)150
+1488 y Fs(\\D{)p Fj(format)11 b Fs(})630 1598 y Ft(The)27
+b Fq(format)i Ft(is)f(passed)e(to)i Fs(strftime)p Ft(\(3\))f(and)f(the)
+i(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt)630
+1708 y(string;)42 b(an)d(empt)m(y)f Fq(format)j Ft(results)d(in)g(a)h
+(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65
 b(The)630 1817 y(braces)31 b(are)f(required.)150 1977
 y Fs(\\e)384 b Ft(An)30 b(escap)s(e)h(c)m(haracter.)150
 2137 y Fs(\\h)384 b Ft(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e
 (`.'.)150 2298 y Fs(\\H)384 b Ft(The)30 b(hostname.)150
 2458 y Fs(\\j)384 b Ft(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m
-(tly)g(managed)h(b)m(y)f(the)g(shell.)150 2618 y Fs(\\l)384
-b Ft(The)30 b(basename)h(of)f(the)h(shell's)d(terminal)h(device)h
+(tly)h(managed)g(b)m(y)f(the)g(shell.)150 2618 y Fs(\\l)384
+b Ft(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g
 (name.)150 2778 y Fs(\\n)384 b Ft(A)30 b(newline.)150
-2938 y Fs(\\r)384 b Ft(A)30 b(carriage)h(return.)150
-3098 y Fs(\\s)384 b Ft(The)22 b(name)g(of)h(the)f(shell,)g(the)h
-(basename)f(of)h Fs($0)f Ft(\(the)g(p)s(ortion)f(follo)m(wing)g(the)i
-(\014nal)d(slash\).)150 3258 y Fs(\\t)384 b Ft(The)30
-b(time,)g(in)f(24-hour)i(HH:MM:SS)g(format.)150 3418
-y Fs(\\T)384 b Ft(The)30 b(time,)g(in)f(12-hour)i(HH:MM:SS)g(format.)
-150 3579 y Fs(\\@)384 b Ft(The)30 b(time,)g(in)f(12-hour)i(am/pm)f
-(format.)150 3739 y Fs(\\A)384 b Ft(The)30 b(time,)g(in)f(24-hour)i
+2938 y Fs(\\r)384 b Ft(A)30 b(carriage)i(return.)150
+3098 y Fs(\\s)384 b Ft(The)22 b(name)g(of)h(the)f(shell,)i(the)f
+(basename)f(of)h Fs($0)f Ft(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f
+(\014nal)e(slash\).)150 3258 y Fs(\\t)384 b Ft(The)30
+b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 3418
+y Fs(\\T)384 b Ft(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.)
+150 3579 y Fs(\\@)384 b Ft(The)30 b(time,)h(in)f(12-hour)h(am/pm)f
+(format.)150 3739 y Fs(\\A)384 b Ft(The)30 b(time,)h(in)f(24-hour)h
 (HH:MM)g(format.)150 3899 y Fs(\\u)384 b Ft(The)30 b(username)g(of)g
 (the)h(curren)m(t)f(user.)150 4059 y Fs(\\v)384 b Ft(The)30
-b(v)m(ersion)g(of)g(Bash)h(\(e.g.,)h(2.00\))150 4219
-y Fs(\\V)384 b Ft(The)30 b(release)h(of)f(Bash,)h(v)m(ersion)f
-Fs(+)g Ft(patc)m(hlev)m(el)g(\(e.g.,)j(2.00.0\))150 4379
-y Fs(\\w)384 b Ft(The)30 b(curren)m(t)g(w)m(orking)g(directory)-8
-b(,)30 b(with)f Fs($HOME)g Ft(abbreviated)h(with)f(a)i(tilde.)150
+b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h(2.00\))150 4219
+y Fs(\\V)384 b Ft(The)30 b(release)i(of)e(Bash,)h(v)m(ersion)g
+Fs(+)f Ft(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 4379
+y Fs(\\w)384 b Ft(The)30 b(curren)m(t)g(w)m(orking)h(directory)-8
+b(,)31 b(with)f Fs($HOME)f Ft(abbreviated)i(with)f(a)h(tilde.)150
 4539 y Fs(\\W)384 b Ft(The)30 b(basename)h(of)f Fs($PWD)p
-Ft(,)g(with)f Fs($HOME)g Ft(abbreviated)g(with)g(a)i(tilde.)150
-4699 y Fs(\\!)384 b Ft(The)30 b(history)f(n)m(um)m(b)s(er)g(of)i(this)e
+Ft(,)g(with)g Fs($HOME)f Ft(abbreviated)h(with)g(a)h(tilde.)150
+4699 y Fs(\\!)384 b Ft(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f
 (command.)150 4860 y Fs(\\#)384 b Ft(The)30 b(command)g(n)m(um)m(b)s
-(er)f(of)i(this)e(command.)150 5020 y Fs(\\$)384 b Ft(If)30
-b(the)g(e\013ectiv)m(e)i(uid)d(is)g(0,)i Fs(#)p Ft(,)g(otherwise)f
+(er)f(of)i(this)f(command.)150 5020 y Fs(\\$)384 b Ft(If)30
+b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Fs(#)p Ft(,)g(otherwise)g
 Fs($)p Ft(.)150 5180 y Fs(\\)p Fj(nnn)288 b Ft(The)30
-b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)g(the)g(o)s(ctal)h(v)
--5 b(alue)30 b Fq(nnn)p Ft(.)150 5340 y Fs(\\\\)384 b
-Ft(A)30 b(bac)m(kslash.)p eop
+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 Fq(nnn)p Ft(.)150 5340 y Fs(\\\\)384 b
+Ft(A)30 b(bac)m(kslash.)p eop end
 %%Page: 76 82
-76 81 bop 150 -116 a Ft(76)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fs(\\[)384 b Ft(Begin)37 b(a)g(sequence)g(of)g(non-prin)m(ting)e
-(c)m(haracters.)61 b(This)35 b(could)h(b)s(e)h(used)f(to)h(em)m(b)s(ed)
-g(a)630 408 y(terminal)29 b(con)m(trol)i(sequence)f(in)m(to)h(the)f
-(prompt.)150 568 y Fs(\\])384 b Ft(End)29 b(a)i(sequence)g(of)f
-(non-prin)m(ting)e(c)m(haracters.)275 728 y(The)d(command)h(n)m(um)m(b)
-s(er)f(and)h(the)g(history)f(n)m(um)m(b)s(er)g(are)i(usually)d
-(di\013eren)m(t:)38 b(the)26 b(history)f(n)m(um)m(b)s(er)150
-838 y(of)i(a)f(command)h(is)e(its)h(p)s(osition)e(in)h(the)i(history)e
-(list,)h(whic)m(h)g(ma)m(y)h(include)d(commands)i(restored)g(from)150
-947 y(the)39 b(history)g(\014le)f(\(see)i(Section)f(9.1)i([Bash)e
-(History)g(F)-8 b(acilities],)41 b(page)f(109\),)j(while)38
-b(the)h(command)150 1057 y(n)m(um)m(b)s(er)j(is)g(the)i(p)s(osition)d
-(in)h(the)h(sequence)h(of)f(commands)g(executed)h(during)d(the)j
-(curren)m(t)f(shell)150 1167 y(session.)275 1302 y(After)35
-b(the)g(string)f(is)g(deco)s(ded,)i(it)e(is)g(expanded)g(via)h
-(parameter)g(expansion,)h(command)e(substi-)150 1411
-y(tution,)j(arithmetic)e(expansion,)h(and)f(quote)h(remo)m(v)-5
-b(al,)38 b(sub)5 b(ject)35 b(to)i(the)f(v)-5 b(alue)35
-b(of)h(the)g Fs(promptvars)150 1521 y Ft(shell)29 b(option)g(\(see)j
-(Section)e(4.2)h([Bash)g(Builtins],)d(page)j(39\).)150
+TeXDict begin 76 81 bop 150 -116 a Ft(76)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(\\[)384 b Ft(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
+408 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.)150
+568 y Fs(\\])384 b Ft(End)29 b(a)i(sequence)g(of)f(non-prin)m(ting)g(c)
+m(haracters.)275 728 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 838 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 947 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(109\),)j(while)d(the)f(command)150
+1057 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
+1167 y(session.)275 1302 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 1411 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 Fs(promptvars)150 1521 y Ft(shell)31 b(option)f(\(see)i
+(Section)f(4.2)g([Bash)g(Builtins],)g(page)g(39\).)150
 1779 y Fr(6.10)68 b(The)45 b(Restricted)h(Shell)275 2024
-y Ft(If)26 b(Bash)h(is)e(started)i(with)f(the)h(name)f
+y Ft(If)26 b(Bash)h(is)f(started)h(with)g(the)g(name)f
 Fs(rbash)p Ft(,)h(or)f(the)h(`)p Fs(--restricted)p Ft(')d(or)j(`)p
-Fs(-r)p Ft(')f(option)g(is)g(supplied)150 2133 y(at)32
-b(in)m(v)m(o)s(cation,)g(the)f(shell)e(b)s(ecomes)j(restricted.)43
-b(A)31 b(restricted)g(shell)e(is)h(used)h(to)h(set)f(up)f(an)i(en)m
-(viron-)150 2243 y(men)m(t)26 b(more)f(con)m(trolled)g(than)g(the)h
-(standard)e(shell.)38 b(A)25 b(restricted)g(shell)f(b)s(eha)m(v)m(es)i
-(iden)m(tically)d(to)j Fs(bash)150 2352 y Ft(with)j(the)i(exception)f
-(that)h(the)g(follo)m(wing)e(are)h(disallo)m(w)m(ed)f(or)i(not)f(p)s
-(erformed:)225 2487 y Fp(\017)60 b Ft(Changing)29 b(directories)g(with)
-h(the)g Fs(cd)g Ft(builtin.)225 2622 y Fp(\017)60 b Ft(Setting)30
-b(or)g(unsetting)g(the)h(v)-5 b(alues)29 b(of)i(the)f
+Fs(-r)p Ft(')f(option)h(is)g(supplied)150 2133 y(at)32
+b(in)m(v)m(o)s(cation,)i(the)d(shell)g(b)s(ecomes)h(restricted.)44
+b(A)31 b(restricted)h(shell)f(is)g(used)g(to)h(set)f(up)f(an)i(en)m
+(viron-)150 2243 y(men)m(t)26 b(more)f(con)m(trolled)i(than)e(the)h
+(standard)e(shell.)40 b(A)25 b(restricted)h(shell)g(b)s(eha)m(v)m(es)g
+(iden)m(tically)h(to)f Fs(bash)150 2352 y Ft(with)k(the)h(exception)g
+(that)g(the)g(follo)m(wing)h(are)e(disallo)m(w)m(ed)i(or)f(not)f(p)s
+(erformed:)225 2487 y Fp(\017)60 b Ft(Changing)30 b(directories)h(with)
+g(the)f Fs(cd)g Ft(builtin.)225 2622 y Fp(\017)60 b Ft(Setting)31
+b(or)f(unsetting)h(the)g(v)-5 b(alues)30 b(of)h(the)f
 Fs(SHELL)p Ft(,)g Fs(PATH)p Ft(,)f Fs(ENV)p Ft(,)h(or)g
 Fs(BASH_ENV)e Ft(v)-5 b(ariables.)225 2757 y Fp(\017)60
-b Ft(Sp)s(ecifying)28 b(command)i(names)g(con)m(taining)g(slashes.)225
-2891 y Fp(\017)60 b Ft(Sp)s(ecifying)28 b(a)j(\014lename)e(con)m
-(taining)h(a)h(slash)e(as)i(an)f(argumen)m(t)h(to)g(the)f
-Fs(.)h Ft(builtin)26 b(command.)225 3026 y Fp(\017)60
-b Ft(Sp)s(ecifying)26 b(a)k(\014lename)e(con)m(taining)g(a)i(slash)d
-(as)i(an)g(argumen)m(t)h(to)f(the)g(`)p Fs(-p)p Ft(')g(option)f(to)i
-(the)f Fs(hash)330 3136 y Ft(builtin)e(command.)225 3270
-y Fp(\017)60 b Ft(Imp)s(orting)29 b(function)g(de\014nitions)f(from)h
-(the)i(shell)e(en)m(vironmen)m(t)h(at)h(startup.)225
-3405 y Fp(\017)60 b Ft(P)m(arsing)30 b(the)g(v)-5 b(alue)30
-b(of)h Fs(SHELLOPTS)d Ft(from)h(the)i(shell)e(en)m(vironmen)m(t)h(at)h
-(startup.)225 3540 y Fp(\017)60 b Ft(Redirecting)29 b(output)h(using)f
-(the)i(`)p Fs(>)p Ft(',)g(`)p Fs(>|)p Ft(',)f(`)p Fs(<>)p
-Ft(',)h(`)p Fs(>&)p Ft(',)f(`)p Fs(&>)p Ft(',)h(and)e(`)p
-Fs(>>)p Ft(')i(redirection)e(op)s(erators.)225 3675 y
-Fp(\017)60 b Ft(Using)30 b(the)g Fs(exec)f Ft(builtin)e(to)k(replace)g
-(the)f(shell)f(with)g(another)i(command.)225 3809 y Fp(\017)60
-b Ft(Adding)39 b(or)i(deleting)f(builtin)d(commands)k(with)e(the)i(`)p
-Fs(-f)p Ft(')g(and)f(`)p Fs(-d)p Ft(')h(options)f(to)i(the)f
+b Ft(Sp)s(ecifying)30 b(command)g(names)g(con)m(taining)i(slashes.)225
+2891 y Fp(\017)60 b Ft(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
+Fs(.)h Ft(builtin)e(command.)225 3026 y Fp(\017)60 b
+Ft(Sp)s(ecifying)28 b(a)i(\014lename)f(con)m(taining)h(a)g(slash)e(as)h
+(an)g(argumen)m(t)h(to)f(the)g(`)p Fs(-p)p Ft(')g(option)g(to)h(the)f
+Fs(hash)330 3136 y Ft(builtin)h(command.)225 3270 y Fp(\017)60
+b Ft(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 3405 y Fp(\017)60
+b Ft(P)m(arsing)31 b(the)f(v)-5 b(alue)31 b(of)g Fs(SHELLOPTS)d
+Ft(from)h(the)i(shell)g(en)m(vironmen)m(t)g(at)g(startup.)225
+3540 y Fp(\017)60 b Ft(Redirecting)31 b(output)f(using)g(the)h(`)p
+Fs(>)p Ft(',)g(`)p Fs(>|)p Ft(',)f(`)p Fs(<>)p Ft(',)h(`)p
+Fs(>&)p Ft(',)f(`)p Fs(&>)p Ft(',)h(and)e(`)p Fs(>>)p
+Ft(')i(redirection)g(op)s(erators.)225 3675 y Fp(\017)60
+b Ft(Using)31 b(the)f Fs(exec)f Ft(builtin)h(to)h(replace)h(the)e
+(shell)h(with)f(another)h(command.)225 3809 y Fp(\017)60
+b Ft(Adding)40 b(or)h(deleting)h(builtin)e(commands)h(with)f(the)h(`)p
+Fs(-f)p Ft(')g(and)f(`)p Fs(-d)p Ft(')h(options)g(to)h(the)f
 Fs(enable)330 3919 y Ft(builtin.)225 4054 y Fp(\017)60
-b Ft(Using)30 b(the)g Fs(enable)f Ft(builtin)e(command)j(to)h(enable)f
-(disabled)e(shell)g(builtins.)225 4188 y Fp(\017)60 b
-Ft(Sp)s(ecifying)28 b(the)i(`)p Fs(-p)p Ft(')h(option)f(to)h(the)f
+b Ft(Using)31 b(the)f Fs(enable)f Ft(builtin)h(command)g(to)h(enable)g
+(disabled)f(shell)g(builtins.)225 4188 y Fp(\017)60 b
+Ft(Sp)s(ecifying)30 b(the)g(`)p Fs(-p)p Ft(')h(option)g(to)g(the)f
 Fs(command)f Ft(builtin.)225 4323 y Fp(\017)60 b Ft(T)-8
-b(urning)28 b(o\013)j(restricted)f(mo)s(de)g(with)f(`)p
-Fs(set)h(+r)p Ft(')g(or)g(`)p Fs(set)g(+o)g(restricted)p
-Ft('.)275 4483 y(These)g(restrictions)f(are)i(enforced)f(after)h(an)m
-(y)g(startup)f(\014les)f(are)i(read.)275 4618 y(When)j(a)i(command)e
-(that)i(is)e(found)g(to)h(b)s(e)g(a)g(shell)e(script)h(is)g(executed)i
-(\(see)g(Section)f(3.8)h([Shell)150 4727 y(Scripts],)24
-b(page)f(31\),)j Fs(rbash)c Ft(turns)g(o\013)i(an)m(y)f(restrictions)f
-(in)g(the)h(shell)f(spa)m(wned)g(to)i(execute)g(the)g(script.)150
+b(urning)29 b(o\013)i(restricted)g(mo)s(de)f(with)g(`)p
+Fs(set)g(+r)p Ft(')g(or)g(`)p Fs(set)g(+o)g(restricted)p
+Ft('.)275 4483 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m
+(y)g(startup)f(\014les)g(are)h(read.)275 4618 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 4727 y(Scripts],)25
+b(page)e(31\),)j Fs(rbash)c Ft(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
 4986 y Fr(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)275 5230
-y Ft(Starting)20 b(Bash)h(with)e(the)i(`)p Fs(--posix)p
-Ft(')e(command-line)h(option)g(or)h(executing)g(`)p Fs(set)30
-b(-o)f(posix)p Ft(')20 b(while)150 5340 y(Bash)33 b(is)e(running)f
-(will)g(cause)j(Bash)f(to)i(conform)e(more)h(closely)f(to)h(the)g
-Fl(posix)e Ft(1003.2)k(standard)d(b)m(y)p eop
+y Ft(Starting)21 b(Bash)g(with)f(the)h(`)p Fs(--posix)p
+Ft(')e(command-line)j(option)f(or)g(executing)h(`)p Fs(set)30
+b(-o)f(posix)p Ft(')20 b(while)150 5340 y(Bash)33 b(is)f(running)f
+(will)i(cause)g(Bash)f(to)i(conform)e(more)h(closely)h(to)f(the)g
+Fl(posix)e Ft(1003.2)k(standard)d(b)m(y)p eop end
 %%Page: 77 83
-77 82 bop 150 -116 a Ft(Chapter)30 b(6:)41 b(Bash)30
-b(F)-8 b(eatures)2484 b(77)150 299 y(c)m(hanging)37 b(the)g(b)s(eha)m
-(vior)f(to)h(matc)m(h)h(that)f(sp)s(eci\014ed)f(b)m(y)g
-Fl(posix)g Ft(in)g(areas)h(where)g(the)g(Bash)g(default)150
-408 y(di\013ers.)275 554 y(When)30 b(in)m(v)m(ok)m(ed)g(as)h
+TeXDict begin 77 82 bop 150 -116 a Ft(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(77)150 299 y(c)m(hanging)38
+b(the)f(b)s(eha)m(vior)g(to)g(matc)m(h)h(that)f(sp)s(eci\014ed)g(b)m(y)
+f Fl(posix)g Ft(in)h(areas)g(where)g(the)g(Bash)g(default)150
+408 y(di\013ers.)275 554 y(When)30 b(in)m(v)m(ok)m(ed)h(as)g
 Fs(sh)p Ft(,)f(Bash)h(en)m(ters)g Fl(posix)e Ft(mo)s(de)h(after)h
-(reading)f(the)g(startup)g(\014les.)275 700 y(The)f(follo)m(wing)g
-(list)g(is)h(what's)g(c)m(hanged)h(when)e(`)p Fl(posix)h
-Ft(mo)s(de')h(is)e(in)g(e\013ect:)199 846 y(1.)61 b(When)28
-b(a)i(command)e(in)f(the)i(hash)f(table)h(no)f(longer)g(exists,)h(Bash)
-g(will)d(re-searc)m(h)k Fs($PATH)d Ft(to)i(\014nd)330
-955 y(the)i(new)e(lo)s(cation.)41 b(This)28 b(is)i(also)g(a)m(v)-5
-b(ailable)30 b(with)f(`)p Fs(shopt)g(-s)h(checkhash)p
-Ft('.)199 1095 y(2.)61 b(The)42 b(message)h(prin)m(ted)d(b)m(y)i(the)g
-(job)g(con)m(trol)h(co)s(de)f(and)f(builtins)e(when)i(a)h(job)g(exits)g
-(with)f(a)330 1205 y(non-zero)31 b(status)g(is)e(`Done\(status\)'.)199
-1345 y(3.)61 b(The)40 b(message)h(prin)m(ted)e(b)m(y)h(the)h(job)f(con)
-m(trol)g(co)s(de)h(and)f(builtins)c(when)k(a)g(job)g(is)g(stopp)s(ed)f
-(is)330 1455 y(`Stopp)s(ed\()p Fq(signame)5 b Ft(\)',)30
-b(where)g Fq(signame)35 b Ft(is,)30 b(for)g(example,)g
+(reading)g(the)f(startup)g(\014les.)275 700 y(The)f(follo)m(wing)j
+(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fl(posix)h
+Ft(mo)s(de')h(is)f(in)g(e\013ect:)199 846 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 Fs($PATH)d Ft(to)i(\014nd)330
+955 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 Fs(shopt)f(-s)h(checkhash)p
+Ft('.)199 1095 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 1205 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199
+1345 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 1455 y(`Stopp)s(ed\()p Fq(signame)5 b Ft(\)',)31
+b(where)f Fq(signame)36 b Ft(is,)31 b(for)f(example,)h
 Fs(SIGTSTP)p Ft(.)199 1595 y(4.)61 b(Reserv)m(ed)31 b(w)m(ords)f(ma)m
 (y)h(not)f(b)s(e)g(aliased.)199 1735 y(5.)61 b(The)39
-b Fl(posix)f Ft(1003.2)k Fs(PS1)d Ft(and)f Fs(PS2)h Ft(expansions)f(of)
-h(`)p Fs(!)p Ft(')h(to)g(the)f(history)f(n)m(um)m(b)s(er)g(and)h(`)p
-Fs(!!)p Ft(')g(to)330 1844 y(`)p Fs(!)p Ft(')c(are)h(enabled,)g(and)f
-(parameter)g(expansion)g(is)f(p)s(erformed)g(on)h(the)h(v)-5
-b(alues)34 b(of)i Fs(PS1)e Ft(and)h Fs(PS2)330 1954 y
-Ft(regardless)30 b(of)g(the)h(setting)f(of)h(the)f Fs(promptvars)e
+b Fl(posix)f Ft(1003.2)k Fs(PS1)d Ft(and)f Fs(PS2)h Ft(expansions)g(of)
+g(`)p Fs(!)p Ft(')h(to)g(the)f(history)g(n)m(um)m(b)s(er)f(and)h(`)p
+Fs(!!)p Ft(')g(to)330 1844 y(`)p Fs(!)p Ft(')c(are)h(enabled,)h(and)e
+(parameter)g(expansion)h(is)f(p)s(erformed)f(on)h(the)h(v)-5
+b(alues)35 b(of)h Fs(PS1)e Ft(and)h Fs(PS2)330 1954 y
+Ft(regardless)c(of)f(the)h(setting)g(of)g(the)f Fs(promptvars)e
 Ft(option.)199 2094 y(6.)61 b(The)30 b Fl(posix)g Ft(1003.2)i(startup)e
-(\014les)g(are)g(executed)i(\()p Fs($ENV)p Ft(\))e(rather)g(than)g(the)
-g(normal)g(Bash)g(\014les.)199 2234 y(7.)61 b(Tilde)28
-b(expansion)h(is)f(only)h(p)s(erformed)g(on)h(assignmen)m(ts)f
-(preceding)g(a)h(command)g(name,)g(rather)330 2344 y(than)g(on)g(all)g
-(assignmen)m(t)g(statemen)m(ts)i(on)e(the)h(line.)199
-2484 y(8.)61 b(The)30 b(default)f(history)h(\014le)f(is)h(`)p
-Fs(~/.sh_history)p Ft(')d(\(this)j(is)f(the)h(default)g(v)-5
-b(alue)30 b(of)g Fs($HISTFILE)p Ft(\).)199 2624 y(9.)61
+(\014les)h(are)f(executed)i(\()p Fs($ENV)p Ft(\))e(rather)g(than)g(the)
+g(normal)h(Bash)f(\014les.)199 2234 y(7.)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 2344 y(than)g(on)g(all)i
+(assignmen)m(t)f(statemen)m(ts)h(on)e(the)h(line.)199
+2484 y(8.)61 b(The)30 b(default)g(history)h(\014le)f(is)h(`)p
+Fs(~/.sh_history)p Ft(')c(\(this)k(is)f(the)g(default)h(v)-5
+b(alue)31 b(of)f Fs($HISTFILE)p Ft(\).)199 2624 y(9.)61
 b(The)23 b(output)f(of)i(`)p Fs(kill)29 b(-l)p Ft(')23
-b(prin)m(ts)e(all)h(the)i(signal)d(names)i(on)g(a)h(single)e(line,)h
-(separated)g(b)m(y)g(spaces,)330 2733 y(without)29 b(the)i(`)p
+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 2733 y(without)30 b(the)h(`)p
 Fs(SIG)p Ft(')f(pre\014x.)154 2874 y(10.)61 b(The)30
-b Fs(kill)f Ft(builtin)e(do)s(es)j(not)h(accept)h(signal)d(names)h
-(with)f(a)i(`)p Fs(SIG)p Ft(')f(pre\014x.)154 3014 y(11.)61
-b(Non-in)m(teractiv)m(e)32 b(shells)c(exit)i(if)g Fq(\014lename)k
-Ft(in)29 b Fs(.)h Fq(\014lename)35 b Ft(is)30 b(not)g(found.)154
-3154 y(12.)61 b(Non-in)m(teractiv)m(e)39 b(shells)d(exit)i(if)f(a)h
-(syn)m(tax)g(error)g(in)e(an)i(arithmetic)f(expansion)g(results)f(in)h
-(an)330 3263 y(in)m(v)-5 b(alid)28 b(expression.)154
-3403 y(13.)61 b(Redirection)23 b(op)s(erators)h(do)g(not)g(p)s(erform)f
-(\014lename)g(expansion)g(on)h(the)g(w)m(ord)f(in)g(the)h(redirection)
-330 3513 y(unless)29 b(the)h(shell)f(is)g(in)m(teractiv)m(e.)154
-3653 y(14.)61 b(Redirection)29 b(op)s(erators)i(do)f(not)h(p)s(erform)e
-(w)m(ord)h(splitting)e(on)i(the)h(w)m(ord)f(in)f(the)h(redirection.)154
-3793 y(15.)61 b(F)-8 b(unction)34 b(names)h(m)m(ust)f(b)s(e)g(v)-5
-b(alid)33 b(shell)f Fs(name)p Ft(s.)52 b(That)34 b(is,)h(they)g(ma)m(y)
-g(not)g(con)m(tain)f(c)m(haracters)330 3903 y(other)f(than)g(letters,)g
-(digits,)g(and)f(underscores,)h(and)f(ma)m(y)h(not)g(start)h(with)d(a)i
-(digit.)47 b(Declaring)330 4012 y(a)31 b(function)e(with)g(an)h(in)m(v)
--5 b(alid)28 b(name)j(causes)f(a)h(fatal)g(syn)m(tax)g(error)f(in)f
-(non-in)m(teractiv)m(e)i(shells.)154 4153 y(16.)61 b
-Fl(posix)23 b Ft(1003.2)j(`sp)s(ecial')c(builtins)e(are)k(found)e(b)s
-(efore)h(shell)f(functions)g(during)f(command)i(lo)s(okup.)154
-4293 y(17.)61 b(If)33 b(a)h Fl(posix)f Ft(1003.2)j(sp)s(ecial)c
-(builtin)f(returns)h(an)i(error)f(status,)i(a)f(non-in)m(teractiv)m(e)g
-(shell)e(exits.)330 4402 y(The)43 b(fatal)i(errors)e(are)h(those)h
-(listed)d(in)h(the)h(POSIX.2)g(standard,)j(and)c(include)f(things)h
-(lik)m(e)330 4512 y(passing)24 b(incorrect)i(options,)g(redirection)e
-(errors,)i(v)-5 b(ariable)24 b(assignmen)m(t)h(errors)g(for)g
-(assignmen)m(ts)330 4621 y(preceding)k(the)i(command)f(name,)h(and)e
-(so)i(on.)154 4762 y(18.)61 b(If)33 b(the)h Fs(cd)f Ft(builtin)e
-(\014nds)h(a)i(directory)f(to)i(c)m(hange)g(to)f(using)f
-Fs($CDPATH)p Ft(,)g(the)h(v)-5 b(alue)33 b(it)g(assigns)g(to)330
-4871 y(the)e Fs(PWD)e Ft(v)-5 b(ariable)29 b(do)s(es)h(not)h(con)m
-(tain)g(an)m(y)f(sym)m(b)s(olic)f(links,)f(as)j(if)e(`)p
-Fs(cd)h(-P)p Ft(')g(had)g(b)s(een)g(executed.)154 5011
-y(19.)61 b(If)34 b Fs(CDPATH)f Ft(is)g(set,)j(the)f Fs(cd)f
-Ft(builtin)d(will)g(not)k(implicitly)c(app)s(end)h(the)j(curren)m(t)f
-(directory)g(to)h(it.)330 5121 y(This)28 b(means)h(that)h
-Fs(cd)f Ft(will)e(fail)h(if)h(no)g(v)-5 b(alid)28 b(directory)h(name)g
+b Fs(kill)f Ft(builtin)h(do)s(es)g(not)h(accept)h(signal)f(names)f
+(with)g(a)h(`)p Fs(SIG)p Ft(')f(pre\014x.)154 3014 y(11.)61
+b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g Fq(\014lename)k
+Ft(in)30 b Fs(.)g Fq(\014lename)36 b Ft(is)31 b(not)f(found.)154
+3154 y(12.)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 3263 y(in)m(v)-5 b(alid)31 b(expression.)154
+3403 y(13.)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 3513 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154
+3653 y(14.)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
+3793 y(15.)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 Fs(name)p Ft(s.)52 b(That)34 b(is,)i(they)f(ma)m(y)
+g(not)g(con)m(tain)g(c)m(haracters)330 3903 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 4012 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 4153 y(16.)61 b
+Fl(posix)23 b Ft(1003.2)j(`sp)s(ecial')e(builtins)f(are)h(found)e(b)s
+(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)154
+4293 y(17.)61 b(If)33 b(a)h Fl(posix)f Ft(1003.2)j(sp)s(ecial)e
+(builtin)g(returns)e(an)i(error)f(status,)i(a)f(non-in)m(teractiv)m(e)i
+(shell)e(exits.)330 4402 y(The)43 b(fatal)j(errors)d(are)h(those)h
+(listed)f(in)g(the)g(POSIX.2)g(standard,)j(and)c(include)h(things)g
+(lik)m(e)330 4512 y(passing)25 b(incorrect)i(options,)g(redirection)f
+(errors,)g(v)-5 b(ariable)26 b(assignmen)m(t)g(errors)f(for)g
+(assignmen)m(ts)330 4621 y(preceding)30 b(the)h(command)f(name,)h(and)e
+(so)i(on.)154 4762 y(18.)61 b(If)33 b(the)h Fs(cd)f Ft(builtin)h
+(\014nds)e(a)i(directory)g(to)h(c)m(hange)g(to)f(using)g
+Fs($CDPATH)p Ft(,)f(the)h(v)-5 b(alue)34 b(it)g(assigns)g(to)330
+4871 y(the)d Fs(PWD)e Ft(v)-5 b(ariable)31 b(do)s(es)f(not)h(con)m
+(tain)h(an)m(y)e(sym)m(b)s(olic)h(links,)f(as)h(if)f(`)p
+Fs(cd)g(-P)p Ft(')g(had)g(b)s(een)g(executed.)154 5011
+y(19.)61 b(If)34 b Fs(CDPATH)f Ft(is)h(set,)i(the)f Fs(cd)f
+Ft(builtin)g(will)g(not)h(implicitly)h(app)s(end)c(the)j(curren)m(t)f
+(directory)h(to)g(it.)330 5121 y(This)29 b(means)g(that)h
+Fs(cd)f Ft(will)h(fail)g(if)g(no)f(v)-5 b(alid)30 b(directory)g(name)f
 (can)h(b)s(e)f(constructed)h(from)f(an)m(y)h(of)330 5230
-y(the)i(en)m(tries)f(in)f Fs($CDPATH)p Ft(,)f(ev)m(en)j(if)f(the)g(a)h
-(directory)f(with)f(the)h(same)h(name)f(as)h(the)g(name)f(giv)m(en)330
-5340 y(as)g(an)f(argumen)m(t)h(to)g Fs(cd)f Ft(exists)g(in)f(the)h
-(curren)m(t)g(directory)-8 b(.)p eop
+y(the)i(en)m(tries)g(in)f Fs($CDPATH)p Ft(,)e(ev)m(en)j(if)g(the)f(a)h
+(directory)g(with)f(the)g(same)h(name)f(as)h(the)g(name)f(giv)m(en)330
+5340 y(as)g(an)f(argumen)m(t)h(to)g Fs(cd)f Ft(exists)h(in)f(the)g
+(curren)m(t)g(directory)-8 b(.)p eop end
 %%Page: 78 84
-78 83 bop 150 -116 a Ft(78)2572 b(Bash)31 b(Reference)g(Man)m(ual)154
-299 y(20.)61 b(A)31 b(non-in)m(teractiv)m(e)h(shell)d(exits)i(with)e
-(an)i(error)g(status)g(if)f(a)h(v)-5 b(ariable)30 b(assignmen)m(t)h
-(error)f(o)s(ccurs)330 408 y(when)38 b(no)h(command)g(name)g(follo)m
-(ws)g(the)g(assignmen)m(t)g(statemen)m(ts.)69 b(A)39
-b(v)-5 b(ariable)38 b(assignmen)m(t)330 518 y(error)30
-b(o)s(ccurs,)g(for)g(example,)h(when)e(trying)h(to)h(assign)e(a)i(v)-5
-b(alue)30 b(to)h(a)g(readonly)e(v)-5 b(ariable.)154 653
-y(21.)61 b(A)43 b(non-in)m(teractiv)m(e)g(shell)e(exits)i(with)f(an)g
-(error)h(status)g(if)f(the)h(iteration)f(v)-5 b(ariable)42
-b(in)g(a)h Fs(for)330 762 y Ft(statemen)m(t)32 b(or)f(the)f(selection)g
-(v)-5 b(ariable)30 b(in)f(a)h Fs(select)f Ft(statemen)m(t)j(is)e(a)g
-(readonly)g(v)-5 b(ariable.)154 897 y(22.)61 b(Pro)s(cess)30
-b(substitution)e(is)i(not)g(a)m(v)-5 b(ailable.)154 1031
-y(23.)61 b(Assignmen)m(t)31 b(statemen)m(ts)h(preceding)e
-Fl(posix)h Ft(1003.2)i(sp)s(ecial)d(builtins)d(p)s(ersist)j(in)f(the)j
-(shell)d(en-)330 1141 y(vironmen)m(t)h(after)g(the)h(builtin)c
-(completes.)154 1275 y(24.)61 b(Assignmen)m(t)34 b(statemen)m(ts)i
-(preceding)e(shell)e(function)h(calls)h(p)s(ersist)f(in)g(the)i(shell)d
-(en)m(vironmen)m(t)330 1385 y(after)f(the)f(function)g(returns,)f(as)i
-(if)e(a)i Fl(posix)e Ft(sp)s(ecial)g(builtin)e(command)j(had)g(b)s(een)
-g(executed.)154 1519 y(25.)61 b(The)38 b Fs(export)f
-Ft(and)g Fs(readonly)f Ft(builtin)f(commands)j(displa)m(y)f(their)g
-(output)h(in)f(the)i(format)g(re-)330 1629 y(quired)29
-b(b)m(y)h Fl(posix)f Ft(1003.2.)154 1763 y(26.)61 b(The)30
-b Fs(trap)f Ft(builtin)e(displa)m(ys)h(signal)i(names)g(without)f(the)i
-(leading)e Fs(SIG)p Ft(.)154 1898 y(27.)61 b(The)24 b
-Fs(trap)g Ft(builtin)d(do)s(esn't)k(c)m(hec)m(k)h(the)f(\014rst)f
-(argumen)m(t)h(for)g(a)g(p)s(ossible)d(signal)i(sp)s(eci\014cation)g
-(and)330 2007 y(rev)m(ert)32 b(the)f(signal)f(handling)f(to)j(the)g
-(original)d(disp)s(osition)f(if)i(it)h(is.)43 b(If)30
-b(users)h(w)m(an)m(t)h(to)g(reset)g(the)330 2117 y(handler)j(for)h(a)i
-(giv)m(en)e(signal)g(to)h(the)g(original)e(disp)s(osition,)h(they)h
-(should)d(use)j(`)p Fs(-)p Ft(')g(as)g(the)g(\014rst)330
-2227 y(argumen)m(t.)154 2361 y(28.)61 b(The)21 b Fs(.)h
-Ft(and)f Fs(source)f Ft(builtins)e(do)j(not)h(searc)m(h)h(the)f(curren)
-m(t)f(directory)g(for)h(the)g(\014lename)e(argumen)m(t)330
-2471 y(if)29 b(it)h(is)g(not)g(found)f(b)m(y)i(searc)m(hing)f
-Fs(PATH)p Ft(.)154 2605 y(29.)61 b(Subshells)18 b(spa)m(wned)j(to)h
-(execute)g(command)g(substitutions)d(inherit)g(the)i(v)-5
-b(alue)21 b(of)h(the)f(`)p Fs(-e)p Ft(')g(option)330
-2715 y(from)34 b(the)h(paren)m(t)g(shell.)53 b(When)34
-b(not)i(in)d Fl(posix)h Ft(mo)s(de,)i(Bash)f(clears)g(the)g(`)p
-Fs(-e)p Ft(')f(option)h(in)e(suc)m(h)330 2824 y(subshells.)154
-2959 y(30.)61 b(Alias)29 b(expansion)h(is)f(alw)m(a)m(ys)i(enabled,)e
-(ev)m(en)j(in)d(non-in)m(teractiv)m(e)i(shells.)154 3093
-y(31.)61 b(When)43 b(the)g Fs(alias)f Ft(builtin)d(displa)m(ys)j(alias)
-g(de\014nitions,)i(it)e(do)s(es)h(not)g(displa)m(y)f(them)h(with)f(a)
-330 3203 y(leading)29 b(`)p Fs(alias)g Ft(')i(unless)e(the)h(`)p
-Fs(-p)p Ft(')g(option)g(is)g(supplied.)154 3337 y(32.)61
-b(When)40 b(the)g Fs(set)f Ft(builtin)e(is)i(in)m(v)m(ok)m(ed)h
-(without)f(options,)j(it)e(do)s(es)g(not)g(displa)m(y)e(shell)g
+TeXDict begin 78 83 bop 150 -116 a Ft(78)2572 b(Bash)31
+b(Reference)g(Man)m(ual)154 299 y(20.)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
+408 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
+518 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 653 y(21.)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 Fs(for)330 762 y Ft(statemen)m(t)32
+b(or)f(the)f(selection)i(v)-5 b(ariable)32 b(in)e(a)g
+Fs(select)f Ft(statemen)m(t)j(is)f(a)f(readonly)h(v)-5
+b(ariable.)154 897 y(22.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not)f
+(a)m(v)-5 b(ailable.)154 1031 y(23.)61 b(Assignmen)m(t)32
+b(statemen)m(ts)g(preceding)f Fl(posix)g Ft(1003.2)i(sp)s(ecial)f
+(builtins)e(p)s(ersist)h(in)f(the)i(shell)f(en-)330 1141
+y(vironmen)m(t)g(after)f(the)h(builtin)f(completes.)154
+1275 y(24.)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 1385 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h
+Fl(posix)e Ft(sp)s(ecial)i(builtin)f(command)g(had)g(b)s(een)g
+(executed.)154 1519 y(25.)61 b(The)38 b Fs(export)f Ft(and)g
+Fs(readonly)f Ft(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in)
+g(the)h(format)g(re-)330 1629 y(quired)30 b(b)m(y)g Fl(posix)f
+Ft(1003.2.)154 1763 y(26.)61 b(The)30 b Fs(trap)f Ft(builtin)h(displa)m
+(ys)g(signal)i(names)e(without)g(the)h(leading)g Fs(SIG)p
+Ft(.)154 1898 y(27.)61 b(The)24 b Fs(trap)g Ft(builtin)g(do)s(esn't)h
+(c)m(hec)m(k)h(the)f(\014rst)f(argumen)m(t)h(for)g(a)g(p)s(ossible)f
+(signal)i(sp)s(eci\014cation)g(and)330 2007 y(rev)m(ert)32
+b(the)f(signal)h(handling)f(to)h(the)g(original)g(disp)s(osition)f(if)g
+(it)h(is.)44 b(If)30 b(users)h(w)m(an)m(t)h(to)g(reset)g(the)330
+2117 y(handler)k(for)g(a)i(giv)m(en)f(signal)h(to)f(the)g(original)h
+(disp)s(osition,)h(they)e(should)e(use)i(`)p Fs(-)p Ft(')g(as)g(the)g
+(\014rst)330 2227 y(argumen)m(t.)154 2361 y(28.)61 b(The)21
+b Fs(.)h Ft(and)f Fs(source)f Ft(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
+2471 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g
+Fs(PATH)p Ft(.)154 2605 y(29.)61 b(Subshells)20 b(spa)m(wned)h(to)h
+(execute)g(command)g(substitutions)f(inherit)g(the)g(v)-5
+b(alue)22 b(of)g(the)f(`)p Fs(-e)p Ft(')g(option)330
+2715 y(from)34 b(the)h(paren)m(t)g(shell.)55 b(When)34
+b(not)i(in)e Fl(posix)g Ft(mo)s(de,)i(Bash)f(clears)h(the)f(`)p
+Fs(-e)p Ft(')f(option)i(in)e(suc)m(h)330 2824 y(subshells.)154
+2959 y(30.)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 3093
+y(31.)61 b(When)43 b(the)g Fs(alias)f Ft(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 3203 y(leading)31 b(`)p Fs(alias)e Ft(')i(unless)f(the)g(`)p
+Fs(-p)p Ft(')g(option)h(is)g(supplied.)154 3337 y(32.)61
+b(When)40 b(the)g Fs(set)f Ft(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 3447 y(names)30 b(and)g(de\014nitions.)154
-3582 y(33.)61 b(When)36 b(the)g Fs(set)g Ft(builtin)d(is)i(in)m(v)m(ok)
-m(ed)i(without)e(options,)i(it)f(displa)m(ys)e(v)-5 b(ariable)35
-b(v)-5 b(alues)36 b(without)330 3691 y(quotes,)26 b(unless)c(they)j
-(con)m(tain)f(shell)e(metac)m(haracters,)28 b(ev)m(en)d(if)e(the)h
-(result)f(con)m(tains)i(nonprin)m(ting)330 3801 y(c)m(haracters.)154
-3935 y(34.)61 b(When)35 b(the)g Fs(cd)f Ft(builtin)e(is)i(in)m(v)m(ok)m
-(ed)i(in)d Fq(logical)38 b Ft(mo)s(de,)e(and)f(the)g(pathname)g
-(constructed)g(from)330 4045 y Fs($PWD)i Ft(and)h(the)h(directory)e
-(name)i(supplied)c(as)k(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g
-(an)f(existing)330 4154 y(directory)-8 b(,)31 b Fs(cd)e
-Ft(will)f(fail)h(instead)h(of)g(falling)e(bac)m(k)k(to)f
-Fq(ph)m(ysical)h Ft(mo)s(de.)275 4314 y(There)d(is)h(other)g
-Fl(posix)g Ft(1003.2)j(b)s(eha)m(vior)c(that)i(Bash)g(do)s(es)f(not)h
-(implemen)m(t.)39 b(Sp)s(eci\014cally:)199 4448 y(1.)61
-b(Assignmen)m(t)25 b(statemen)m(ts)j(a\013ect)f(the)f(execution)f(en)m
-(vironmen)m(t)h(of)g(all)e(builtins,)f(not)j(just)f(sp)s(ecial)330
-4558 y(ones.)199 4692 y(2.)61 b(When)20 b(a)h(subshell)d(is)i(created)h
-(to)h(execute)g(a)f(shell)d(script)i(with)f(execute)j(p)s(ermission,)e
-(but)g(without)330 4802 y(a)35 b(leading)f(`)p Fs(#!)p
-Ft(',)i(Bash)g(sets)f Fs($0)f Ft(to)i(the)f(full)e(pathname)i(of)g(the)
-g(script)f(as)h(found)f(b)m(y)h(searc)m(hing)330 4912
+3582 y(33.)61 b(When)36 b(the)g Fs(set)g Ft(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 3691 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 3801 y(c)m(haracters.)154
+3935 y(34.)61 b(When)35 b(the)g Fs(cd)f Ft(builtin)h(is)g(in)m(v)m(ok)m
+(ed)i(in)d Fq(logical)41 b Ft(mo)s(de,)36 b(and)f(the)g(pathname)g
+(constructed)g(from)330 4045 y Fs($PWD)i Ft(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 4154 y(directory)-8 b(,)32 b Fs(cd)d
+Ft(will)i(fail)g(instead)g(of)f(falling)h(bac)m(k)h(to)f
+Fq(ph)m(ysical)j Ft(mo)s(de.)275 4314 y(There)29 b(is)i(other)f
+Fl(posix)g Ft(1003.2)j(b)s(eha)m(vior)d(that)h(Bash)g(do)s(es)f(not)h
+(implemen)m(t.)41 b(Sp)s(eci\014cally:)199 4448 y(1.)61
+b(Assignmen)m(t)26 b(statemen)m(ts)i(a\013ect)f(the)f(execution)g(en)m
+(vironmen)m(t)h(of)f(all)g(builtins,)g(not)g(just)f(sp)s(ecial)330
+4558 y(ones.)199 4692 y(2.)61 b(When)20 b(a)h(subshell)f(is)h(created)g
+(to)h(execute)g(a)f(shell)f(script)h(with)f(execute)i(p)s(ermission,)g
+(but)e(without)330 4802 y(a)35 b(leading)h(`)p Fs(#!)p
+Ft(',)g(Bash)g(sets)f Fs($0)f Ft(to)i(the)f(full)g(pathname)g(of)g(the)
+g(script)g(as)g(found)f(b)m(y)h(searc)m(hing)330 4912
 y Fs($PATH)p Ft(,)29 b(rather)h(than)h(the)f(command)g(as)h(t)m(yp)s
 (ed)f(b)m(y)g(the)h(user.)199 5046 y(3.)61 b(When)28
-b(using)e(`)p Fs(.)p Ft(')i(to)g(source)g(a)h(shell)d(script)g(found)h
-(in)f Fs($PATH)p Ft(,)i(bash)f(c)m(hec)m(ks)i(execute)g(p)s(ermission)
-330 5156 y(bits)g(rather)i(than)f(read)g(p)s(ermission)d(bits,)j(just)g
-(as)g(if)f(it)h(w)m(ere)h(searc)m(hing)f(for)h(a)f(command.)p
-eop
+b(using)f(`)p Fs(.)p Ft(')h(to)g(source)g(a)h(shell)f(script)f(found)g
+(in)g Fs($PATH)p Ft(,)h(bash)f(c)m(hec)m(ks)i(execute)g(p)s(ermission)
+330 5156 y(bits)h(rather)h(than)f(read)g(p)s(ermission)f(bits,)i(just)f
+(as)g(if)g(it)h(w)m(ere)g(searc)m(hing)g(for)g(a)f(command.)p
+eop end
 %%Page: 79 85
-79 84 bop 150 -116 a Ft(Chapter)30 b(7:)41 b(Job)30 b(Con)m(trol)2570
-b(79)150 299 y Fo(7)80 b(Job)54 b(Con)l(trol)275 544
-y Ft(This)33 b(c)m(hapter)j(discusses)e(what)h(job)g(con)m(trol)h(is,)g
-(ho)m(w)f(it)g(w)m(orks,)i(and)e(ho)m(w)g(Bash)h(allo)m(ws)e(y)m(ou)i
-(to)150 653 y(access)c(its)d(facilities.)150 919 y Fr(7.1)68
-b(Job)45 b(Con)l(trol)h(Basics)275 1167 y Ft(Job)30 b(con)m(trol)i
-(refers)f(to)h(the)g(abilit)m(y)d(to)j(selectiv)m(ely)g(stop)f(\(susp)s
-(end\))f(the)h(execution)h(of)f(pro)s(cesses)150 1277
-y(and)24 b(con)m(tin)m(ue)h(\(resume\))g(their)f(execution)h(at)g(a)h
-(later)e(p)s(oin)m(t.)38 b(A)25 b(user)f(t)m(ypically)g(emplo)m(ys)g
-(this)g(facilit)m(y)150 1386 y(via)30 b(an)g(in)m(teractiv)m(e)h(in)m
-(terface)g(supplied)d(join)m(tly)h(b)m(y)h(the)h(system's)f(terminal)f
-(driv)m(er)g(and)h(Bash.)275 1524 y(The)23 b(shell)g(asso)s(ciates)i(a)
-g Fq(job)h Ft(with)d(eac)m(h)j(pip)s(eline.)35 b(It)25
-b(k)m(eeps)f(a)h(table)g(of)f(curren)m(tly)g(executing)g(jobs,)150
-1634 y(whic)m(h)32 b(ma)m(y)j(b)s(e)e(listed)f(with)g(the)i
+TeXDict begin 79 84 bop 150 -116 a Ft(Chapter)30 b(7:)41
+b(Job)30 b(Con)m(trol)2571 b(79)150 299 y Fo(7)80 b(Job)54
+b(Con)l(trol)275 544 y Ft(This)34 b(c)m(hapter)i(discusses)f(what)g
+(job)g(con)m(trol)i(is,)g(ho)m(w)e(it)h(w)m(orks,)h(and)e(ho)m(w)g
+(Bash)h(allo)m(ws)g(y)m(ou)g(to)150 653 y(access)c(its)e(facilities.)
+150 919 y Fr(7.1)68 b(Job)45 b(Con)l(trol)h(Basics)275
+1167 y Ft(Job)30 b(con)m(trol)j(refers)e(to)h(the)g(abilit)m(y)g(to)g
+(selectiv)m(ely)j(stop)c(\(susp)s(end\))f(the)h(execution)i(of)e(pro)s
+(cesses)150 1277 y(and)24 b(con)m(tin)m(ue)i(\(resume\))f(their)g
+(execution)h(at)f(a)h(later)f(p)s(oin)m(t.)39 b(A)25
+b(user)f(t)m(ypically)j(emplo)m(ys)e(this)g(facilit)m(y)150
+1386 y(via)31 b(an)f(in)m(teractiv)m(e)j(in)m(terface)f(supplied)e
+(join)m(tly)h(b)m(y)f(the)h(system's)f(terminal)h(driv)m(er)f(and)g
+(Bash.)275 1524 y(The)23 b(shell)i(asso)s(ciates)h(a)f
+Fq(job)h Ft(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
+1634 y(whic)m(h)33 b(ma)m(y)i(b)s(e)e(listed)h(with)f(the)h
 Fs(jobs)f Ft(command.)50 b(When)33 b(Bash)h(starts)g(a)g(job)g(async)m
-(hronously)-8 b(,)33 b(it)150 1744 y(prin)m(ts)c(a)i(line)d(that)j(lo)s
-(oks)f(lik)m(e:)390 1882 y Fs([1])47 b(25647)150 2020
-y Ft(indicating)31 b(that)j(this)e(job)h(is)f(job)h(n)m(um)m(b)s(er)f
-(1)i(and)f(that)g(the)h(pro)s(cess)f Fl(id)g Ft(of)g(the)h(last)f(pro)s
-(cess)g(in)f(the)150 2129 y(pip)s(eline)39 b(asso)s(ciated)k(with)e
-(this)g(job)h(is)g(25647.)78 b(All)41 b(of)i(the)g(pro)s(cesses)f(in)f
-(a)i(single)e(pip)s(eline)e(are)150 2239 y(mem)m(b)s(ers)30
+(hronously)-8 b(,)34 b(it)150 1744 y(prin)m(ts)c(a)h(line)f(that)h(lo)s
+(oks)g(lik)m(e:)390 1882 y Fs([1])47 b(25647)150 2020
+y Ft(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 Fl(id)g Ft(of)g(the)h(last)g(pro)s
+(cess)f(in)g(the)150 2129 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 2239 y(mem)m(b)s(ers)30
 b(of)g(the)h(same)f(job.)41 b(Bash)30 b(uses)g(the)h
-Fq(job)h Ft(abstraction)e(as)h(the)g(basis)e(for)h(job)g(con)m(trol.)
-275 2377 y(T)-8 b(o)23 b(facilitate)g(the)g(implemen)m(tation)f(of)i
-(the)f(user)f(in)m(terface)i(to)g(job)f(con)m(trol,)i(the)e(op)s
-(erating)g(system)150 2486 y(main)m(tains)i(the)h(notion)g(of)g(a)g
-(curren)m(t)g(terminal)e(pro)s(cess)i(group)g Fl(id)p
-Ft(.)39 b(Mem)m(b)s(ers)26 b(of)g(this)f(pro)s(cess)g(group)150
+Fq(job)h Ft(abstraction)f(as)g(the)g(basis)f(for)g(job)g(con)m(trol.)
+275 2377 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 2486 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 Fl(id)p
+Ft(.)39 b(Mem)m(b)s(ers)26 b(of)g(this)g(pro)s(cess)f(group)150
 2596 y(\(pro)s(cesses)h(whose)g(pro)s(cess)g(group)g
-Fl(id)g Ft(is)g(equal)g(to)h(the)f(curren)m(t)g(terminal)f(pro)s(cess)h
+Fl(id)g Ft(is)h(equal)g(to)g(the)f(curren)m(t)g(terminal)h(pro)s(cess)f
 (group)f Fl(id)p Ft(\))i(receiv)m(e)150 2706 y(k)m(eyb)s
-(oard-generated)22 b(signals)e(suc)m(h)g(as)h Fs(SIGINT)p
-Ft(.)36 b(These)21 b(pro)s(cesses)g(are)g(said)f(to)h(b)s(e)g(in)e(the)
-i(foreground.)150 2815 y(Bac)m(kground)38 b(pro)s(cesses)f(are)h(those)
-g(whose)f(pro)s(cess)g(group)g Fl(id)h Ft(di\013ers)e(from)h(the)g
-(terminal's;)j(suc)m(h)150 2925 y(pro)s(cesses)24 b(are)g(imm)m(une)f
-(to)h(k)m(eyb)s(oard-generated)h(signals.)38 b(Only)22
-b(foreground)h(pro)s(cesses)h(are)g(allo)m(w)m(ed)150
-3034 y(to)35 b(read)f(from)f(or)h(write)f(to)i(the)f(terminal.)50
-b(Bac)m(kground)34 b(pro)s(cesses)g(whic)m(h)f(attempt)i(to)g(read)e
-(from)150 3144 y(\(write)d(to\))h(the)g(terminal)e(are)i(sen)m(t)g(a)f
-Fs(SIGTTIN)f Ft(\()p Fs(SIGTTOU)p Ft(\))g(signal)g(b)m(y)h(the)h
-(terminal)e(driv)m(er,)g(whic)m(h,)150 3254 y(unless)g(caugh)m(t,)i
-(susp)s(ends)d(the)j(pro)s(cess.)275 3392 y(If)j(the)i(op)s(erating)f
-(system)g(on)h(whic)m(h)e(Bash)h(is)g(running)d(supp)s(orts)i(job)h
-(con)m(trol,)i(Bash)f(con)m(tains)150 3501 y(facilities)26
-b(to)j(use)f(it.)39 b(T)m(yping)27 b(the)h Fq(susp)s(end)h
-Ft(c)m(haracter)h(\(t)m(ypically)d(`)p Fs(^Z)p Ft(',)i(Con)m(trol-Z\))f
-(while)e(a)i(pro)s(cess)150 3611 y(is)41 b(running)f(causes)j(that)g
-(pro)s(cess)f(to)h(b)s(e)f(stopp)s(ed)f(and)h(returns)f(con)m(trol)i
-(to)g(Bash.)77 b(T)m(yping)41 b(the)150 3720 y Fq(dela)m(y)m(ed)k(susp)
-s(end)g Ft(c)m(haracter)h(\(t)m(ypically)d(`)p Fs(^Y)p
-Ft(',)48 b(Con)m(trol-Y\))d(causes)f(the)h(pro)s(cess)e(to)i(b)s(e)f
-(stopp)s(ed)150 3830 y(when)26 b(it)h(attempts)i(to)f(read)f(input)f
-(from)g(the)i(terminal,)f(and)g(con)m(trol)g(to)h(b)s(e)f(returned)f
-(to)j(Bash.)39 b(The)150 3940 y(user)e(then)g(manipulates)f(the)i
-(state)h(of)f(this)e(job,)k(using)c(the)i Fs(bg)f Ft(command)g(to)h
-(con)m(tin)m(ue)g(it)f(in)g(the)150 4049 y(bac)m(kground,)h(the)f
-Fs(fg)g Ft(command)f(to)i(con)m(tin)m(ue)f(it)f(in)f(the)i(foreground,)
-h(or)f(the)g Fs(kill)f Ft(command)g(to)150 4159 y(kill)24
-b(it.)39 b(A)27 b(`)p Fs(^Z)p Ft(')g(tak)m(es)h(e\013ect)g(immediately)
--8 b(,)26 b(and)g(has)h(the)f(additional)f(side)g(e\013ect)k(of)d
-(causing)g(p)s(ending)150 4268 y(output)k(and)g(t)m(yp)s(eahead)h(to)g
+(oard-generated)22 b(signals)g(suc)m(h)e(as)h Fs(SIGINT)p
+Ft(.)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 2815 y(Bac)m(kground)38 b(pro)s(cesses)f(are)h(those)
+g(whose)f(pro)s(cess)g(group)g Fl(id)h Ft(di\013ers)f(from)g(the)g
+(terminal's;)42 b(suc)m(h)150 2925 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
+3034 y(to)35 b(read)f(from)f(or)h(write)g(to)h(the)f(terminal.)52
+b(Bac)m(kground)34 b(pro)s(cesses)g(whic)m(h)g(attempt)h(to)g(read)e
+(from)150 3144 y(\(write)e(to\))g(the)g(terminal)g(are)g(sen)m(t)g(a)f
+Fs(SIGTTIN)f Ft(\()p Fs(SIGTTOU)p Ft(\))g(signal)i(b)m(y)f(the)h
+(terminal)g(driv)m(er,)f(whic)m(h,)150 3254 y(unless)g(caugh)m(t,)h
+(susp)s(ends)d(the)j(pro)s(cess.)275 3392 y(If)j(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 3501 y(facilities)30
+b(to)f(use)f(it.)40 b(T)m(yping)28 b(the)g Fq(susp)s(end)h
+Ft(c)m(haracter)h(\(t)m(ypically)g(`)p Fs(^Z)p Ft(',)f(Con)m(trol-Z\))g
+(while)f(a)g(pro)s(cess)150 3611 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 3720 y Fq(dela)m(y)m(ed)k(susp)
+s(end)f Ft(c)m(haracter)h(\(t)m(ypically)g(`)p Fs(^Y)p
+Ft(',)i(Con)m(trol-Y\))e(causes)e(the)h(pro)s(cess)e(to)i(b)s(e)f
+(stopp)s(ed)150 3830 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 3940 y(user)e(then)g(manipulates)h(the)g
+(state)h(of)f(this)f(job,)j(using)d(the)h Fs(bg)f Ft(command)g(to)h
+(con)m(tin)m(ue)h(it)f(in)g(the)150 4049 y(bac)m(kground,)g(the)f
+Fs(fg)g Ft(command)f(to)i(con)m(tin)m(ue)g(it)f(in)f(the)h(foreground,)
+h(or)f(the)g Fs(kill)f Ft(command)g(to)150 4159 y(kill)27
+b(it.)40 b(A)27 b(`)p Fs(^Z)p Ft(')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 4268 y(output)j(and)g(t)m(yp)s(eahead)h(to)g
 (b)s(e)e(discarded.)275 4406 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)f(the)i(shell.)45
+(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 Fs(\045)p Ft(')f(in)m(tro)s(duces)150
 4516 y(a)e(job)f(name.)275 4654 y(Job)h(n)m(um)m(b)s(er)f
 Fs(n)h Ft(ma)m(y)h(b)s(e)f(referred)g(to)h(as)g(`)p Fs(\045n)p
-Ft('.)44 b(The)31 b(sym)m(b)s(ols)f(`)p Fs(\045\045)p
-Ft(')i(and)f(`)p Fs(\045+)p Ft(')g(refer)h(to)g(the)g(shell's)150
-4764 y(notion)42 b(of)g(the)h(curren)m(t)f(job,)j(whic)m(h)c(is)g(the)h
-(last)h(job)e(stopp)s(ed)h(while)e(it)i(w)m(as)g(in)f(the)i(foreground)
-150 4873 y(or)36 b(started)h(in)e(the)h(bac)m(kground.)58
-b(The)36 b(previous)f(job)g(ma)m(y)i(b)s(e)f(referenced)g(using)f(`)p
-Fs(\045-)p Ft('.)58 b(In)35 b(output)150 4983 y(p)s(ertaining)24
-b(to)j(jobs)e(\(e.g.,)k(the)d(output)g(of)g(the)g Fs(jobs)f
-Ft(command\),)j(the)e(curren)m(t)g(job)g(is)f(alw)m(a)m(ys)h(\015agged)
-150 5092 y(with)j(a)i(`)p Fs(+)p Ft(',)g(and)e(the)i(previous)e(job)h
-(with)f(a)i(`)p Fs(-)p Ft('.)275 5230 y(A)38 b(job)g(ma)m(y)h(also)f(b)
-s(e)g(referred)f(to)j(using)c(a)j(pre\014x)e(of)i(the)f(name)h(used)e
-(to)i(start)g(it,)h(or)f(using)e(a)150 5340 y(substring)28
-b(that)j(app)s(ears)f(in)f(its)h(command)g(line.)39 b(F)-8
-b(or)31 b(example,)f(`)p Fs(\045ce)p Ft(')g(refers)g(to)h(a)g(stopp)s
-(ed)e Fs(ce)h Ft(job.)p eop
+Ft('.)44 b(The)31 b(sym)m(b)s(ols)g(`)p Fs(\045\045)p
+Ft(')h(and)f(`)p Fs(\045+)p Ft(')g(refer)h(to)g(the)g(shell's)150
+4764 y(notion)43 b(of)f(the)h(curren)m(t)f(job,)j(whic)m(h)d(is)g(the)g
+(last)i(job)d(stopp)s(ed)h(while)g(it)h(w)m(as)f(in)g(the)h(foreground)
+150 4873 y(or)36 b(started)h(in)f(the)g(bac)m(kground.)58
+b(The)36 b(previous)g(job)f(ma)m(y)i(b)s(e)f(referenced)g(using)g(`)p
+Fs(\045-)p Ft('.)58 b(In)35 b(output)150 4983 y(p)s(ertaining)26
+b(to)h(jobs)e(\(e.g.,)k(the)d(output)g(of)g(the)g Fs(jobs)f
+Ft(command\),)j(the)e(curren)m(t)g(job)g(is)g(alw)m(a)m(ys)h(\015agged)
+150 5092 y(with)j(a)h(`)p Fs(+)p Ft(',)g(and)e(the)i(previous)f(job)g
+(with)g(a)h(`)p Fs(-)p Ft('.)275 5230 y(A)38 b(job)g(ma)m(y)h(also)g(b)
+s(e)f(referred)f(to)j(using)d(a)i(pre\014x)e(of)i(the)f(name)h(used)e
+(to)i(start)g(it,)i(or)e(using)f(a)150 5340 y(substring)29
+b(that)i(app)s(ears)f(in)g(its)h(command)f(line.)41 b(F)-8
+b(or)31 b(example,)g(`)p Fs(\045ce)p Ft(')f(refers)g(to)h(a)g(stopp)s
+(ed)e Fs(ce)h Ft(job.)p eop end
 %%Page: 80 86
-80 85 bop 150 -116 a Ft(80)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y(Using)26 b(`)p Fs(\045?ce)p Ft(',)h(on)f(the)h(other)g(hand,)g
-(refers)f(to)h(an)m(y)g(job)g(con)m(taining)f(the)h(string)e(`)p
-Fs(ce)p Ft(')i(in)e(its)h(command)150 408 y(line.)39
-b(If)30 b(the)h(pre\014x)e(or)h(substring)e(matc)m(hes)k(more)e(than)h
-(one)f(job,)h(Bash)f(rep)s(orts)g(an)g(error.)275 544
-y(Simply)e(naming)i(a)h(job)g(can)g(b)s(e)f(used)h(to)g(bring)e(it)i
-(in)m(to)g(the)g(foreground:)41 b(`)p Fs(\0451)p Ft(')31
-b(is)f(a)i(synon)m(ym)e(for)150 654 y(`)p Fs(fg)g(\0451)p
-Ft(',)i(bringing)d(job)i(1)g(from)g(the)h(bac)m(kground)f(in)m(to)h
-(the)f(foreground.)44 b(Similarly)-8 b(,)28 b(`)p Fs(\0451)i(&)p
-Ft(')i(resumes)150 763 y(job)e(1)h(in)e(the)h(bac)m(kground,)h(equiv)-5
-b(alen)m(t)30 b(to)h(`)p Fs(bg)f(\0451)p Ft(')275 899
-y(The)g(shell)g(learns)g(immediately)g(whenev)m(er)h(a)h(job)f(c)m
-(hanges)h(state.)45 b(Normally)-8 b(,)31 b(Bash)g(w)m(aits)h(un)m(til)
-150 1009 y(it)24 b(is)g(ab)s(out)g(to)i(prin)m(t)d(a)i(prompt)f(b)s
-(efore)g(rep)s(orting)g(c)m(hanges)h(in)f(a)h(job's)f(status)h(so)g(as)
+TeXDict begin 80 85 bop 150 -116 a Ft(80)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y(Using)c(`)p Fs(\045?ce)p
+Ft(',)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 Fs(ce)p Ft(')h(in)f(its)h(command)150
+408 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
+544 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 Fs(\0451)p Ft(')31
+b(is)g(a)h(synon)m(ym)e(for)150 654 y(`)p Fs(fg)g(\0451)p
+Ft(',)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 Fs(\0451)e(&)p
+Ft(')i(resumes)150 763 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5
+b(alen)m(t)32 b(to)f(`)p Fs(bg)f(\0451)p Ft(')275 899
+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 1009 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 1119 y(an)m(y)g(other)g(output.)39
-b(If)24 b(the)i(`)p Fs(-b)p Ft(')e(option)h(to)g(the)g
-Fs(set)f Ft(builtin)e(is)i(enabled,)h(Bash)g(rep)s(orts)f(suc)m(h)h(c)m
-(hanges)150 1228 y(immediately)j(\(see)i(Section)f(4.3)h([The)f(Set)h
-(Builtin],)d(page)j(50\).)42 b(An)m(y)29 b(trap)g(on)g
-Fs(SIGCHLD)f Ft(is)g(executed)150 1338 y(for)i(eac)m(h)i(c)m(hild)c
-(pro)s(cess)i(that)h(exits.)275 1474 y(If)k(an)h(attempt)h(to)g(exit)f
-(Bash)h(is)e(made)h(while)e(jobs)i(are)g(stopp)s(ed,)h(the)f(shell)f
-(prin)m(ts)f(a)j(message)150 1583 y(w)m(arning)25 b(that)i(there)f(are)
+b(If)24 b(the)i(`)p Fs(-b)p Ft(')e(option)i(to)f(the)g
+Fs(set)f Ft(builtin)h(is)g(enabled,)h(Bash)f(rep)s(orts)f(suc)m(h)h(c)m
+(hanges)150 1228 y(immediately)31 b(\(see)f(Section)g(4.3)g([The)f(Set)
+h(Builtin],)g(page)g(50\).)42 b(An)m(y)29 b(trap)g(on)g
+Fs(SIGCHLD)f Ft(is)h(executed)150 1338 y(for)h(eac)m(h)i(c)m(hild)e
+(pro)s(cess)g(that)h(exits.)275 1474 y(If)k(an)h(attempt)h(to)g(exit)g
+(Bash)g(is)f(made)g(while)g(jobs)g(are)g(stopp)s(ed,)h(the)f(shell)h
+(prin)m(ts)e(a)i(message)150 1583 y(w)m(arning)26 b(that)h(there)f(are)
 g(stopp)s(ed)g(jobs.)38 b(The)26 b Fs(jobs)f Ft(command)h(ma)m(y)h
-(then)e(b)s(e)h(used)f(to)i(insp)s(ect)e(their)150 1693
-y(status.)57 b(If)35 b(a)h(second)g(attempt)g(to)h(exit)e(is)g(made)h
-(without)e(an)i(in)m(terv)m(ening)f(command,)h(Bash)g(do)s(es)150
-1802 y(not)31 b(prin)m(t)e(another)h(w)m(arning,)g(and)f(the)i(stopp)s
+(then)e(b)s(e)h(used)f(to)i(insp)s(ect)f(their)150 1693
+y(status.)57 b(If)35 b(a)h(second)g(attempt)g(to)h(exit)f(is)g(made)g
+(without)f(an)h(in)m(terv)m(ening)h(command,)f(Bash)g(do)s(es)150
+1802 y(not)31 b(prin)m(t)f(another)g(w)m(arning,)h(and)e(the)i(stopp)s
 (ed)e(jobs)h(are)h(terminated.)150 2063 y Fr(7.2)68 b(Job)45
 b(Con)l(trol)h(Builtins)150 2308 y Fs(bg)870 2443 y(bg)h([)p
 Fj(jobspec)11 b Fs(])630 2578 y Ft(Resume)28 b(the)g(susp)s(ended)d
-(job)j Fq(jobsp)s(ec)k Ft(in)27 b(the)h(bac)m(kground,)h(as)f(if)f(it)g
-(had)g(b)s(een)g(started)630 2688 y(with)k(`)p Fs(&)p
-Ft('.)45 b(If)31 b Fq(jobsp)s(ec)37 b Ft(is)31 b(not)h(supplied,)d(the)
-j(curren)m(t)g(job)f(is)g(used.)45 b(The)31 b(return)g(status)630
-2797 y(is)h(zero)h(unless)e(it)h(is)g(run)f(when)h(job)g(con)m(trol)h
-(is)f(not)h(enabled,)g(or,)g(when)f(run)f(with)g(job)630
-2907 y(con)m(trol)37 b(enabled,)h(if)e Fq(jobsp)s(ec)42
+(job)j Fq(jobsp)s(ec)k Ft(in)c(the)g(bac)m(kground,)h(as)f(if)g(it)g
+(had)f(b)s(een)g(started)630 2688 y(with)32 b(`)p Fs(&)p
+Ft('.)45 b(If)31 b Fq(jobsp)s(ec)37 b Ft(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
+2797 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
+2907 y(con)m(trol)38 b(enabled,)h(if)e Fq(jobsp)s(ec)42
 b Ft(w)m(as)37 b(not)h(found)d(or)i Fq(jobsp)s(ec)42
-b Ft(sp)s(eci\014es)36 b(a)h(job)g(that)h(w)m(as)630
-3017 y(started)31 b(without)e(job)h(con)m(trol.)150 3177
+b Ft(sp)s(eci\014es)37 b(a)g(job)g(that)h(w)m(as)630
+3017 y(started)31 b(without)f(job)g(con)m(trol.)150 3177
 y Fs(fg)870 3312 y(fg)47 b([)p Fj(jobspec)11 b Fs(])630
 3448 y Ft(Resume)43 b(the)g(job)g Fq(jobsp)s(ec)48 b
-Ft(in)42 b(the)h(foreground)g(and)f(mak)m(e)j(it)d(the)i(curren)m(t)f
-(job.)78 b(If)630 3557 y Fq(jobsp)s(ec)41 b Ft(is)36
-b(not)g(supplied,)f(the)h(curren)m(t)h(job)f(is)f(used.)58
-b(The)36 b(return)f(status)h(is)g(that)h(of)630 3667
-y(the)d(command)g(placed)g(in)m(to)g(the)g(foreground,)g(or)g(non-zero)
-h(if)e(run)g(when)g(job)g(con)m(trol)630 3776 y(is)h(disabled)f(or,)k
-(when)d(run)g(with)g(job)h(con)m(trol)g(enabled,)h Fq(jobsp)s(ec)k
-Ft(do)s(es)35 b(not)h(sp)s(ecify)e(a)630 3886 y(v)-5
-b(alid)29 b(job)h(or)g Fq(jobsp)s(ec)35 b Ft(sp)s(eci\014es)29
-b(a)i(job)f(that)h(w)m(as)g(started)g(without)e(job)h(con)m(trol.)150
-4047 y Fs(jobs)870 4182 y(jobs)47 b([-lnprs])e([)p Fj(jobspec)11
-b Fs(])870 4291 y(jobs)47 b(-x)g Fj(command)56 b Fs([)p
-Fj(arguments)11 b Fs(])630 4427 y Ft(The)30 b(\014rst)f(form)h(lists)f
-(the)i(activ)m(e)g(jobs.)41 b(The)30 b(options)f(ha)m(v)m(e)j(the)e
-(follo)m(wing)f(meanings:)630 4587 y Fs(-l)384 b Ft(List)30
-b(pro)s(cess)g Fl(id)p Ft(s)g(in)f(addition)g(to)i(the)f(normal)g
-(information.)630 4748 y Fs(-n)384 b Ft(Displa)m(y)24
-b(information)f(only)i(ab)s(out)f(jobs)h(that)g(ha)m(v)m(e)i(c)m
-(hanged)e(status)h(since)1110 4858 y(the)31 b(user)e(w)m(as)i(last)f
-(noti\014ed)f(of)i(their)e(status.)630 5018 y Fs(-p)384
-b Ft(List)30 b(only)f(the)i(pro)s(cess)f Fl(id)g Ft(of)h(the)f(job's)g
-(pro)s(cess)g(group)g(leader.)630 5179 y Fs(-r)384 b
-Ft(Restrict)30 b(output)g(to)i(running)27 b(jobs.)630
-5340 y Fs(-s)384 b Ft(Restrict)30 b(output)g(to)i(stopp)s(ed)d(jobs.)p
-eop
+Ft(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 3557 y Fq(jobsp)s(ec)41 b Ft(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 3667 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
+3776 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h
+(enabled,)h Fq(jobsp)s(ec)j Ft(do)s(es)35 b(not)h(sp)s(ecify)f(a)630
+3886 y(v)-5 b(alid)31 b(job)f(or)g Fq(jobsp)s(ec)35 b
+Ft(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 4047 y Fs(jobs)870 4182 y(jobs)47
+b([-lnprs])e([)p Fj(jobspec)11 b Fs(])870 4291 y(jobs)47
+b(-x)g Fj(command)56 b Fs([)p Fj(arguments)11 b Fs(])630
+4427 y Ft(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
+4587 y Fs(-l)384 b Ft(List)31 b(pro)s(cess)f Fl(id)p
+Ft(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)630
+4748 y Fs(-n)384 b Ft(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
+4858 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f
+(status.)630 5018 y Fs(-p)384 b Ft(List)31 b(only)f(the)h(pro)s(cess)f
+Fl(id)g Ft(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)630
+5179 y Fs(-r)384 b Ft(Restrict)31 b(output)f(to)i(running)c(jobs.)630
+5340 y Fs(-s)384 b Ft(Restrict)31 b(output)f(to)i(stopp)s(ed)d(jobs.)p
+eop end
 %%Page: 81 87
-81 86 bop 150 -116 a Ft(Chapter)30 b(7:)41 b(Job)30 b(Con)m(trol)2570
-b(81)630 299 y(If)23 b Fq(jobsp)s(ec)28 b Ft(is)23 b(giv)m(en,)i
-(output)e(is)g(restricted)g(to)h(information)e(ab)s(out)h(that)h(job.)
-39 b(If)23 b Fq(jobsp)s(ec)630 408 y Ft(is)29 b(not)i(supplied,)c(the)k
-(status)g(of)f(all)f(jobs)h(is)g(listed.)630 552 y(If)h(the)g(`)p
-Fs(-x)p Ft(')g(option)g(is)f(supplied,)f Fs(jobs)h Ft(replaces)h(an)m
-(y)g Fq(jobsp)s(ec)37 b Ft(found)29 b(in)h Fq(command)35
-b Ft(or)630 662 y Fq(argumen)m(ts)41 b Ft(with)36 b(the)i(corresp)s
-(onding)d(pro)s(cess)i(group)f Fl(id)p Ft(,)k(and)c(executes)j
-Fq(command)p Ft(,)630 771 y(passing)29 b(it)h Fq(argumen)m(t)r
-Ft(s,)h(returning)e(its)g(exit)i(status.)150 949 y Fs(kill)870
-1093 y(kill)47 b([-s)g Fj(sigspec)11 b Fs(])45 b([-n)i
-Fj(signum)11 b Fs(])45 b([-)p Fj(sigspec)11 b Fs(])44
-b Fj(jobspec)57 b Fs(or)47 b Fj(pid)870 1202 y Fs(kill)g(-l)g([)p
-Fj(exit_status)11 b Fs(])630 1346 y Ft(Send)22 b(a)i(signal)e(sp)s
-(eci\014ed)g(b)m(y)h Fq(sigsp)s(ec)28 b Ft(or)c Fq(sign)m(um)e
-Ft(to)i(the)g(pro)s(cess)f(named)g(b)m(y)g(job)g(sp)s(eci\014-)630
-1456 y(cation)j Fq(jobsp)s(ec)k Ft(or)25 b(pro)s(cess)g
-Fl(id)h Fq(pid)p Ft(.)37 b Fq(sigsp)s(ec)30 b Ft(is)24
-b(either)h(a)h(case-insensitiv)m(e)f(signal)f(name)630
-1565 y(suc)m(h)30 b(as)h Fs(SIGINT)d Ft(\(with)i(or)g(without)g(the)g
-Fs(SIG)g Ft(pre\014x\))f(or)i(a)f(signal)f(n)m(um)m(b)s(er;)h
-Fq(sign)m(um)f Ft(is)630 1675 y(a)j(signal)e(n)m(um)m(b)s(er.)43
-b(If)31 b Fq(sigsp)s(ec)36 b Ft(and)31 b Fq(sign)m(um)f
-Ft(are)i(not)f(presen)m(t,)h Fs(SIGTERM)e Ft(is)g(used.)43
-b(The)630 1785 y(`)p Fs(-l)p Ft(')34 b(option)f(lists)g(the)h(signal)f
-(names.)51 b(If)33 b(an)m(y)i(argumen)m(ts)f(are)g(supplied)d(when)i(`)
-p Fs(-l)p Ft(')h(is)630 1894 y(giv)m(en,)d(the)h(names)e(of)i(the)f
-(signals)e(corresp)s(onding)g(to)j(the)f(argumen)m(ts)g(are)h(listed,)e
-(and)630 2004 y(the)e(return)f(status)h(is)f(zero.)41
-b Fq(exit)p 1797 2004 28 4 v 40 w(status)32 b Ft(is)27
-b(a)h(n)m(um)m(b)s(er)f(sp)s(ecifying)e(a)k(signal)d(n)m(um)m(b)s(er)h
-(or)630 2113 y(the)35 b(exit)g(status)g(of)g(a)g(pro)s(cess)g
-(terminated)f(b)m(y)h(a)g(signal.)53 b(The)34 b(return)g(status)h(is)f
-(zero)630 2223 y(if)c(at)i(least)f(one)h(signal)d(w)m(as)j
-(successfully)d(sen)m(t,)j(or)f(non-zero)h(if)e(an)h(error)f(o)s(ccurs)
-h(or)g(an)630 2333 y(in)m(v)-5 b(alid)28 b(option)i(is)f(encoun)m
-(tered.)150 2510 y Fs(wait)870 2654 y(wait)47 b([)p Fj(jobspec)56
-b Fs(or)47 b Fj(pid)11 b Fs(])630 2798 y Ft(W)-8 b(ait)44
-b(un)m(til)d(the)i(c)m(hild)f(pro)s(cess)g(sp)s(eci\014ed)g(b)m(y)h
-(pro)s(cess)f Fl(id)i Fq(pid)g Ft(or)f(job)g(sp)s(eci\014cation)630
-2907 y Fq(jobsp)s(ec)d Ft(exits)34 b(and)g(return)g(the)g(exit)h
-(status)g(of)g(the)g(last)f(command)g(w)m(aited)h(for.)53
-b(If)35 b(a)630 3017 y(job)g(sp)s(ec)f(is)g(giv)m(en,)i(all)e(pro)s
-(cesses)h(in)e(the)i(job)g(are)g(w)m(aited)g(for.)54
-b(If)35 b(no)f(argumen)m(ts)i(are)630 3127 y(giv)m(en,)c(all)e(curren)m
-(tly)g(activ)m(e)i(c)m(hild)e(pro)s(cesses)h(are)g(w)m(aited)g(for,)h
-(and)e(the)i(return)e(status)630 3236 y(is)g(zero.)44
-b(If)30 b(neither)g Fq(jobsp)s(ec)36 b Ft(nor)31 b Fq(pid)h
-Ft(sp)s(eci\014es)e(an)h(activ)m(e)h(c)m(hild)e(pro)s(cess)g(of)h(the)g
-(shell,)630 3346 y(the)g(return)e(status)i(is)e(127.)150
+TeXDict begin 81 86 bop 150 -116 a Ft(Chapter)30 b(7:)41
+b(Job)30 b(Con)m(trol)2571 b(81)630 299 y(If)23 b Fq(jobsp)s(ec)28
+b Ft(is)c(giv)m(en,)i(output)d(is)h(restricted)g(to)g(information)g(ab)
+s(out)f(that)h(job.)39 b(If)23 b Fq(jobsp)s(ec)630 408
+y Ft(is)30 b(not)h(supplied,)e(the)i(status)g(of)f(all)h(jobs)f(is)h
+(listed.)630 552 y(If)g(the)g(`)p Fs(-x)p Ft(')g(option)h(is)f
+(supplied,)g Fs(jobs)f Ft(replaces)i(an)m(y)f Fq(jobsp)s(ec)37
+b Ft(found)29 b(in)i Fq(command)k Ft(or)630 662 y Fq(argumen)m(ts)41
+b Ft(with)c(the)h(corresp)s(onding)e(pro)s(cess)h(group)f
+Fl(id)p Ft(,)k(and)c(executes)j Fq(command)p Ft(,)630
+771 y(passing)30 b(it)h Fq(argumen)m(t)r Ft(s,)g(returning)f(its)g
+(exit)i(status.)150 949 y Fs(kill)870 1093 y(kill)47
+b([-s)g Fj(sigspec)11 b Fs(])45 b([-n)i Fj(signum)11
+b Fs(])45 b([-)p Fj(sigspec)11 b Fs(])44 b Fj(jobspec)57
+b Fs(or)47 b Fj(pid)870 1202 y Fs(kill)g(-l)g([)p Fj(exit_status)11
+b Fs(])630 1346 y Ft(Send)22 b(a)i(signal)g(sp)s(eci\014ed)f(b)m(y)g
+Fq(sigsp)s(ec)29 b Ft(or)24 b Fq(sign)m(um)f Ft(to)h(the)g(pro)s(cess)f
+(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 1456 y(cation)k
+Fq(jobsp)s(ec)j Ft(or)25 b(pro)s(cess)g Fl(id)h Fq(pid)p
+Ft(.)38 b Fq(sigsp)s(ec)31 b Ft(is)25 b(either)h(a)g(case-insensitiv)m
+(e)i(signal)e(name)630 1565 y(suc)m(h)k(as)h Fs(SIGINT)d
+Ft(\(with)j(or)f(without)h(the)f Fs(SIG)g Ft(pre\014x\))f(or)i(a)f
+(signal)h(n)m(um)m(b)s(er;)f Fq(sign)m(um)g Ft(is)630
+1675 y(a)i(signal)g(n)m(um)m(b)s(er.)43 b(If)31 b Fq(sigsp)s(ec)37
+b Ft(and)31 b Fq(sign)m(um)g Ft(are)h(not)f(presen)m(t,)h
+Fs(SIGTERM)e Ft(is)h(used.)43 b(The)630 1785 y(`)p Fs(-l)p
+Ft(')34 b(option)g(lists)h(the)f(signal)h(names.)51 b(If)33
+b(an)m(y)i(argumen)m(ts)f(are)g(supplied)f(when)g(`)p
+Fs(-l)p Ft(')h(is)630 1894 y(giv)m(en,)e(the)g(names)e(of)i(the)f
+(signals)g(corresp)s(onding)f(to)i(the)f(argumen)m(ts)g(are)h(listed,)g
+(and)630 2004 y(the)c(return)f(status)h(is)g(zero.)41
+b Fq(exit)p 1796 2004 28 4 v 41 w(status)32 b Ft(is)c(a)g(n)m(um)m(b)s
+(er)f(sp)s(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630
+2113 y(the)35 b(exit)h(status)f(of)g(a)g(pro)s(cess)g(terminated)g(b)m
+(y)g(a)g(signal.)55 b(The)34 b(return)g(status)h(is)g(zero)630
+2223 y(if)c(at)h(least)g(one)g(signal)f(w)m(as)h(successfully)f(sen)m
+(t,)h(or)f(non-zero)h(if)f(an)g(error)f(o)s(ccurs)h(or)g(an)630
+2333 y(in)m(v)-5 b(alid)31 b(option)g(is)f(encoun)m(tered.)150
+2510 y Fs(wait)870 2654 y(wait)47 b([)p Fj(jobspec)56
+b Fs(or)47 b Fj(pid)11 b Fs(])630 2798 y Ft(W)-8 b(ait)45
+b(un)m(til)e(the)g(c)m(hild)h(pro)s(cess)e(sp)s(eci\014ed)h(b)m(y)g
+(pro)s(cess)f Fl(id)i Fq(pid)h Ft(or)e(job)g(sp)s(eci\014cation)630
+2907 y Fq(jobsp)s(ec)d Ft(exits)35 b(and)f(return)g(the)g(exit)i
+(status)f(of)g(the)g(last)g(command)f(w)m(aited)i(for.)53
+b(If)35 b(a)630 3017 y(job)g(sp)s(ec)f(is)h(giv)m(en,)i(all)f(pro)s
+(cesses)f(in)f(the)h(job)g(are)g(w)m(aited)h(for.)54
+b(If)35 b(no)f(argumen)m(ts)i(are)630 3127 y(giv)m(en,)d(all)f(curren)m
+(tly)f(activ)m(e)i(c)m(hild)f(pro)s(cesses)f(are)g(w)m(aited)h(for,)g
+(and)e(the)i(return)e(status)630 3236 y(is)h(zero.)44
+b(If)30 b(neither)h Fq(jobsp)s(ec)36 b Ft(nor)31 b Fq(pid)i
+Ft(sp)s(eci\014es)e(an)g(activ)m(e)i(c)m(hild)f(pro)s(cess)e(of)h(the)g
+(shell,)630 3346 y(the)g(return)e(status)i(is)f(127.)150
 3524 y Fs(disown)870 3667 y(disown)46 b([-ar])g([-h])h([)p
-Fj(jobspec)56 b Fs(...)o(])630 3811 y Ft(Without)31 b(options,)g(eac)m
-(h)i Fq(jobsp)s(ec)j Ft(is)31 b(remo)m(v)m(ed)h(from)f(the)h(table)f
-(of)h(activ)m(e)g(jobs.)44 b(If)31 b(the)630 3921 y(`)p
-Fs(-h)p Ft(')36 b(option)g(is)g(giv)m(en,)i(the)f(job)f(is)g(not)g
-(remo)m(v)m(ed)i(from)e(the)h(table,)h(but)e(is)f(mark)m(ed)i(so)630
-4030 y(that)d Fs(SIGHUP)d Ft(is)i(not)g(sen)m(t)h(to)g(the)f(job)g(if)f
-(the)i(shell)d(receiv)m(es)j(a)g Fs(SIGHUP)p Ft(.)47
+Fj(jobspec)56 b Fs(...)o(])630 3811 y Ft(Without)32 b(options,)g(eac)m
+(h)h Fq(jobsp)s(ec)j Ft(is)c(remo)m(v)m(ed)g(from)f(the)h(table)g(of)g
+(activ)m(e)h(jobs.)44 b(If)31 b(the)630 3921 y(`)p Fs(-h)p
+Ft(')36 b(option)h(is)g(giv)m(en,)i(the)e(job)f(is)h(not)f(remo)m(v)m
+(ed)i(from)e(the)h(table,)i(but)d(is)g(mark)m(ed)h(so)630
+4030 y(that)d Fs(SIGHUP)d Ft(is)j(not)f(sen)m(t)h(to)g(the)f(job)g(if)g
+(the)h(shell)f(receiv)m(es)i(a)f Fs(SIGHUP)p Ft(.)47
 b(If)33 b Fq(jobsp)s(ec)38 b Ft(is)630 4140 y(not)32
-b(presen)m(t,)f(and)g(neither)g(the)g(`)p Fs(-a)p Ft(')g(nor)g(`)p
-Fs(-r)p Ft(')g(option)g(is)g(supplied,)d(the)k(curren)m(t)f(job)g(is)
+b(presen)m(t,)f(and)g(neither)h(the)f(`)p Fs(-a)p Ft(')g(nor)g(`)p
+Fs(-r)p Ft(')g(option)h(is)g(supplied,)e(the)i(curren)m(t)f(job)g(is)
 630 4249 y(used.)58 b(If)36 b(no)g Fq(jobsp)s(ec)41 b
-Ft(is)35 b(supplied,)g(the)i(`)p Fs(-a)p Ft(')f(option)g(means)g(to)h
+Ft(is)36 b(supplied,)h(the)g(`)p Fs(-a)p Ft(')f(option)h(means)f(to)h
 (remo)m(v)m(e)h(or)e(mark)g(all)630 4359 y(jobs;)28 b(the)f(`)p
-Fs(-r)p Ft(')g(option)f(without)g(a)h Fq(jobsp)s(ec)32
-b Ft(argumen)m(t)27 b(restricts)g(op)s(eration)f(to)i(running)630
+Fs(-r)p Ft(')g(option)g(without)g(a)g Fq(jobsp)s(ec)32
+b Ft(argumen)m(t)27 b(restricts)h(op)s(eration)f(to)h(running)630
 4468 y(jobs.)150 4646 y Fs(suspend)870 4790 y(suspend)46
-b([-f])630 4934 y Ft(Susp)s(end)28 b(the)i(execution)h(of)g(this)e
-(shell)f(un)m(til)h(it)h(receiv)m(es)h(a)g Fs(SIGCONT)e
-Ft(signal.)39 b(The)30 b(`)p Fs(-f)p Ft(')630 5043 y(option)g(means)g
-(to)h(susp)s(end)d(ev)m(en)j(if)f(the)g(shell)f(is)g(a)i(login)e
-(shell.)275 5230 y(When)h(job)f(con)m(trol)i(is)e(not)i(activ)m(e,)h
-(the)e Fs(kill)f Ft(and)h Fs(wait)f Ft(builtins)d(do)k(not)h(accept)h
+b([-f])630 4934 y Ft(Susp)s(end)28 b(the)i(execution)i(of)f(this)f
+(shell)g(un)m(til)h(it)g(receiv)m(es)h(a)f Fs(SIGCONT)e
+Ft(signal.)41 b(The)30 b(`)p Fs(-f)p Ft(')630 5043 y(option)h(means)f
+(to)h(susp)s(end)d(ev)m(en)j(if)g(the)f(shell)h(is)f(a)h(login)g
+(shell.)275 5230 y(When)f(job)f(con)m(trol)j(is)e(not)h(activ)m(e,)i
+(the)d Fs(kill)f Ft(and)h Fs(wait)f Ft(builtins)g(do)h(not)h(accept)h
 Fq(jobsp)s(ec)j Ft(argu-)150 5340 y(men)m(ts.)41 b(They)30
-b(m)m(ust)g(b)s(e)g(supplied)d(pro)s(cess)j Fl(id)p Ft(s.)p
-eop
+b(m)m(ust)g(b)s(e)g(supplied)f(pro)s(cess)h Fl(id)p Ft(s.)p
+eop end
 %%Page: 82 88
-82 87 bop 150 -116 a Ft(82)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fr(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 b(ariables)150
-543 y Fs(auto_resume)630 653 y Ft(This)30 b(v)-5 b(ariable)30
-b(con)m(trols)h(ho)m(w)h(the)f(shell)f(in)m(teracts)i(with)e(the)i
-(user)e(and)h(job)g(con)m(trol.)44 b(If)630 762 y(this)27
-b(v)-5 b(ariable)28 b(exists)g(then)g(single)f(w)m(ord)h(simple)f
-(commands)h(without)f(redirections)h(are)630 872 y(treated)j(as)g
-(candidates)e(for)h(resumption)f(of)h(an)g(existing)f(job.)41
-b(There)29 b(is)g(no)i(am)m(biguit)m(y)630 981 y(allo)m(w)m(ed;)d(if)e
-(there)h(is)f(more)h(than)f(one)h(job)g(b)s(eginning)d(with)h(the)i
-(string)f(t)m(yp)s(ed,)h(then)g(the)630 1091 y(most)j(recen)m(tly)g
-(accessed)g(job)f(will)e(b)s(e)i(selected.)41 b(The)29
-b(name)g(of)h(a)g(stopp)s(ed)e(job,)i(in)e(this)630 1200
-y(con)m(text,)i(is)d(the)h(command)g(line)e(used)h(to)h(start)g(it.)40
-b(If)27 b(this)g(v)-5 b(ariable)26 b(is)h(set)h(to)h(the)e(v)-5
-b(alue)630 1310 y(`)p Fs(exact)p Ft(',)33 b(the)g(string)f(supplied)e
-(m)m(ust)j(matc)m(h)g(the)h(name)f(of)g(a)g(stopp)s(ed)f(job)h
-(exactly;)i(if)630 1420 y(set)29 b(to)h(`)p Fs(substring)p
-Ft(',)d(the)i(string)f(supplied)d(needs)k(to)g(matc)m(h)h(a)f
-(substring)e(of)i(the)g(name)630 1529 y(of)38 b(a)f(stopp)s(ed)g(job.)
-62 b(The)37 b(`)p Fs(substring)p Ft(')e(v)-5 b(alue)37
-b(pro)m(vides)f(functionalit)m(y)g(analogous)i(to)630
-1639 y(the)g(`)p Fs(\045?)p Ft(')f(job)h Fl(id)f Ft(\(see)i(Section)e
-(7.1)i([Job)f(Con)m(trol)f(Basics],)j(page)e(79\).)64
+TeXDict begin 82 87 bop 150 -116 a Ft(82)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fr(7.3)68 b(Job)45
+b(Con)l(trol)h(V)-11 b(ariables)150 543 y Fs(auto_resume)630
+653 y Ft(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 762 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
+872 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
+981 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
+1091 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
+1200 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 1310 y(`)p Fs(exact)p Ft(',)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 1420 y(set)29 b(to)h(`)p Fs(substring)p
+Ft(',)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 1529 y(of)38 b(a)f(stopp)s(ed)g(job.)
+62 b(The)37 b(`)p Fs(substring)p Ft(')e(v)-5 b(alue)38
+b(pro)m(vides)f(functionalit)m(y)i(analogous)g(to)630
+1639 y(the)f(`)p Fs(\045?)p Ft(')f(job)h Fl(id)f Ft(\(see)i(Section)f
+(7.1)h([Job)f(Con)m(trol)g(Basics],)j(page)d(79\).)64
 b(If)37 b(set)h(to)h(an)m(y)630 1748 y(other)32 b(v)-5
-b(alue,)31 b(the)h(supplied)c(string)j(m)m(ust)g(b)s(e)g(a)h(pre\014x)f
+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 1858
-y(pro)m(vides)d(functionalit)m(y)g(analogous)i(to)g(the)g(`)p
-Fs(\045)p Ft(')f(job)g Fl(id)p Ft(.)p eop
+y(pro)m(vides)e(functionalit)m(y)i(analogous)g(to)f(the)g(`)p
+Fs(\045)p Ft(')f(job)g Fl(id)p Ft(.)p eop end
 %%Page: 83 89
-83 88 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2105 b(83)150 299 y Fo(8)80 b(Command)52
-b(Line)i(Editing)275 539 y Ft(This)38 b(c)m(hapter)i(describ)s(es)f
-(the)h(basic)f(features)h(of)h(the)f Fl(gnu)f Ft(command)h(line)e
-(editing)h(in)m(terface.)150 648 y(Command)25 b(line)f(editing)g(is)h
-(pro)m(vided)f(b)m(y)i(the)g(Readline)e(library)-8 b(,)25
-b(whic)m(h)g(is)g(used)g(b)m(y)g(sev)m(eral)h(di\013eren)m(t)150
-758 y(programs,)k(including)d(Bash.)150 1020 y Fr(8.1)68
+TeXDict begin 83 88 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2107 b(83)150 299 y Fo(8)80
+b(Command)54 b(Line)f(Editing)275 539 y Ft(This)39 b(c)m(hapter)h
+(describ)s(es)g(the)g(basic)g(features)g(of)h(the)f Fl(gnu)f
+Ft(command)h(line)g(editing)h(in)m(terface.)150 648 y(Command)25
+b(line)h(editing)g(is)g(pro)m(vided)f(b)m(y)h(the)g(Readline)g(library)
+-8 b(,)27 b(whic)m(h)f(is)g(used)f(b)m(y)g(sev)m(eral)i(di\013eren)m(t)
+150 758 y(programs,)j(including)g(Bash.)150 1020 y Fr(8.1)68
 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)275 1266
-y Ft(The)29 b(follo)m(wing)g(paragraphs)h(describ)s(e)f(the)h(notation)
-h(used)e(to)j(represen)m(t)e(k)m(eystrok)m(es.)275 1402
-y(The)i(text)j Fj(C-k)d Ft(is)h(read)g(as)h(`Con)m(trol-K')f(and)g
-(describ)s(es)f(the)h(c)m(haracter)i(pro)s(duced)d(when)g(the)3663
+y Ft(The)29 b(follo)m(wing)j(paragraphs)e(describ)s(e)g(the)g(notation)
+i(used)d(to)j(represen)m(t)e(k)m(eystrok)m(es.)275 1402
+y(The)i(text)j Fj(C-k)d Ft(is)i(read)f(as)h(`Con)m(trol-K')g(and)f
+(describ)s(es)g(the)g(c)m(haracter)i(pro)s(duced)d(when)g(the)3663
 1399 y Fg(h)p 3687 1346 38 4 v 3687 1402 a Ff(k)p 3687
-1417 V 3720 1399 a Fg(i)150 1512 y Ft(k)m(ey)f(is)f(pressed)f(while)f
-(the)j(Con)m(trol)f(k)m(ey)h(is)f(depressed.)275 1648
-y(The)h(text)i Fj(M-k)e Ft(is)g(read)g(as)i(`Meta-K')g(and)f(describ)s
-(es)e(the)i(c)m(haracter)h(pro)s(duced)e(when)f(the)i(Meta)150
-1757 y(k)m(ey)d(\(if)f(y)m(ou)h(ha)m(v)m(e)g(one\))g(is)f(depressed,)g
+1417 V 3720 1399 a Fg(i)150 1512 y Ft(k)m(ey)f(is)g(pressed)e(while)h
+(the)h(Con)m(trol)g(k)m(ey)g(is)g(depressed.)275 1648
+y(The)g(text)i Fj(M-k)e Ft(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
+1757 y(k)m(ey)d(\(if)g(y)m(ou)g(ha)m(v)m(e)g(one\))g(is)g(depressed,)f
 (and)f(the)1859 1754 y Fg(h)p 1883 1701 V 1883 1757 a
-Ff(k)p 1883 1773 V 1916 1754 a Fg(i)1974 1757 y Ft(k)m(ey)j(is)d
-(pressed.)39 b(The)28 b(Meta)i(k)m(ey)f(is)f(lab)s(eled)3558
+Ff(k)p 1883 1773 V 1916 1754 a Fg(i)1974 1757 y Ft(k)m(ey)j(is)e
+(pressed.)39 b(The)28 b(Meta)i(k)m(ey)f(is)g(lab)s(eled)3558
 1754 y Fg(h)p 3582 1701 143 4 v 3582 1757 a Ff(AL)-6
 b(T)p 3582 1773 V 3720 1754 a Fg(i)150 1867 y Ft(on)26
-b(man)m(y)g(k)m(eyb)s(oards.)39 b(On)26 b(k)m(eyb)s(oards)g(with)f(t)m
-(w)m(o)i(k)m(eys)g(lab)s(eled)2425 1864 y Fg(h)p 2450
+b(man)m(y)g(k)m(eyb)s(oards.)39 b(On)26 b(k)m(eyb)s(oards)g(with)g(t)m
+(w)m(o)h(k)m(eys)g(lab)s(eled)2425 1864 y Fg(h)p 2450
 1811 V 2450 1867 a Ff(AL)-6 b(T)p 2450 1882 V 2587 1864
-a Fg(i)2643 1867 y Ft(\(usually)25 b(to)i(either)e(side)g(of)i(the)150
+a Fg(i)2643 1867 y Ft(\(usually)27 b(to)g(either)f(side)g(of)h(the)150
 1977 y(space)32 b(bar\),)g(the)775 1974 y Fg(h)p 799
 1921 V 799 1977 a Ff(AL)-6 b(T)p 799 1992 V 937 1974
-a Fg(i)998 1977 y Ft(on)32 b(the)f(left)g(side)g(is)f(generally)h(set)g
+a Fg(i)998 1977 y Ft(on)32 b(the)f(left)h(side)g(is)f(generally)i(set)e
 (to)i(w)m(ork)e(as)h(a)f(Meta)i(k)m(ey)-8 b(.)45 b(The)3393
 1974 y Fg(h)p 3417 1921 V 3417 1977 a Ff(AL)-6 b(T)p
 3417 1992 V 3555 1974 a Fg(i)3616 1977 y Ft(k)m(ey)150
-2086 y(on)33 b(the)h(righ)m(t)f(ma)m(y)h(also)f(b)s(e)g(con\014gured)f
+2086 y(on)33 b(the)h(righ)m(t)g(ma)m(y)g(also)g(b)s(e)f(con\014gured)f
 (to)i(w)m(ork)g(as)g(a)f(Meta)i(k)m(ey)f(or)g(ma)m(y)g(b)s(e)e
-(con\014gured)h(as)h(some)150 2196 y(other)d(mo)s(di\014er,)d(suc)m(h)i
-(as)h(a)g(Comp)s(ose)f(k)m(ey)h(for)f(t)m(yping)g(accen)m(ted)i(c)m
+(con\014gured)h(as)h(some)150 2196 y(other)d(mo)s(di\014er,)e(suc)m(h)h
+(as)h(a)g(Comp)s(ose)f(k)m(ey)h(for)f(t)m(yping)h(accen)m(ted)h(c)m
 (haracters.)275 2332 y(If)21 b(y)m(ou)h(do)g(not)g(ha)m(v)m(e)h(a)f
 (Meta)h(or)1388 2329 y Fg(h)p 1412 2276 V 1412 2332 a
 Ff(AL)-6 b(T)p 1412 2348 V 1550 2329 a Fg(i)1601 2332
-y Ft(k)m(ey)e(,)25 b(or)d(another)g(k)m(ey)h(w)m(orking)e(as)h(a)g
+y Ft(k)m(ey)e(,)25 b(or)d(another)g(k)m(ey)h(w)m(orking)f(as)g(a)g
 (Meta)h(k)m(ey)-8 b(,)25 b(the)d(iden)m(tical)150 2442
 y(k)m(eystrok)m(e)i(can)f(b)s(e)f(generated)i(b)m(y)e(t)m(yping)1619
 2439 y Fg(h)p 1643 2386 139 4 v 1643 2442 a Ff(ESC)p
 1643 2457 V 1777 2439 a Fg(i)1829 2442 y Fm(\014rst)p
 Ft(,)j(and)d(then)g(t)m(yping)2678 2439 y Fg(h)p 2703
 2386 38 4 v 2703 2442 a Ff(k)p 2703 2457 V 2736 2439
-a Fg(i)2765 2442 y Ft(.)38 b(Either)22 b(pro)s(cess)g(is)f(kno)m(wn)150
-2551 y(as)31 b Fq(metafying)38 b Ft(the)850 2548 y Fg(h)p
+a Fg(i)2765 2442 y Ft(.)38 b(Either)23 b(pro)s(cess)f(is)g(kno)m(wn)150
+2551 y(as)31 b Fq(metafying)39 b Ft(the)850 2548 y Fg(h)p
 874 2495 V 874 2551 a Ff(k)p 874 2567 V 907 2548 a Fg(i)968
 2551 y Ft(k)m(ey)-8 b(.)275 2688 y(The)39 b(text)j Fj(M-C-k)d
-Ft(is)g(read)h(as)h(`Meta-Con)m(trol-k')i(and)c(describ)s(es)g(the)h(c)
-m(haracter)i(pro)s(duced)d(b)m(y)150 2797 y Fq(metafying)f
-Fj(C-k)p Ft(.)275 2934 y(In)e(addition,)h(sev)m(eral)g(k)m(eys)g(ha)m
-(v)m(e)h(their)e(o)m(wn)h(names.)60 b(Sp)s(eci\014cally)-8
+Ft(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 2797 y Fq(metafying)g
+Fj(C-k)p Ft(.)275 2934 y(In)d(addition,)j(sev)m(eral)f(k)m(eys)f(ha)m
+(v)m(e)h(their)f(o)m(wn)g(names.)60 b(Sp)s(eci\014cally)-8
 b(,)2768 2931 y Fg(h)p 2792 2878 146 4 v 2792 2934 a
 Ff(DEL)p 2792 2949 V 2934 2931 a Fg(i)2964 2934 y Ft(,)3028
 2931 y Fg(h)p 3052 2878 139 4 v 3052 2934 a Ff(ESC)p
@@ -8755,15 +10460,15 @@ V 3695 2931 a Fg(i)3725 2934 y Ft(,)150 3040 y Fg(h)p
 174 2987 151 4 v 174 3043 a Ff(RET)p 174 3059 V 321 3040
 a Fg(i)351 3043 y Ft(,)47 b(and)612 3040 y Fg(h)p 637
 2987 148 4 v 637 3043 a Ff(T)-6 b(AB)p 637 3059 V 780
-3040 a Fg(i)853 3043 y Ft(all)43 b(stand)g(for)g(themselv)m(es)h(when)e
-(seen)i(in)e(this)g(text,)48 b(or)43 b(in)f(an)i(init)d(\014le)i(\(see)
-150 3153 y(Section)36 b(8.3)h([Readline)e(Init)g(File],)i(page)g(86\).)
-59 b(If)36 b(y)m(our)g(k)m(eyb)s(oard)g(lac)m(ks)g(a)2897
+3040 a Fg(i)853 3043 y Ft(all)45 b(stand)e(for)g(themselv)m(es)i(when)d
+(seen)i(in)f(this)g(text,)48 b(or)43 b(in)g(an)h(init)f(\014le)h(\(see)
+150 3153 y(Section)37 b(8.3)g([Readline)g(Init)f(File],)j(page)e(86\).)
+59 b(If)36 b(y)m(our)g(k)m(eyb)s(oard)g(lac)m(ks)h(a)2897
 3150 y Fg(h)p 2921 3097 144 4 v 2921 3153 a Ff(LFD)p
 2921 3168 V 3061 3150 a Fg(i)3127 3153 y Ft(k)m(ey)-8
 b(,)39 b(t)m(yping)3604 3150 y Fg(h)p 3628 3097 97 4
 v 3628 3153 a Ff(C-j)p 3628 3168 V 3720 3150 a Fg(i)150
-3262 y Ft(will)27 b(pro)s(duce)h(the)i(desired)e(c)m(haracter.)42
+3262 y Ft(will)30 b(pro)s(duce)e(the)i(desired)f(c)m(haracter.)42
 b(The)1748 3259 y Fg(h)p 1772 3206 151 4 v 1772 3262
 a Ff(RET)p 1772 3278 V 1919 3259 a Fg(i)1978 3262 y Ft(k)m(ey)30
 b(ma)m(y)g(b)s(e)f(lab)s(eled)2770 3259 y Fg(h)p 2794
@@ -8772,642 +10477,650 @@ b(ma)m(y)g(b)s(e)f(lab)s(eled)2770 3259 y Fg(h)p 2794
 3206 172 4 v 3201 3262 a Ff(En)n(ter)p 3201 3278 V 3368
 3259 a Fg(i)3427 3262 y Ft(on)h(some)150 3372 y(k)m(eyb)s(oards.)150
 3634 y Fr(8.2)68 b(Readline)47 b(In)l(teraction)275 3880
-y Ft(Often)24 b(during)f(an)i(in)m(teractiv)m(e)h(session)f(y)m(ou)g(t)
-m(yp)s(e)h(in)e(a)h(long)g(line)e(of)j(text,)h(only)e(to)g(notice)h
-(that)g(the)150 3989 y(\014rst)32 b(w)m(ord)g(on)g(the)g(line)f(is)h
-(missp)s(elled.)43 b(The)32 b(Readline)f(library)f(giv)m(es)i(y)m(ou)h
-(a)g(set)g(of)f(commands)g(for)150 4099 y(manipulating)27
-b(the)j(text)h(as)f(y)m(ou)g(t)m(yp)s(e)g(it)f(in,)g(allo)m(wing)f(y)m
-(ou)i(to)h(just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)
-150 4209 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)28
-b(of)g(the)h(line.)38 b(Using)27 b(these)i(editing)e(commands,)h(y)m
-(ou)h(mo)m(v)m(e)g(the)g(cursor)150 4318 y(to)35 b(the)f(place)h(that)f
-(needs)g(correction,)i(and)e(delete)g(or)g(insert)g(the)g(text)h(of)g
-(the)f(corrections.)53 b(Then,)150 4428 y(when)30 b(y)m(ou)i(are)f
-(satis\014ed)f(with)g(the)h(line,)f(y)m(ou)i(simply)c(press)2320
+y Ft(Often)24 b(during)g(an)h(in)m(teractiv)m(e)j(session)e(y)m(ou)f(t)
+m(yp)s(e)h(in)f(a)g(long)h(line)f(of)h(text,)h(only)f(to)f(notice)i
+(that)f(the)150 3989 y(\014rst)32 b(w)m(ord)g(on)g(the)g(line)h(is)g
+(missp)s(elled.)46 b(The)32 b(Readline)h(library)f(giv)m(es)h(y)m(ou)g
+(a)g(set)g(of)f(commands)g(for)150 4099 y(manipulating)e(the)g(text)h
+(as)f(y)m(ou)g(t)m(yp)s(e)g(it)g(in,)g(allo)m(wing)h(y)m(ou)f(to)h
+(just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)150
+4209 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29
+b(of)f(the)h(line.)40 b(Using)28 b(these)h(editing)g(commands,)f(y)m
+(ou)h(mo)m(v)m(e)g(the)g(cursor)150 4318 y(to)35 b(the)f(place)i(that)e
+(needs)g(correction,)j(and)d(delete)h(or)f(insert)h(the)f(text)h(of)g
+(the)f(corrections.)54 b(Then,)150 4428 y(when)30 b(y)m(ou)i(are)f
+(satis\014ed)g(with)g(the)g(line,)h(y)m(ou)g(simply)e(press)2320
 4425 y Fg(h)p 2344 4372 151 4 v 2344 4428 a Ff(RET)p
 2344 4443 V 2491 4425 a Fg(i)2520 4428 y Ft(.)43 b(Y)-8
 b(ou)32 b(do)f(not)g(ha)m(v)m(e)i(to)e(b)s(e)g(at)h(the)150
-4537 y(end)j(of)h(the)g(line)e(to)j(press)1126 4534 y
+4537 y(end)j(of)h(the)g(line)g(to)h(press)1126 4534 y
 Fg(h)p 1150 4481 V 1150 4537 a Ff(RET)p 1150 4553 V 1297
-4534 a Fg(i)1327 4537 y Ft(;)h(the)e(en)m(tire)g(line)e(is)h(accepted)i
-(regardless)e(of)h(the)g(lo)s(cation)g(of)g(the)150 4647
-y(cursor)30 b(within)e(the)i(line.)150 4875 y Fk(8.2.1)63
+4534 a Fg(i)1327 4537 y Ft(;)h(the)e(en)m(tire)h(line)f(is)g(accepted)h
+(regardless)f(of)g(the)g(lo)s(cation)i(of)e(the)150 4647
+y(cursor)30 b(within)g(the)g(line.)150 4875 y Fk(8.2.1)63
 b(Readline)40 b(Bare)h(Essen)m(tials)275 5121 y Ft(In)22
-b(order)g(to)i(en)m(ter)g(c)m(haracters)g(in)m(to)f(the)h(line,)f
-(simply)d(t)m(yp)s(e)k(them.)38 b(The)22 b(t)m(yp)s(ed)h(c)m(haracter)i
+b(order)g(to)i(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)h
+(simply)d(t)m(yp)s(e)i(them.)38 b(The)22 b(t)m(yp)s(ed)h(c)m(haracter)i
 (app)s(ears)150 5230 y(where)32 b(the)h(cursor)e(w)m(as,)j(and)e(then)g
-(the)h(cursor)e(mo)m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)46
-b(If)32 b(y)m(ou)h(mist)m(yp)s(e)f(a)150 5340 y(c)m(haracter,)g(y)m(ou)
+(the)h(cursor)e(mo)m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47
+b(If)32 b(y)m(ou)h(mist)m(yp)s(e)g(a)150 5340 y(c)m(haracter,)f(y)m(ou)
 f(can)g(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and)
-f(delete)i(the)g(mist)m(yp)s(ed)d(c)m(haracter.)p eop
+f(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)p eop
+end
 %%Page: 84 90
-84 89 bop 150 -116 a Ft(84)2572 b(Bash)31 b(Reference)g(Man)m(ual)275
-299 y(Sometimes)f(y)m(ou)h(ma)m(y)h(mist)m(yp)s(e)d(a)j(c)m(haracter,)g
-(and)e(not)i(notice)f(the)g(error)f(un)m(til)f(y)m(ou)i(ha)m(v)m(e)h(t)
-m(yp)s(ed)150 408 y(sev)m(eral)d(other)g(c)m(haracters.)42
-b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h
-Fj(C-b)d Ft(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)h(and)150
-518 y(then)g(correct)i(y)m(our)e(mistak)m(e.)41 b(Afterw)m(ards,)31
-b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)f
-(with)f Fj(C-f)p Ft(.)275 679 y(When)j(y)m(ou)h(add)f(text)h(in)e(the)i
-(middle)d(of)j(a)g(line,)f(y)m(ou)g(will)e(notice)j(that)g(c)m
+TeXDict begin 84 89 bop 150 -116 a Ft(84)2572 b(Bash)31
+b(Reference)g(Man)m(ual)275 299 y(Sometimes)g(y)m(ou)g(ma)m(y)h(mist)m
+(yp)s(e)e(a)i(c)m(haracter,)g(and)e(not)i(notice)g(the)f(error)f(un)m
+(til)h(y)m(ou)g(ha)m(v)m(e)h(t)m(yp)s(ed)150 408 y(sev)m(eral)e(other)f
+(c)m(haracters.)42 b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h
+Fj(C-b)d Ft(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)i(and)150
+518 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31
+b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)g
+(with)f Fj(C-f)p Ft(.)275 679 y(When)i(y)m(ou)h(add)f(text)h(in)f(the)h
+(middle)f(of)h(a)g(line,)h(y)m(ou)e(will)h(notice)h(that)f(c)m
 (haracters)h(to)g(the)e(righ)m(t)150 789 y(of)d(the)g(cursor)f(are)h
 (`pushed)e(o)m(v)m(er')j(to)g(mak)m(e)f(ro)s(om)g(for)f(the)h(text)h
-(that)f(y)m(ou)g(ha)m(v)m(e)h(inserted.)39 b(Lik)m(ewise,)150
-898 y(when)e(y)m(ou)g(delete)h(text)h(b)s(ehind)34 b(the)k(cursor,)h(c)
-m(haracters)g(to)f(the)g(righ)m(t)f(of)h(the)g(cursor)e(are)i(`pulled)
-150 1008 y(bac)m(k')24 b(to)f(\014ll)e(in)g(the)i(blank)e(space)j
-(created)f(b)m(y)g(the)g(remo)m(v)-5 b(al)23 b(of)g(the)g(text.)39
-b(A)23 b(list)e(of)i(the)g(bare)f(essen)m(tials)150 1117
-y(for)30 b(editing)f(the)i(text)g(of)g(an)f(input)e(line)h(follo)m(ws.)
+(that)f(y)m(ou)g(ha)m(v)m(e)h(inserted.)40 b(Lik)m(ewise,)150
+898 y(when)d(y)m(ou)g(delete)i(text)g(b)s(ehind)c(the)j(cursor,)h(c)m
+(haracters)g(to)f(the)g(righ)m(t)g(of)g(the)g(cursor)e(are)i(`pulled)
+150 1008 y(bac)m(k')24 b(to)f(\014ll)g(in)f(the)h(blank)f(space)i
+(created)f(b)m(y)g(the)g(remo)m(v)-5 b(al)24 b(of)f(the)g(text.)39
+b(A)23 b(list)g(of)g(the)g(bare)f(essen)m(tials)150 1117
+y(for)30 b(editing)h(the)g(text)g(of)g(an)f(input)f(line)i(follo)m(ws.)
 150 1317 y Fj(C-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m
 (haracter.)150 1502 y Fj(C-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(one)
 h(c)m(haracter.)150 1685 y Fg(h)p 174 1632 146 4 v 174
 1688 a Ff(DEL)p 174 1704 V 316 1685 a Fg(i)376 1688 y
 Ft(or)487 1685 y Fg(h)p 512 1632 317 4 v 512 1688 a Ff(Bac)n(kspace)p
-512 1704 V 824 1685 a Fg(i)630 1798 y Ft(Delete)h(the)e(c)m(haracter)i
-(to)f(the)g(left)f(of)g(the)h(cursor.)150 1984 y Fj(C-d)336
-b Ft(Delete)32 b(the)e(c)m(haracter)i(underneath)d(the)i(cursor.)150
-2170 y(Prin)m(ting)e(c)m(haracters)630 2279 y(Insert)h(the)g(c)m
-(haracter)i(in)m(to)f(the)f(line)f(at)i(the)g(cursor.)150
-2465 y Fj(C-_)e Ft(or)i Fj(C-x)e(C-u)630 2575 y Ft(Undo)k(the)h(last)f
-(editing)f(command.)50 b(Y)-8 b(ou)34 b(can)f(undo)g(all)f(the)h(w)m(a)
+512 1704 V 824 1685 a Fg(i)630 1798 y Ft(Delete)i(the)d(c)m(haracter)i
+(to)f(the)g(left)g(of)f(the)h(cursor.)150 1984 y Fj(C-d)336
+b Ft(Delete)33 b(the)d(c)m(haracter)i(underneath)d(the)i(cursor.)150
+2170 y(Prin)m(ting)g(c)m(haracters)630 2279 y(Insert)f(the)g(c)m
+(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g(cursor.)150
+2465 y Fj(C-_)e Ft(or)i Fj(C-x)e(C-u)630 2575 y Ft(Undo)k(the)h(last)g
+(editing)g(command.)50 b(Y)-8 b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)
 m(y)i(bac)m(k)f(to)g(an)g(empt)m(y)630 2684 y(line.)150
-2883 y(\(Dep)s(ending)f(on)h(y)m(our)g(con\014guration,)g(the)1726
+2883 y(\(Dep)s(ending)g(on)g(y)m(our)g(con\014guration,)h(the)1726
 2880 y Fg(h)p 1750 2827 V 1750 2883 a Ff(Bac)n(kspace)p
-1750 2899 V 2063 2880 a Fg(i)2127 2883 y Ft(k)m(ey)h(b)s(e)e(set)h(to)h
-(delete)f(the)g(c)m(haracter)i(to)f(the)150 2993 y(left)e(of)g(the)g
+1750 2899 V 2063 2880 a Fg(i)2127 2883 y Ft(k)m(ey)g(b)s(e)e(set)h(to)h
+(delete)g(the)f(c)m(haracter)i(to)f(the)150 2993 y(left)f(of)f(the)g
 (cursor)f(and)h(the)1192 2990 y Fg(h)p 1216 2937 146
 4 v 1216 2993 a Ff(DEL)p 1216 3008 V 1358 2990 a Fg(i)1421
-2993 y Ft(k)m(ey)g(set)h(to)g(delete)f(the)g(c)m(haracter)i(underneath)
+2993 y Ft(k)m(ey)g(set)h(to)g(delete)g(the)f(c)m(haracter)i(underneath)
 c(the)i(cursor,)h(lik)m(e)150 3103 y Fj(C-d)p Ft(,)c(rather)g(than)g
-(the)h(c)m(haracter)h(to)f(the)f(left)g(of)h(the)f(cursor.\))150
-3380 y Fk(8.2.2)63 b(Readline)40 b(Mo)m(v)m(emen)m(t)g(Commands)275
-3650 y Ft(The)25 b(ab)s(o)m(v)m(e)i(table)f(describ)s(es)f(the)h(most)h
-(basic)e(k)m(eystrok)m(es)j(that)f(y)m(ou)f(need)g(in)f(order)g(to)i
-(do)f(editing)150 3760 y(of)g(the)f(input)f(line.)37
-b(F)-8 b(or)27 b(y)m(our)e(con)m(v)m(enience,)j(man)m(y)d(other)h
-(commands)f(ha)m(v)m(e)i(b)s(een)e(added)g(in)f(addition)150
+(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g(the)f(cursor.\))150
+3380 y Fk(8.2.2)63 b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)275
+3650 y Ft(The)25 b(ab)s(o)m(v)m(e)i(table)g(describ)s(es)f(the)g(most)h
+(basic)f(k)m(eystrok)m(es)i(that)f(y)m(ou)f(need)g(in)g(order)f(to)i
+(do)f(editing)150 3760 y(of)g(the)f(input)g(line.)39
+b(F)-8 b(or)27 b(y)m(our)e(con)m(v)m(enience,)k(man)m(y)c(other)h
+(commands)f(ha)m(v)m(e)i(b)s(een)e(added)g(in)g(addition)150
 3869 y(to)33 b Fj(C-b)p Ft(,)e Fj(C-f)p Ft(,)h Fj(C-d)p
 Ft(,)g(and)1043 3866 y Fg(h)p 1067 3813 V 1067 3869 a
 Ff(DEL)p 1067 3885 V 1209 3866 a Fg(i)1239 3869 y Ft(.)45
-b(Here)33 b(are)f(some)g(commands)g(for)g(mo)m(ving)g(more)g(rapidly)d
-(ab)s(out)j(the)150 3979 y(line.)150 4178 y Fj(C-a)336
+b(Here)33 b(are)f(some)g(commands)g(for)g(mo)m(ving)h(more)f(rapidly)f
+(ab)s(out)h(the)150 3979 y(line.)150 4178 y Fj(C-a)336
 b Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(line.)150
 4364 y Fj(C-e)336 b Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h
 (line.)150 4550 y Fj(M-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m
-(ord,)f(where)g(a)h(w)m(ord)f(is)f(comp)s(osed)h(of)h(letters)g(and)e
+(ord,)f(where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d
 (digits.)150 4736 y Fj(M-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)
-g(w)m(ord.)150 4922 y Fj(C-l)336 b Ft(Clear)30 b(the)g(screen,)h
-(reprin)m(ting)d(the)j(curren)m(t)f(line)f(at)i(the)f(top.)275
-5121 y(Notice)25 b(ho)m(w)g Fj(C-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h
-(c)m(haracter,)j(while)23 b Fj(M-f)g Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h
-(w)m(ord.)39 b(It)24 b(is)g(a)h(lo)s(ose)150 5230 y(con)m(v)m(en)m
-(tion)31 b(that)g(con)m(trol)f(k)m(eystrok)m(es)i(op)s(erate)e(on)g(c)m
-(haracters)h(while)d(meta)j(k)m(eystrok)m(es)h(op)s(erate)e(on)150
-5340 y(w)m(ords.)p eop
+g(w)m(ord.)150 4922 y Fj(C-l)336 b Ft(Clear)31 b(the)f(screen,)h
+(reprin)m(ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275
+5121 y(Notice)c(ho)m(w)f Fj(C-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m
+(haracter,)j(while)d Fj(M-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m
+(ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 5230 y(con)m(v)m(en)m(tion)32
+b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m
+(haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150
+5340 y(w)m(ords.)p eop end
 %%Page: 85 91
-85 90 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2105 b(85)150 299 y Fk(8.2.3)63 b(Readline)40
-b(Killing)i(Commands)275 566 y Fq(Killing)f Ft(text)e(means)e(to)h
-(delete)f(the)h(text)g(from)f(the)g(line,)h(but)f(to)h(sa)m(v)m(e)h(it)
-d(a)m(w)m(a)m(y)k(for)d(later)g(use,)150 675 y(usually)32
-b(b)m(y)i Fq(y)m(anking)41 b Ft(\(re-inserting\))33 b(it)h(bac)m(k)h
-(in)m(to)f(the)g(line.)50 b(\(`Cut')35 b(and)e(`paste')i(are)g(more)f
-(recen)m(t)150 785 y(jargon)d(for)f(`kill')e(and)i(`y)m(ank'.\))275
-942 y(If)f(the)i(description)d(for)i(a)h(command)f(sa)m(ys)g(that)h(it)
-f(`kills')e(text,)k(then)e(y)m(ou)g(can)h(b)s(e)e(sure)h(that)h(y)m(ou)
-150 1052 y(can)g(get)g(the)g(text)g(bac)m(k)g(in)e(a)i(di\013eren)m(t)f
-(\(or)h(the)f(same\))h(place)g(later.)275 1209 y(When)23
-b(y)m(ou)g(use)g(a)h(kill)d(command,)j(the)g(text)g(is)e(sa)m(v)m(ed)j
-(in)d(a)h Fq(kill-ring)p Ft(.)35 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h
-(consecutiv)m(e)150 1318 y(kills)28 b(sa)m(v)m(e)33 b(all)d(of)h(the)g
-(killed)e(text)j(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)e
-(bac)m(k,)i(y)m(ou)g(get)g(it)e(all.)41 b(The)150 1428
-y(kill)30 b(ring)h(is)g(not)i(line)e(sp)s(eci\014c;)h(the)h(text)g
-(that)g(y)m(ou)g(killed)c(on)k(a)f(previously)e(t)m(yp)s(ed)j(line)d
-(is)i(a)m(v)-5 b(ailable)150 1537 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)
-m(k)g(later,)g(when)e(y)m(ou)i(are)g(t)m(yping)e(another)i(line.)275
-1695 y(Here)f(is)g(the)g(list)f(of)i(commands)f(for)g(killing)d(text.)
-150 1888 y Fj(C-k)336 b Ft(Kill)28 b(the)i(text)i(from)e(the)g(curren)m
-(t)g(cursor)g(p)s(osition)f(to)i(the)f(end)g(of)g(the)h(line.)150
-2070 y Fj(M-d)336 b Ft(Kill)24 b(from)i(the)g(cursor)g(to)h(the)f(end)g
-(of)h(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)d(b)s(et)m(w)m(een)i(w)m
-(ords,)g(to)g(the)630 2180 y(end)j(of)g(the)h(next)f(w)m(ord.)41
-b(W)-8 b(ord)30 b(b)s(oundaries)e(are)j(the)g(same)f(as)h(those)g(used)
+TeXDict begin 85 90 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2107 b(85)150 299 y Fk(8.2.3)63
+b(Readline)40 b(Killing)i(Commands)275 566 y Fq(Killing)j
+Ft(text)39 b(means)e(to)h(delete)g(the)g(text)g(from)f(the)g(line,)j
+(but)d(to)h(sa)m(v)m(e)h(it)e(a)m(w)m(a)m(y)j(for)d(later)h(use,)150
+675 y(usually)c(b)m(y)g Fq(y)m(anking)42 b Ft(\(re-inserting\))35
+b(it)g(bac)m(k)g(in)m(to)g(the)f(line.)52 b(\(`Cut')35
+b(and)e(`paste')i(are)g(more)f(recen)m(t)150 785 y(jargon)d(for)f
+(`kill')h(and)f(`y)m(ank'.\))275 942 y(If)f(the)i(description)f(for)g
+(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g(text,)h(then)e(y)m(ou)g
+(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150 1052 y(can)g(get)g(the)g(text)g
+(bac)m(k)g(in)f(a)h(di\013eren)m(t)g(\(or)g(the)f(same\))h(place)h
+(later.)275 1209 y(When)23 b(y)m(ou)g(use)g(a)h(kill)g(command,)g(the)g
+(text)g(is)f(sa)m(v)m(ed)i(in)e(a)g Fq(kill-ring)p Ft(.)39
+b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h(consecutiv)m(e)150
+1318 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g(killed)h(text)g
+(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f(bac)m(k,)h(y)m
+(ou)g(get)g(it)f(all.)43 b(The)150 1428 y(kill)33 b(ring)f(is)g(not)h
+(line)g(sp)s(eci\014c;)g(the)g(text)g(that)g(y)m(ou)g(killed)f(on)h(a)f
+(previously)g(t)m(yp)s(ed)h(line)f(is)h(a)m(v)-5 b(ailable)150
+1537 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)m(k)g(later,)h(when)d(y)m(ou)
+i(are)g(t)m(yping)f(another)h(line.)275 1695 y(Here)f(is)h(the)f(list)h
+(of)g(commands)f(for)g(killing)h(text.)150 1888 y Fj(C-k)336
+b Ft(Kill)31 b(the)f(text)i(from)e(the)g(curren)m(t)g(cursor)g(p)s
+(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150 2070
+y Fj(M-d)336 b Ft(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g(of)h
+(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,)
+g(to)g(the)630 2180 y(end)j(of)g(the)h(next)f(w)m(ord.)41
+b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used)
 f(b)m(y)g Fj(M-f)p Ft(.)150 2362 y Fj(M-)246 2359 y Fg(h)p
 270 2306 146 4 v 270 2362 a Ff(DEL)p 270 2377 V 411 2359
-a Fg(i)630 2362 y Ft(Kill)e(from)i(the)h(cursor)f(the)g(start)h(of)g
-(the)g(curren)m(t)f(w)m(ord,)h(or,)f(if)g(b)s(et)m(w)m(een)h(w)m(ords,)
-f(to)i(the)630 2471 y(start)39 b(of)f(the)h(previous)e(w)m(ord.)64
-b(W)-8 b(ord)39 b(b)s(oundaries)d(are)j(the)f(same)h(as)g(those)f(used)
+a Fg(i)630 2362 y Ft(Kill)h(from)f(the)h(cursor)f(the)g(start)h(of)g
+(the)g(curren)m(t)f(w)m(ord,)h(or,)f(if)h(b)s(et)m(w)m(een)g(w)m(ords,)
+f(to)i(the)630 2471 y(start)39 b(of)f(the)h(previous)f(w)m(ord.)64
+b(W)-8 b(ord)39 b(b)s(oundaries)e(are)i(the)f(same)h(as)g(those)f(used)
 g(b)m(y)630 2581 y Fj(M-b)p Ft(.)150 2763 y Fj(C-w)336
-b Ft(Kill)29 b(from)h(the)i(cursor)e(to)i(the)g(previous)d(whitespace.)
-43 b(This)30 b(is)g(di\013eren)m(t)h(than)g Fj(M-)3555
+b Ft(Kill)32 b(from)e(the)i(cursor)e(to)i(the)g(previous)e(whitespace.)
+44 b(This)31 b(is)g(di\013eren)m(t)h(than)f Fj(M-)3555
 2760 y Fg(h)p 3578 2707 V 3578 2763 a Ff(DEL)p 3578 2778
 V 3720 2760 a Fg(i)630 2872 y Ft(b)s(ecause)f(the)h(w)m(ord)f(b)s
-(oundaries)e(di\013er.)275 3066 y(Here)42 b(is)e(ho)m(w)i(to)g
-Fq(y)m(ank)47 b Ft(the)42 b(text)g(bac)m(k)h(in)m(to)e(the)h(line.)72
-b(Y)-8 b(anking)42 b(means)f(to)h(cop)m(y)h(the)e(most-)150
-3175 y(recen)m(tly-killed)29 b(text)i(from)f(the)g(kill)f(bu\013er.)150
-3369 y Fj(C-y)336 b Ft(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)g
-(killed)d(text)j(bac)m(k)g(in)m(to)g(the)f(bu\013er)g(at)h(the)f
-(cursor.)150 3551 y Fj(M-y)336 b Ft(Rotate)36 b(the)f(kill-ring,)e(and)
-h(y)m(ank)h(the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)e(do)i
-(this)e(if)h(the)h(prior)630 3660 y(command)30 b(is)g
-Fj(C-y)f Ft(or)h Fj(M-y)p Ft(.)150 3930 y Fk(8.2.4)63
+(oundaries)f(di\013er.)275 3066 y(Here)42 b(is)f(ho)m(w)h(to)g
+Fq(y)m(ank)47 b Ft(the)42 b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74
+b(Y)-8 b(anking)43 b(means)e(to)h(cop)m(y)h(the)e(most-)150
+3175 y(recen)m(tly-killed)33 b(text)e(from)f(the)g(kill)i(bu\013er.)150
+3369 y Fj(C-y)336 b Ft(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h
+(killed)f(text)g(bac)m(k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f
+(cursor.)150 3551 y Fj(M-y)336 b Ft(Rotate)36 b(the)f(kill-ring,)i(and)
+d(y)m(ank)h(the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h
+(this)f(if)h(the)g(prior)630 3660 y(command)30 b(is)h
+Fj(C-y)e Ft(or)h Fj(M-y)p Ft(.)150 3930 y Fk(8.2.4)63
 b(Readline)40 b(Argumen)m(ts)275 4197 y Ft(Y)-8 b(ou)29
-b(can)h(pass)f(n)m(umeric)f(argumen)m(ts)h(to)h(Readline)e(commands.)40
-b(Sometimes)29 b(the)g(argumen)m(t)h(acts)150 4306 y(as)40
-b(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)e(it)h(is)f(the)h
-Fm(sign)47 b Ft(of)41 b(the)f(argumen)m(t)g(that)h(is)e(signi\014can)m
-(t.)69 b(If)40 b(y)m(ou)150 4416 y(pass)33 b(a)h(negativ)m(e)h(argumen)
-m(t)f(to)g(a)g(command)f(whic)m(h)f(normally)g(acts)i(in)e(a)i(forw)m
-(ard)f(direction,)g(that)150 4525 y(command)i(will)e(act)j(in)e(a)i
-(bac)m(kw)m(ard)f(direction.)55 b(F)-8 b(or)36 b(example,)g(to)g(kill)d
-(text)j(bac)m(k)g(to)g(the)g(start)g(of)150 4635 y(the)31
-b(line,)e(y)m(ou)h(migh)m(t)g(t)m(yp)s(e)h(`)p Fs(M--)f(C-k)p
-Ft('.)275 4792 y(The)d(general)h(w)m(a)m(y)i(to)e(pass)g(n)m(umeric)f
-(argumen)m(ts)i(to)g(a)f(command)g(is)f(to)i(t)m(yp)s(e)f(meta)i
-(digits)c(b)s(efore)150 4902 y(the)31 b(command.)42 b(If)30
-b(the)h(\014rst)f(`digit')g(t)m(yp)s(ed)h(is)f(a)h(min)m(us)e(sign)h
-(\(`)p Fs(-)p Ft('\),)i(then)f(the)g(sign)e(of)i(the)g(argumen)m(t)150
-5011 y(will)36 b(b)s(e)h(negativ)m(e.)65 b(Once)38 b(y)m(ou)h(ha)m(v)m
-(e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)e(to)h(get)i(the)e(argumen)m(t)h
-(started,)i(y)m(ou)150 5121 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)e
-(of)i(the)g(digits,)f(and)h(then)f(the)h(command.)40
-b(F)-8 b(or)30 b(example,)f(to)g(giv)m(e)h(the)f Fj(C-d)150
-5230 y Ft(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)e
-(t)m(yp)s(e)i(`)p Fs(M-1)29 b(0)h(C-d)p Ft(',)39 b(whic)m(h)d(will)f
-(delete)j(the)f(next)h(ten)150 5340 y(c)m(haracters)32
-b(on)e(the)h(input)d(line.)p eop
+b(can)h(pass)f(n)m(umeric)g(argumen)m(ts)g(to)h(Readline)g(commands.)40
+b(Sometimes)30 b(the)f(argumen)m(t)h(acts)150 4306 y(as)40
+b(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g
+Fm(sign)47 b Ft(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m
+(t.)71 b(If)40 b(y)m(ou)150 4416 y(pass)33 b(a)h(negativ)m(e)i(argumen)
+m(t)e(to)g(a)g(command)f(whic)m(h)g(normally)h(acts)g(in)f(a)h(forw)m
+(ard)f(direction,)i(that)150 4525 y(command)g(will)h(act)g(in)f(a)h
+(bac)m(kw)m(ard)f(direction.)57 b(F)-8 b(or)36 b(example,)h(to)f(kill)g
+(text)g(bac)m(k)g(to)g(the)g(start)g(of)150 4635 y(the)31
+b(line,)g(y)m(ou)f(migh)m(t)h(t)m(yp)s(e)g(`)p Fs(M--)f(C-k)p
+Ft('.)275 4792 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g
+(argumen)m(ts)h(to)g(a)f(command)g(is)g(to)h(t)m(yp)s(e)f(meta)i
+(digits)e(b)s(efore)150 4902 y(the)j(command.)42 b(If)30
+b(the)h(\014rst)f(`digit')i(t)m(yp)s(ed)f(is)g(a)g(min)m(us)f(sign)h
+(\(`)p Fs(-)p Ft('\),)h(then)f(the)g(sign)f(of)h(the)g(argumen)m(t)150
+5011 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m
+(e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)g(to)f(get)i(the)e(argumen)m(t)h
+(started,)i(y)m(ou)150 5121 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f
+(of)h(the)g(digits,)h(and)f(then)f(the)h(command.)40
+b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fj(C-d)150
+5230 y Ft(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f
+(t)m(yp)s(e)h(`)p Fs(M-1)29 b(0)h(C-d)p Ft(',)39 b(whic)m(h)e(will)h
+(delete)h(the)e(next)h(ten)150 5340 y(c)m(haracters)32
+b(on)e(the)h(input)e(line.)p eop end
 %%Page: 86 92
-86 91 bop 150 -116 a Ft(86)2572 b(Bash)31 b(Reference)g(Man)m(ual)150
-299 y Fk(8.2.5)63 b(Searc)m(hing)40 b(for)h(Commands)f(in)h(the)g
-(History)275 548 y Ft(Readline)21 b(pro)m(vides)h(commands)g(for)h
-(searc)m(hing)g(through)f(the)h(command)g(history)e(\(see)j(Section)f
-(9.1)150 657 y([Bash)37 b(History)g(F)-8 b(acilities],)38
-b(page)f(109\))i(for)d(lines)f(con)m(taining)i(a)g(sp)s(eci\014ed)e
-(string.)59 b(There)36 b(are)i(t)m(w)m(o)150 767 y(searc)m(h)31
-b(mo)s(des:)40 b Fq(incremen)m(tal)33 b Ft(and)d Fq(non-incremen)m(tal)
-p Ft(.)275 906 y(Incremen)m(tal)25 b(searc)m(hes)i(b)s(egin)d(b)s
-(efore)h(the)h(user)f(has)h(\014nished)d(t)m(yping)i(the)h(searc)m(h)g
-(string.)38 b(As)26 b(eac)m(h)150 1015 y(c)m(haracter)37
-b(of)e(the)h(searc)m(h)g(string)e(is)h(t)m(yp)s(ed,)h(Readline)e
-(displa)m(ys)g(the)h(next)h(en)m(try)g(from)e(the)i(history)150
-1125 y(matc)m(hing)24 b(the)g(string)f(t)m(yp)s(ed)h(so)g(far.)39
-b(An)23 b(incremen)m(tal)h(searc)m(h)g(requires)f(only)g(as)h(man)m(y)g
-(c)m(haracters)i(as)150 1235 y(needed)i(to)i(\014nd)d(the)i(desired)e
-(history)h(en)m(try)-8 b(.)41 b(T)-8 b(o)29 b(searc)m(h)h(bac)m(kw)m
-(ard)f(in)e(the)i(history)f(for)g(a)i(particular)150
-1344 y(string,)f(t)m(yp)s(e)g Fj(C-r)p Ft(.)40 b(T)m(yping)28
-b Fj(C-s)h Ft(searc)m(hes)h(forw)m(ard)f(through)g(the)g(history)-8
-b(.)40 b(The)29 b(c)m(haracters)i(presen)m(t)150 1454
-y(in)37 b(the)h(v)-5 b(alue)37 b(of)h(the)g Fs(isearch-terminators)33
-b Ft(v)-5 b(ariable)37 b(are)h(used)f(to)i(terminate)f(an)g(incremen)m
-(tal)150 1563 y(searc)m(h.)63 b(If)38 b(that)g(v)-5 b(ariable)36
-b(has)i(not)g(b)s(een)f(assigned)g(a)h(v)-5 b(alue,)39
-b(the)2578 1560 y Fg(h)p 2602 1507 139 4 v 2602 1563
-a Ff(ESC)p 2602 1579 V 2736 1560 a Fg(i)2804 1563 y Ft(and)e
-Fj(C-J)f Ft(c)m(haracters)k(will)150 1673 y(terminate)i(an)h(incremen)m
-(tal)e(searc)m(h.)78 b Fj(C-g)41 b Ft(will)f(ab)s(ort)i(an)g(incremen)m
-(tal)g(searc)m(h)h(and)f(restore)h(the)150 1782 y(original)27
-b(line.)39 b(When)28 b(the)h(searc)m(h)h(is)e(terminated,)h(the)g
-(history)f(en)m(try)h(con)m(taining)f(the)h(searc)m(h)h(string)150
-1892 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 2031
-y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)f(en)m(tries)g(in)e(the)i
-(history)f(list,)g(t)m(yp)s(e)i Fj(C-r)e Ft(or)h Fj(C-s)f
-Ft(as)h(appropriate.)42 b(This)150 2141 y(will)23 b(searc)m(h)k(bac)m
-(kw)m(ard)g(or)f(forw)m(ard)g(in)e(the)j(history)e(for)h(the)g(next)g
-(en)m(try)h(matc)m(hing)f(the)g(searc)m(h)h(string)150
+TeXDict begin 86 91 bop 150 -116 a Ft(86)2572 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fk(8.2.5)63 b(Searc)m(hing)40
+b(for)i(Commands)g(in)f(the)g(History)275 548 y Ft(Readline)23
+b(pro)m(vides)g(commands)f(for)h(searc)m(hing)h(through)e(the)h
+(command)g(history)f(\(see)i(Section)g(9.1)150 657 y([Bash)37
+b(History)h(F)-8 b(acilities],)42 b(page)37 b(109\))i(for)d(lines)h
+(con)m(taining)i(a)e(sp)s(eci\014ed)f(string.)60 b(There)36
+b(are)i(t)m(w)m(o)150 767 y(searc)m(h)31 b(mo)s(des:)40
+b Fq(incremen)m(tal)35 b Ft(and)30 b Fq(non-incremen)m(tal)p
+Ft(.)275 906 y(Incremen)m(tal)c(searc)m(hes)h(b)s(egin)e(b)s(efore)g
+(the)h(user)f(has)h(\014nished)e(t)m(yping)i(the)g(searc)m(h)g(string.)
+39 b(As)26 b(eac)m(h)150 1015 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)
+g(string)f(is)h(t)m(yp)s(ed,)g(Readline)g(displa)m(ys)g(the)f(next)h
+(en)m(try)g(from)e(the)i(history)150 1125 y(matc)m(hing)25
+b(the)f(string)g(t)m(yp)s(ed)g(so)g(far.)39 b(An)23 b(incremen)m(tal)j
+(searc)m(h)e(requires)g(only)g(as)g(man)m(y)g(c)m(haracters)i(as)150
+1235 y(needed)i(to)i(\014nd)d(the)i(desired)f(history)h(en)m(try)-8
+b(.)41 b(T)-8 b(o)29 b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history)
+g(for)f(a)i(particular)150 1344 y(string,)g(t)m(yp)s(e)f
+Fj(C-r)p Ft(.)40 b(T)m(yping)29 b Fj(C-s)g Ft(searc)m(hes)h(forw)m(ard)
+f(through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m
+(t)150 1454 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g
+Fs(isearch-terminators)33 b Ft(v)-5 b(ariable)39 b(are)f(used)f(to)i
+(terminate)g(an)f(incremen)m(tal)150 1563 y(searc)m(h.)63
+b(If)38 b(that)g(v)-5 b(ariable)38 b(has)g(not)g(b)s(een)f(assigned)h
+(a)g(v)-5 b(alue,)40 b(the)2578 1560 y Fg(h)p 2602 1507
+139 4 v 2602 1563 a Ff(ESC)p 2602 1579 V 2736 1560 a
+Fg(i)2804 1563 y Ft(and)d Fj(C-J)f Ft(c)m(haracters)k(will)150
+1673 y(terminate)j(an)g(incremen)m(tal)g(searc)m(h.)78
+b Fj(C-g)41 b Ft(will)i(ab)s(ort)f(an)g(incremen)m(tal)i(searc)m(h)f
+(and)f(restore)h(the)150 1782 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 1892
+y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 2031 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 Ft(or)h Fj(C-s)f
+Ft(as)h(appropriate.)43 b(This)150 2141 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
 2250 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)f(command)g(will)e(terminate)j
+(sequence)f(b)s(ound)e(to)i(a)g(Readline)h(command)e(will)h(terminate)h
 (the)150 2360 y(searc)m(h)22 b(and)e(execute)j(that)e(command.)38
-b(F)-8 b(or)22 b(instance,)g(a)2127 2357 y Fg(h)p 2151
+b(F)-8 b(or)22 b(instance,)h(a)2127 2357 y Fg(h)p 2151
 2304 151 4 v 2151 2360 a Ff(RET)p 2151 2375 V 2298 2357
-a Fg(i)2349 2360 y Ft(will)c(terminate)j(the)g(searc)m(h)h(and)e
-(accept)150 2469 y(the)30 b(line,)e(thereb)m(y)h(executing)h(the)f
-(command)g(from)g(the)h(history)e(list.)39 b(A)29 b(mo)m(v)m(emen)m(t)j
-(command)d(will)150 2579 y(terminate)h(the)h(searc)m(h,)g(mak)m(e)h
-(the)e(last)g(line)f(found)g(the)i(curren)m(t)f(line,)f(and)h(b)s(egin)
-f(editing.)275 2718 y(Readline)k(remem)m(b)s(ers)h(the)h(last)g
-(incremen)m(tal)f(searc)m(h)h(string.)53 b(If)34 b(t)m(w)m(o)j
+a Fg(i)2349 2360 y Ft(will)e(terminate)h(the)f(searc)m(h)h(and)e
+(accept)150 2469 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 2579 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 2718 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 Ft(s)c(are)i(t)m(yp)s(ed)g(without)150 2828
-y(an)m(y)i(in)m(terv)m(ening)e(c)m(haracters)j(de\014ning)d(a)i(new)f
-(searc)m(h)h(string,)g(an)m(y)g(remem)m(b)s(ered)e(searc)m(h)i(string)f
-(is)150 2937 y(used.)275 3076 y(Non-incremen)m(tal)46
-b(searc)m(hes)i(read)e(the)h(en)m(tire)g(searc)m(h)g(string)f(b)s
-(efore)g(starting)g(to)i(searc)m(h)f(for)150 3186 y(matc)m(hing)c
-(history)e(lines.)76 b(The)42 b(searc)m(h)h(string)f(ma)m(y)h(b)s(e)f
+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 2937 y(used.)275 3076 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 3186 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
 3295 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150
 3564 y Fr(8.3)68 b(Readline)47 b(Init)e(File)275 3813
-y Ft(Although)f(the)h(Readline)f(library)e(comes)k(with)e(a)i(set)f(of)
-g(Emacs-lik)m(e)g(k)m(eybindings)e(installed)150 3922
-y(b)m(y)f(default,)h(it)f(is)e(p)s(ossible)f(to)k(use)e(a)h(di\013eren)
-m(t)f(set)h(of)g(k)m(eybindings.)72 b(An)m(y)42 b(user)f(can)h
-(customize)150 4032 y(programs)32 b(that)h(use)f(Readline)f(b)m(y)i
-(putting)e(commands)h(in)f(an)h Fq(inputrc)k Ft(\014le,)d(con)m(v)m(en)
-m(tionally)f(in)f(his)150 4142 y(home)e(directory)-8
-b(.)40 b(The)28 b(name)g(of)h(this)f(\014le)f(is)h(tak)m(en)i(from)e
-(the)h(v)-5 b(alue)28 b(of)h(the)f(shell)f(v)-5 b(ariable)28
-b Fs(INPUTRC)p Ft(.)150 4251 y(If)i(that)h(v)-5 b(ariable)29
-b(is)g(unset,)i(the)f(default)g(is)f(`)p Fs(~/.inputrc)p
-Ft('.)275 4390 y(When)g(a)h(program)f(whic)m(h)g(uses)g(the)h(Readline)
-e(library)f(starts)j(up,)f(the)h(init)e(\014le)g(is)h(read,)h(and)f
-(the)150 4500 y(k)m(ey)i(bindings)c(are)k(set.)275 4639
-y(In)26 b(addition,)g(the)h Fs(C-x)i(C-r)d Ft(command)h(re-reads)g
-(this)e(init)g(\014le,)i(th)m(us)g(incorp)s(orating)e(an)m(y)i(c)m
-(hanges)150 4748 y(that)k(y)m(ou)g(migh)m(t)f(ha)m(v)m(e)h(made)g(to)g
+y Ft(Although)g(the)g(Readline)h(library)e(comes)i(with)f(a)h(set)f(of)
+g(Emacs-lik)m(e)i(k)m(eybindings)e(installed)150 3922
+y(b)m(y)d(default,)i(it)f(is)e(p)s(ossible)g(to)i(use)e(a)h(di\013eren)
+m(t)g(set)g(of)g(k)m(eybindings.)74 b(An)m(y)42 b(user)f(can)h
+(customize)150 4032 y(programs)32 b(that)h(use)f(Readline)h(b)m(y)g
+(putting)f(commands)g(in)g(an)g Fq(inputrc)37 b Ft(\014le,)d(con)m(v)m
+(en)m(tionally)h(in)d(his)150 4142 y(home)d(directory)-8
+b(.)41 b(The)28 b(name)g(of)h(this)g(\014le)f(is)h(tak)m(en)h(from)e
+(the)h(v)-5 b(alue)29 b(of)g(the)f(shell)h(v)-5 b(ariable)30
+b Fs(INPUTRC)p Ft(.)150 4251 y(If)g(that)h(v)-5 b(ariable)31
+b(is)f(unset,)h(the)f(default)h(is)f(`)p Fs(~/.inputrc)p
+Ft('.)275 4390 y(When)f(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 4500 y(k)m(ey)i(bindings)e(are)i(set.)275 4639
+y(In)26 b(addition,)i(the)f Fs(C-x)i(C-r)d Ft(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 4748 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g
 (it.)150 4982 y Fk(8.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)275
-5230 y Ft(There)33 b(are)h(only)f(a)h(few)f(basic)g(constructs)h(allo)m
-(w)m(ed)f(in)g(the)h(Readline)e(init)g(\014le.)50 b(Blank)33
-b(lines)f(are)150 5340 y(ignored.)71 b(Lines)40 b(b)s(eginning)e(with)i
-(a)h(`)p Fs(#)p Ft(')g(are)h(commen)m(ts.)73 b(Lines)40
-b(b)s(eginning)e(with)h(a)j(`)p Fs($)p Ft(')f(indicate)p
-eop
+5230 y Ft(There)33 b(are)h(only)g(a)g(few)f(basic)h(constructs)g(allo)m
+(w)m(ed)h(in)f(the)g(Readline)g(init)g(\014le.)51 b(Blank)34
+b(lines)g(are)150 5340 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h
+(a)g(`)p Fs(#)p Ft(')g(are)h(commen)m(ts.)73 b(Lines)41
+b(b)s(eginning)f(with)g(a)i(`)p Fs($)p Ft(')f(indicate)p
+eop end
 %%Page: 87 93
-87 92 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2105 b(87)150 299 y(conditional)40 b(constructs)h
-(\(see)i(Section)e(8.3.2)i([Conditional)c(Init)h(Constructs],)k(page)f
-(91\).)74 b(Other)150 408 y(lines)29 b(denote)i(v)-5
-b(ariable)29 b(settings)h(and)g(k)m(ey)h(bindings.)150
-562 y(V)-8 b(ariable)30 b(Settings)630 671 y(Y)-8 b(ou)41
-b(can)g(mo)s(dify)d(the)j(run-time)e(b)s(eha)m(vior)g(of)i(Readline)e
-(b)m(y)h(altering)f(the)i(v)-5 b(alues)40 b(of)630 781
-y(v)-5 b(ariables)32 b(in)g(Readline)h(using)f(the)h
-Fs(set)g Ft(command)g(within)e(the)j(init)e(\014le.)49
-b(The)33 b(syn)m(tax)630 891 y(is)c(simple:)870 1022
+TeXDict begin 87 92 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2107 b(87)150 299 y(conditional)43
+b(constructs)e(\(see)i(Section)f(8.3.2)h([Conditional)f(Init)f
+(Constructs],)j(page)f(91\).)74 b(Other)150 408 y(lines)31
+b(denote)g(v)-5 b(ariable)31 b(settings)g(and)f(k)m(ey)h(bindings.)150
+562 y(V)-8 b(ariable)32 b(Settings)630 671 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(the)g(v)-5 b(alues)41 b(of)630 781
+y(v)-5 b(ariables)34 b(in)f(Readline)i(using)e(the)g
+Fs(set)g Ft(command)g(within)g(the)h(init)g(\014le.)50
+b(The)33 b(syn)m(tax)630 891 y(is)d(simple:)870 1022
 y Fs(set)47 b Fj(variable)56 b(value)630 1154 y Ft(Here,)29
-b(for)e(example,)g(is)g(ho)m(w)g(to)h(c)m(hange)g(from)f(the)g(default)
-g(Emacs-lik)m(e)g(k)m(ey)h(binding)c(to)630 1263 y(use)30
-b Fs(vi)g Ft(line)f(editing)g(commands:)870 1395 y Fs(set)47
-b(editing-mode)d(vi)630 1526 y Ft(V)-8 b(ariable)34 b(names)h(and)g(v)
--5 b(alues,)35 b(where)g(appropriate,)g(are)h(recognized)f(without)f
-(regard)630 1636 y(to)d(case.)630 1767 y(The)37 b Fs(bind)30
-b(-V)37 b Ft(command)g(lists)g(the)h(curren)m(t)f(Readline)g(v)-5
-b(ariable)36 b(names)i(and)f(v)-5 b(alues.)630 1877 y(See)31
-b(Section)f(4.2)h([Bash)g(Builtins],)d(page)j(39.)630
-2008 y(A)f(great)i(deal)e(of)h(run-time)e(b)s(eha)m(vior)g(is)g(c)m
-(hangeable)j(with)d(the)h(follo)m(wing)f(v)-5 b(ariables.)630
-2162 y Fs(bell-style)1110 2271 y Ft(Con)m(trols)43 b(what)h(happ)s(ens)
-e(when)h(Readline)g(w)m(an)m(ts)h(to)h(ring)d(the)i(termi-)1110
-2381 y(nal)36 b(b)s(ell.)59 b(If)37 b(set)h(to)g(`)p
-Fs(none)p Ft(',)g(Readline)e(nev)m(er)i(rings)d(the)j(b)s(ell.)59
+b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f(the)g(default)
+h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 1263 y(use)k
+Fs(vi)g Ft(line)h(editing)g(commands:)870 1395 y Fs(set)47
+b(editing-mode)d(vi)630 1526 y Ft(V)-8 b(ariable)36 b(names)f(and)g(v)
+-5 b(alues,)36 b(where)f(appropriate,)h(are)g(recognized)g(without)f
+(regard)630 1636 y(to)c(case.)630 1767 y(The)37 b Fs(bind)30
+b(-V)37 b Ft(command)g(lists)i(the)f(curren)m(t)f(Readline)i(v)-5
+b(ariable)38 b(names)g(and)f(v)-5 b(alues.)630 1877 y(See)31
+b(Section)g(4.2)g([Bash)g(Builtins],)g(page)g(39.)630
+2008 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g(is)g(c)m
+(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)630
+2162 y Fs(bell-style)1110 2271 y Ft(Con)m(trols)44 b(what)g(happ)s(ens)
+e(when)h(Readline)i(w)m(an)m(ts)f(to)h(ring)e(the)h(termi-)1110
+2381 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p
+Fs(none)p Ft(',)g(Readline)g(nev)m(er)g(rings)e(the)i(b)s(ell.)61
 b(If)36 b(set)i(to)1110 2491 y(`)p Fs(visible)p Ft(',)32
-b(Readline)g(uses)h(a)g(visible)d(b)s(ell)h(if)h(one)h(is)f(a)m(v)-5
-b(ailable.)48 b(If)33 b(set)g(to)1110 2600 y(`)p Fs(audible)p
-Ft(')j(\(the)i(default\),)h(Readline)d(attempts)i(to)h(ring)d(the)h
+b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g(one)g(is)g(a)m(v)-5
+b(ailable.)51 b(If)33 b(set)g(to)1110 2600 y(`)p Fs(audible)p
+Ft(')j(\(the)i(default\),)i(Readline)e(attempts)g(to)h(ring)e(the)g
 (terminal's)1110 2710 y(b)s(ell.)630 2863 y Fs(comment-begin)1110
-2973 y Ft(The)29 b(string)f(to)i(insert)e(at)i(the)f(b)s(eginning)e(of)
-i(the)h(line)d(when)h(the)i Fs(insert-)1110 3082 y(comment)e
-Ft(command)j(is)e(executed.)42 b(The)29 b(default)h(v)-5
-b(alue)30 b(is)f Fs("#")p Ft(.)630 3236 y Fs(completion-ignore-case)
-1110 3345 y Ft(If)e(set)h(to)g(`)p Fs(on)p Ft(',)g(Readline)e(p)s
-(erforms)g(\014lename)g(matc)m(hing)i(and)f(completion)1110
-3455 y(in)i(a)i(case-insensitiv)m(e)f(fashion.)39 b(The)30
-b(default)g(v)-5 b(alue)29 b(is)h(`)p Fs(off)p Ft('.)630
-3608 y Fs(completion-query-items)1110 3718 y Ft(The)c(n)m(um)m(b)s(er)f
-(of)h(p)s(ossible)e(completions)h(that)i(determines)e(when)g(the)i
-(user)1110 3828 y(is)h(ask)m(ed)i(whether)f(the)h(list)e(of)h(p)s
-(ossibilities)c(should)i(b)s(e)i(displa)m(y)m(ed.)39
-b(If)29 b(the)1110 3937 y(n)m(um)m(b)s(er)d(of)h(p)s(ossible)d
-(completions)i(is)g(greater)i(than)e(this)g(v)-5 b(alue,)27
-b(Readline)1110 4047 y(will)d(ask)j(the)f(user)g(whether)g(or)g(not)h
-(he)f(wishes)f(to)j(view)d(them;)j(otherwise,)1110 4156
-y(they)d(are)f(simply)e(listed.)38 b(This)22 b(v)-5 b(ariable)23
-b(m)m(ust)i(b)s(e)e(set)i(to)g(an)g(in)m(teger)f(v)-5
-b(alue)1110 4266 y(greater)32 b(than)e(or)g(equal)g(to)h(0.)41
-b(The)30 b(default)g(limit)e(is)h Fs(100)p Ft(.)630 4419
+2973 y Ft(The)29 b(string)g(to)h(insert)f(at)h(the)f(b)s(eginning)g(of)
+g(the)h(line)f(when)f(the)i Fs(insert-)1110 3082 y(comment)e
+Ft(command)j(is)f(executed.)42 b(The)29 b(default)i(v)-5
+b(alue)31 b(is)f Fs("#")p Ft(.)630 3236 y Fs(completion-ignore-case)
+1110 3345 y Ft(If)d(set)h(to)g(`)p Fs(on)p Ft(',)g(Readline)g(p)s
+(erforms)e(\014lename)h(matc)m(hing)i(and)e(completion)1110
+3455 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)40 b(The)30
+b(default)h(v)-5 b(alue)30 b(is)h(`)p Fs(off)p Ft('.)630
+3608 y Fs(completion-query-items)1110 3718 y Ft(The)26
+b(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h(that)g(determines)
+f(when)f(the)i(user)1110 3828 y(is)i(ask)m(ed)h(whether)f(the)h(list)g
+(of)f(p)s(ossibilities)h(should)e(b)s(e)h(displa)m(y)m(ed.)41
+b(If)29 b(the)1110 3937 y(n)m(um)m(b)s(er)d(of)h(p)s(ossible)f
+(completions)i(is)f(greater)h(than)e(this)h(v)-5 b(alue,)28
+b(Readline)1110 4047 y(will)f(ask)g(the)f(user)g(whether)g(or)g(not)h
+(he)f(wishes)g(to)i(view)e(them;)i(otherwise,)1110 4156
+y(they)d(are)f(simply)g(listed.)40 b(This)23 b(v)-5 b(ariable)25
+b(m)m(ust)g(b)s(e)e(set)i(to)g(an)g(in)m(teger)g(v)-5
+b(alue)1110 4266 y(greater)32 b(than)e(or)g(equal)h(to)g(0.)41
+b(The)30 b(default)h(limit)g(is)f Fs(100)p Ft(.)630 4419
 y Fs(convert-meta)1110 4529 y Ft(If)22 b(set)g(to)h(`)p
-Fs(on)p Ft(',)h(Readline)d(will)e(con)m(v)m(ert)24 b(c)m(haracters)f
-(with)e(the)h(eigh)m(th)g(bit)f(set)1110 4639 y(to)h(an)f
-Fl(asci)r(i)g Ft(k)m(ey)h(sequence)g(b)m(y)f(stripping)d(the)k(eigh)m
-(th)f(bit)f(and)h(pre\014xing)e(an)1110 4745 y Fg(h)p
-1134 4692 139 4 v 1134 4748 a Ff(ESC)p 1134 4764 V 1268
-4745 a Fg(i)1332 4748 y Ft(c)m(haracter,)36 b(con)m(v)m(erting)f(them)f
-(to)g(a)h(meta-pre\014xed)f(k)m(ey)g(sequence.)1110 4858
-y(The)c(default)f(v)-5 b(alue)30 b(is)g(`)p Fs(on)p Ft('.)630
-5011 y Fs(disable-completion)1110 5121 y Ft(If)36 b(set)h(to)h(`)p
-Fs(On)p Ft(',)g(Readline)d(will)f(inhibit)f(w)m(ord)k(completion.)58
-b(Completion)1110 5230 y(c)m(haracters)28 b(will)23 b(b)s(e)i(inserted)
-g(in)m(to)h(the)h(line)d(as)i(if)f(they)i(had)e(b)s(een)g(mapp)s(ed)
-1110 5340 y(to)31 b Fs(self-insert)p Ft(.)38 b(The)30
-b(default)f(is)h(`)p Fs(off)p Ft('.)p eop
+Fs(on)p Ft(',)h(Readline)f(will)f(con)m(v)m(ert)i(c)m(haracters)f(with)
+f(the)g(eigh)m(th)h(bit)f(set)1110 4639 y(to)g(an)f Fl(asci)r(i)g
+Ft(k)m(ey)h(sequence)g(b)m(y)f(stripping)f(the)i(eigh)m(th)g(bit)f(and)
+g(pre\014xing)f(an)1110 4745 y Fg(h)p 1134 4692 139 4
+v 1134 4748 a Ff(ESC)p 1134 4764 V 1268 4745 a Fg(i)1332
+4748 y Ft(c)m(haracter,)36 b(con)m(v)m(erting)g(them)e(to)g(a)h
+(meta-pre\014xed)f(k)m(ey)g(sequence.)1110 4858 y(The)c(default)g(v)-5
+b(alue)31 b(is)g(`)p Fs(on)p Ft('.)630 5011 y Fs(disable-completion)
+1110 5121 y Ft(If)36 b(set)h(to)h(`)p Fs(On)p Ft(',)g(Readline)f(will)g
+(inhibit)f(w)m(ord)h(completion.)60 b(Completion)1110
+5230 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h(in)m(to)h(the)g
+(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110
+5340 y(to)31 b Fs(self-insert)p Ft(.)38 b(The)30 b(default)g(is)h(`)p
+Fs(off)p Ft('.)p eop end
 %%Page: 88 94
-88 93 bop 150 -116 a Ft(88)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y Fs(editing-mode)1110 408 y Ft(The)d Fs(editing-mode)e
-Ft(v)-5 b(ariable)27 b(con)m(trols)i(whic)m(h)e(default)h(set)i(of)e(k)
-m(ey)i(bind-)1110 518 y(ings)24 b(is)g(used.)38 b(By)26
-b(default,)f(Readline)f(starts)h(up)f(in)g(Emacs)h(editing)f(mo)s(de,)
-1110 628 y(where)29 b(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)c
-(to)k(Emacs.)40 b(This)28 b(v)-5 b(ariable)28 b(can)1110
-737 y(b)s(e)i(set)h(to)g(either)f(`)p Fs(emacs)p Ft(')f(or)h(`)p
-Fs(vi)p Ft('.)630 934 y Fs(enable-keypad)1110 1044 y
-Ft(When)23 b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)d(will)f(try)i(to)
-h(enable)f(the)g(application)f(k)m(eypad)1110 1154 y(when)k(it)g(is)f
-(called.)39 b(Some)27 b(systems)f(need)h(this)e(to)i(enable)f(the)h
-(arro)m(w)g(k)m(eys.)1110 1263 y(The)j(default)f(is)h(`)p
-Fs(off)p Ft('.)630 1461 y Fs(expand-tilde)1110 1570 y
-Ft(If)d(set)h(to)h(`)p Fs(on)p Ft(',)f(tilde)e(expansion)h(is)f(p)s
-(erformed)g(when)h(Readline)f(attempts)1110 1680 y(w)m(ord)k
-(completion.)40 b(The)30 b(default)f(is)h(`)p Fs(off)p
-Ft('.)1110 1833 y(If)f(set)i(to)f(`)p Fs(on)p Ft(',)g(the)g(history)f
-(co)s(de)h(attempts)g(to)h(place)e(p)s(oin)m(t)g(at)i(the)f(same)1110
-1943 y(lo)s(cation)j(on)g(eac)m(h)i(history)d(line)g(retriev)m(ed)h
-(with)f Fs(previous-history)d Ft(or)1110 2052 y Fs(next-history)p
+TeXDict begin 88 93 bop 150 -116 a Ft(88)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y Fs(editing-mode)1110
+408 y Ft(The)d Fs(editing-mode)e Ft(v)-5 b(ariable)29
+b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k)m(ey)i(bind-)1110
+518 y(ings)25 b(is)g(used.)38 b(By)26 b(default,)g(Readline)g(starts)f
+(up)f(in)h(Emacs)g(editing)h(mo)s(de,)1110 628 y(where)j(the)g(k)m
+(eystrok)m(es)i(are)e(most)h(similar)f(to)h(Emacs.)40
+b(This)29 b(v)-5 b(ariable)30 b(can)1110 737 y(b)s(e)g(set)h(to)g
+(either)g(`)p Fs(emacs)p Ft(')e(or)h(`)p Fs(vi)p Ft('.)630
+934 y Fs(enable-keypad)1110 1044 y Ft(When)23 b(set)h(to)g(`)p
+Fs(on)p Ft(',)h(Readline)f(will)g(try)f(to)h(enable)g(the)f
+(application)i(k)m(eypad)1110 1154 y(when)h(it)h(is)f(called.)41
+b(Some)27 b(systems)f(need)h(this)f(to)h(enable)g(the)g(arro)m(w)g(k)m
+(eys.)1110 1263 y(The)j(default)g(is)h(`)p Fs(off)p Ft('.)630
+1461 y Fs(expand-tilde)1110 1570 y Ft(If)c(set)h(to)h(`)p
+Fs(on)p Ft(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h
+(Readline)h(attempts)1110 1680 y(w)m(ord)i(completion.)42
+b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)1110 1833
+y(If)e(set)i(to)f(`)p Fs(on)p Ft(',)g(the)g(history)g(co)s(de)g
+(attempts)g(to)h(place)f(p)s(oin)m(t)g(at)h(the)f(same)1110
+1943 y(lo)s(cation)35 b(on)e(eac)m(h)i(history)e(line)h(retriev)m(ed)g
+(with)f Fs(previous-history)c Ft(or)1110 2052 y Fs(next-history)p
 Ft(.)630 2250 y Fs(horizontal-scroll-mode)1110 2359 y
-Ft(This)34 b(v)-5 b(ariable)35 b(can)h(b)s(e)f(set)h(to)h(either)e(`)p
-Fs(on)p Ft(')h(or)g(`)p Fs(off)p Ft('.)57 b(Setting)35
-b(it)g(to)i(`)p Fs(on)p Ft(')1110 2469 y(means)26 b(that)h(the)f(text)h
-(of)g(the)f(lines)e(b)s(eing)h(edited)h(will)d(scroll)i(horizon)m
-(tally)1110 2578 y(on)32 b(a)g(single)e(screen)i(line)e(when)g(they)i
-(are)g(longer)g(than)f(the)h(width)e(of)i(the)1110 2688
-y(screen,)27 b(instead)f(of)g(wrapping)e(on)m(to)j(a)f(new)g(screen)g
-(line.)37 b(By)27 b(default,)f(this)1110 2798 y(v)-5
-b(ariable)29 b(is)h(set)g(to)i(`)p Fs(off)p Ft('.)630
+Ft(This)35 b(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f(`)p
+Fs(on)p Ft(')g(or)g(`)p Fs(off)p Ft('.)57 b(Setting)36
+b(it)g(to)h(`)p Fs(on)p Ft(')1110 2469 y(means)26 b(that)h(the)f(text)h
+(of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m
+(tally)1110 2578 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i
+(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 2688
+y(screen,)27 b(instead)g(of)f(wrapping)f(on)m(to)i(a)f(new)g(screen)g
+(line.)39 b(By)27 b(default,)g(this)1110 2798 y(v)-5
+b(ariable)31 b(is)g(set)f(to)i(`)p Fs(off)p Ft('.)630
 2995 y Fs(input-meta)1110 3104 y Ft(If)f(set)g(to)h(`)p
-Fs(on)p Ft(',)g(Readline)e(will)e(enable)j(eigh)m(t-bit)g(input)e(\(it)
-i(will)d(not)k(clear)1110 3214 y(the)40 b(eigh)m(th)f(bit)g(in)f(the)i
-(c)m(haracters)h(it)e(reads\),)k(regardless)38 b(of)i(what)g(the)1110
-3324 y(terminal)e(claims)h(it)h(can)g(supp)s(ort.)68
-b(The)39 b(default)g(v)-5 b(alue)39 b(is)g(`)p Fs(off)p
-Ft('.)69 b(The)1110 3433 y(name)30 b Fs(meta-flag)e Ft(is)i(a)g(synon)m
-(ym)g(for)g(this)g(v)-5 b(ariable.)630 3630 y Fs(isearch-terminators)
-1110 3740 y Ft(The)51 b(string)g(of)h(c)m(haracters)h(that)f(should)d
-(terminate)j(an)g(incremen)m(tal)1110 3850 y(searc)m(h)25
-b(without)f(subsequen)m(tly)g(executing)h(the)g(c)m(haracter)h(as)f(a)g
-(command)1110 3959 y(\(see)42 b(Section)e(8.2.5)j([Searc)m(hing],)h
-(page)d(86\).)73 b(If)41 b(this)f(v)-5 b(ariable)39 b(has)i(not)1110
-4069 y(b)s(een)31 b(giv)m(en)g(a)h(v)-5 b(alue,)31 b(the)h(c)m
+Fs(on)p Ft(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it)
+i(will)f(not)h(clear)1110 3214 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h
+(c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110
+3324 y(terminal)g(claims)h(it)g(can)f(supp)s(ort.)68
+b(The)39 b(default)h(v)-5 b(alue)40 b(is)g(`)p Fs(off)p
+Ft('.)69 b(The)1110 3433 y(name)30 b Fs(meta-flag)e Ft(is)j(a)f(synon)m
+(ym)g(for)g(this)h(v)-5 b(ariable.)630 3630 y Fs(isearch-terminators)
+1110 3740 y Ft(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e
+(terminate)j(an)f(incremen)m(tal)1110 3850 y(searc)m(h)25
+b(without)g(subsequen)m(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g
+(command)1110 3959 y(\(see)42 b(Section)f(8.2.5)i([Searc)m(hing],)i
+(page)c(86\).)73 b(If)41 b(this)g(v)-5 b(ariable)41 b(has)g(not)1110
+4069 y(b)s(een)31 b(giv)m(en)h(a)g(v)-5 b(alue,)32 b(the)g(c)m
 (haracters)2494 4066 y Fg(h)p 2518 4013 139 4 v 2518
 4069 a Ff(ESC)p 2518 4084 V 2652 4066 a Fg(i)2713 4069
-y Ft(and)f Fj(C-J)g Ft(will)e(terminate)i(an)1110 4178
-y(incremen)m(tal)f(searc)m(h.)630 4376 y Fs(keymap)192
-b Ft(Sets)39 b(Readline's)e(idea)i(of)g(the)g(curren)m(t)f(k)m(eymap)h
-(for)g(k)m(ey)g(binding)d(com-)1110 4485 y(mands.)81
-b(Acceptable)46 b Fs(keymap)c Ft(names)i(are)h Fs(emacs)p
+y Ft(and)f Fj(C-J)g Ft(will)h(terminate)g(an)1110 4178
+y(incremen)m(tal)g(searc)m(h.)630 4376 y Fs(keymap)192
+b Ft(Sets)39 b(Readline's)g(idea)h(of)f(the)g(curren)m(t)f(k)m(eymap)h
+(for)g(k)m(ey)g(binding)f(com-)1110 4485 y(mands.)81
+b(Acceptable)47 b Fs(keymap)42 b Ft(names)i(are)h Fs(emacs)p
 Ft(,)i Fs(emacs-standard)p Ft(,)1110 4595 y Fs(emacs-meta)p
 Ft(,)99 b Fs(emacs-ctlx)p Ft(,)f Fs(vi)p Ft(,)j Fs(vi-move)p
 Ft(,)f Fs(vi-command)p Ft(,)f(and)1110 4704 y Fs(vi-insert)p
-Ft(.)64 b Fs(vi)38 b Ft(is)g(equiv)-5 b(alen)m(t)39 b(to)g
-Fs(vi-command)p Ft(;)i Fs(emacs)c Ft(is)h(equiv)-5 b(alen)m(t)1110
-4814 y(to)33 b Fs(emacs-standard)p Ft(.)41 b(The)31 b(default)g(v)-5
-b(alue)31 b(is)g Fs(emacs)p Ft(.)44 b(The)31 b(v)-5 b(alue)32
-b(of)g(the)1110 4924 y Fs(editing-mode)27 b Ft(v)-5 b(ariable)29
-b(also)i(a\013ects)g(the)g(default)e(k)m(eymap.)630 5121
+Ft(.)64 b Fs(vi)38 b Ft(is)h(equiv)-5 b(alen)m(t)41 b(to)e
+Fs(vi-command)p Ft(;)i Fs(emacs)c Ft(is)i(equiv)-5 b(alen)m(t)1110
+4814 y(to)33 b Fs(emacs-standard)p Ft(.)41 b(The)31 b(default)h(v)-5
+b(alue)32 b(is)g Fs(emacs)p Ft(.)44 b(The)31 b(v)-5 b(alue)33
+b(of)f(the)1110 4924 y Fs(editing-mode)27 b Ft(v)-5 b(ariable)31
+b(also)h(a\013ects)f(the)g(default)f(k)m(eymap.)630 5121
 y Fs(mark-directories)1110 5230 y Ft(If)38 b(set)g(to)h(`)p
-Fs(on)p Ft(',)i(completed)d(directory)f(names)h(ha)m(v)m(e)i(a)e(slash)
-f(app)s(ended.)1110 5340 y(The)30 b(default)f(is)h(`)p
-Fs(on)p Ft('.)p eop
+Fs(on)p Ft(',)i(completed)e(directory)f(names)g(ha)m(v)m(e)i(a)e(slash)
+g(app)s(ended.)1110 5340 y(The)30 b(default)g(is)h(`)p
+Fs(on)p Ft('.)p eop end
 %%Page: 89 95
-89 94 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2105 b(89)630 299 y Fs(mark-modified-lines)1110
-408 y Ft(This)34 b(v)-5 b(ariable,)36 b(when)f(set)h(to)h(`)p
-Fs(on)p Ft(',)g(causes)g(Readline)d(to)j(displa)m(y)d(an)h(as-)1110
-518 y(terisk)e(\(`)p Fs(*)p Ft('\))i(at)f(the)g(start)g(of)g(history)f
-(lines)f(whic)m(h)g(ha)m(v)m(e)j(b)s(een)e(mo)s(di\014ed.)1110
-628 y(This)c(v)-5 b(ariable)29 b(is)g(`)p Fs(off)p Ft(')h(b)m(y)g
-(default.)630 786 y Fs(mark-symlinked-directori)o(es)1110
-896 y Ft(If)44 b(set)h(to)h(`)p Fs(on)p Ft(',)i(completed)d(names)g
-(whic)m(h)e(are)i(sym)m(b)s(olic)e(links)g(to)i(di-)1110
-1005 y(rectories)i(ha)m(v)m(e)g(a)g(slash)e(app)s(ended)f(\(sub)5
-b(ject)47 b(to)g(the)f(v)-5 b(alue)46 b(of)g Fs(mark-)1110
-1115 y(directories)p Ft(\).)38 b(The)30 b(default)f(is)h(`)p
-Fs(off)p Ft('.)630 1273 y Fs(match-hidden-files)1110
-1383 y Ft(This)20 b(v)-5 b(ariable,)23 b(when)f(set)g(to)h(`)p
-Fs(on)p Ft(',)h(causes)f(Readline)e(to)i(matc)m(h)g(\014les)e(whose)
-1110 1492 y(names)44 b(b)s(egin)f(with)g(a)h(`)p Fs(.)p
-Ft(')g(\(hidden)e(\014les\))i(when)f(p)s(erforming)f(\014lename)1110
-1602 y(completion,)i(unless)c(the)h(leading)f(`)p Fs(.)p
-Ft(')i(is)f(supplied)d(b)m(y)j(the)h(user)f(in)f(the)1110
-1711 y(\014lename)30 b(to)h(b)s(e)e(completed.)41 b(This)29
-b(v)-5 b(ariable)29 b(is)g(`)p Fs(on)p Ft(')i(b)m(y)f(default.)630
+TeXDict begin 89 94 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2107 b(89)630 299 y Fs
+(mark-modified-lines)1110 408 y Ft(This)35 b(v)-5 b(ariable,)38
+b(when)d(set)h(to)h(`)p Fs(on)p Ft(',)g(causes)g(Readline)f(to)h
+(displa)m(y)f(an)f(as-)1110 518 y(terisk)f(\(`)p Fs(*)p
+Ft('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f(ha)m(v)m
+(e)i(b)s(een)e(mo)s(di\014ed.)1110 628 y(This)d(v)-5
+b(ariable)31 b(is)f(`)p Fs(off)p Ft(')g(b)m(y)g(default.)630
+786 y Fs(mark-symlinked-directori)o(es)1110 896 y Ft(If)44
+b(set)h(to)h(`)p Fs(on)p Ft(',)i(completed)e(names)f(whic)m(h)f(are)h
+(sym)m(b)s(olic)g(links)g(to)g(di-)1110 1005 y(rectories)j(ha)m(v)m(e)f
+(a)g(slash)f(app)s(ended)e(\(sub)5 b(ject)47 b(to)g(the)f(v)-5
+b(alue)47 b(of)f Fs(mark-)1110 1115 y(directories)p Ft(\).)38
+b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 1273
+y Fs(match-hidden-files)1110 1383 y Ft(This)21 b(v)-5
+b(ariable,)25 b(when)d(set)g(to)h(`)p Fs(on)p Ft(',)h(causes)f
+(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 1492
+y(names)44 b(b)s(egin)g(with)g(a)g(`)p Fs(.)p Ft(')g(\(hidden)f
+(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 1602
+y(completion,)j(unless)41 b(the)g(leading)h(`)p Fs(.)p
+Ft(')g(is)g(supplied)e(b)m(y)h(the)h(user)f(in)g(the)1110
+1711 y(\014lename)31 b(to)g(b)s(e)e(completed.)42 b(This)30
+b(v)-5 b(ariable)31 b(is)f(`)p Fs(on)p Ft(')h(b)m(y)f(default.)630
 1870 y Fs(output-meta)1110 1979 y Ft(If)35 b(set)h(to)g(`)p
-Fs(on)p Ft(',)h(Readline)d(will)f(displa)m(y)g(c)m(haracters)k(with)d
-(the)i(eigh)m(th)f(bit)1110 2089 y(set)i(directly)e(rather)h(than)g(as)
+Fs(on)p Ft(',)h(Readline)f(will)g(displa)m(y)f(c)m(haracters)i(with)e
+(the)h(eigh)m(th)g(bit)1110 2089 y(set)h(directly)g(rather)f(than)g(as)
 h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59 b(The)1110
-2198 y(default)30 b(is)f(`)p Fs(off)p Ft('.)630 2357
-y Fs(page-completions)1110 2466 y Ft(If)k(set)i(to)f(`)p
-Fs(on)p Ft(',)h(Readline)e(uses)g(an)h(in)m(ternal)f
-Fs(more)p Ft(-lik)m(e)f(pager)i(to)h(displa)m(y)1110
-2576 y(a)e(screenful)e(of)h(p)s(ossible)e(completions)i(at)h(a)g(time.)
-46 b(This)30 b(v)-5 b(ariable)32 b(is)f(`)p Fs(on)p Ft(')1110
-2685 y(b)m(y)f(default.)630 2844 y Fs(print-completions-horizo)o(ntal)o
-(ly)1110 2953 y Ft(If)23 b(set)i(to)g(`)p Fs(on)p Ft(',)g(Readline)e
-(will)e(displa)m(y)h(completions)h(with)g(matc)m(hes)i(sorted)1110
-3063 y(horizon)m(tally)42 b(in)g(alphab)s(etical)g(order,)47
-b(rather)c(than)g(do)m(wn)g(the)h(screen.)1110 3173 y(The)30
-b(default)f(is)h(`)p Fs(off)p Ft('.)630 3331 y Fs
-(show-all-if-ambiguous)1110 3440 y Ft(This)e(alters)i(the)g(default)f
-(b)s(eha)m(vior)g(of)h(the)h(completion)e(functions.)39
-b(If)29 b(set)1110 3550 y(to)f(`)p Fs(on)p Ft(',)g(w)m(ords)f(whic)m(h)
-f(ha)m(v)m(e)j(more)f(than)f(one)h(p)s(ossible)d(completion)h(cause)
-1110 3660 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)f(immediately)h
-(instead)g(of)h(ringing)e(the)i(b)s(ell.)1110 3769 y(The)30
-b(default)f(v)-5 b(alue)30 b(is)g(`)p Fs(off)p Ft('.)630
-3927 y Fs(show-all-if-unmodified)1110 4037 y Ft(This)37
-b(alters)h(the)h(default)f(b)s(eha)m(vior)g(of)g(the)h(completion)f
-(functions)f(in)h(a)1110 4147 y(fashion)24 b(similar)f(to)j
-Fq(sho)m(w-all-if-am)m(biguous)p Ft(.)37 b(If)25 b(set)h(to)h(`)p
-Fs(on)p Ft(',)f(w)m(ords)f(whic)m(h)1110 4256 y(ha)m(v)m(e)32
-b(more)f(than)f(one)i(p)s(ossible)c(completion)i(without)g(an)m(y)h(p)s
-(ossible)d(par-)1110 4366 y(tial)41 b(completion)h(\(the)h(p)s(ossible)
-d(completions)h(don't)h(share)g(a)h(common)1110 4475
-y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)e
-(immediately)h(instead)g(of)i(ring-)1110 4585 y(ing)f(the)g(b)s(ell.)39
-b(The)30 b(default)f(v)-5 b(alue)30 b(is)f(`)p Fs(off)p
-Ft('.)630 4743 y Fs(visible-stats)1110 4853 y Ft(If)i(set)i(to)f(`)p
-Fs(on)p Ft(',)h(a)f(c)m(haracter)i(denoting)d(a)h(\014le's)f(t)m(yp)s
-(e)h(is)f(app)s(ended)f(to)j(the)1110 4963 y(\014lename)d(when)f
-(listing)f(p)s(ossible)g(completions.)40 b(The)30 b(default)f(is)h(`)p
-Fs(off)p Ft('.)150 5121 y(Key)g(Bindings)630 5230 y(The)41
-b(syn)m(tax)i(for)f(con)m(trolling)e(k)m(ey)j(bindings)c(in)i(the)h
-(init)e(\014le)h(is)g(simple.)73 b(First)42 b(y)m(ou)630
+2198 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 2357
+y Fs(page-completions)1110 2466 y Ft(If)j(set)i(to)f(`)p
+Fs(on)p Ft(',)h(Readline)g(uses)e(an)h(in)m(ternal)h
+Fs(more)p Ft(-lik)m(e)f(pager)g(to)h(displa)m(y)1110
+2576 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.)
+47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Fs(on)p Ft(')1110
+2685 y(b)m(y)e(default.)630 2844 y Fs(print-completions-horizo)o(ntal)o
+(ly)1110 2953 y Ft(If)23 b(set)i(to)g(`)p Fs(on)p Ft(',)g(Readline)g
+(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110
+3063 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c
+(than)g(do)m(wn)g(the)h(screen.)1110 3173 y(The)30 b(default)g(is)h(`)p
+Fs(off)p Ft('.)630 3331 y Fs(show-all-if-ambiguous)1110
+3440 y Ft(This)e(alters)i(the)f(default)g(b)s(eha)m(vior)g(of)g(the)h
+(completion)g(functions.)40 b(If)29 b(set)1110 3550 y(to)f(`)p
+Fs(on)p Ft(',)g(w)m(ords)f(whic)m(h)g(ha)m(v)m(e)i(more)f(than)f(one)h
+(p)s(ossible)f(completion)h(cause)1110 3660 y(the)39
+b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i(instead)e(of)g
+(ringing)g(the)g(b)s(ell.)1110 3769 y(The)30 b(default)g(v)-5
+b(alue)31 b(is)g(`)p Fs(off)p Ft('.)630 3927 y Fs
+(show-all-if-unmodified)1110 4037 y Ft(This)38 b(alters)h(the)g
+(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h(functions)e(in)h(a)
+1110 4147 y(fashion)25 b(similar)h(to)g Fq(sho)m(w-all-if-am)m(biguous)
+p Ft(.)41 b(If)25 b(set)h(to)h(`)p Fs(on)p Ft(',)f(w)m(ords)f(whic)m(h)
+1110 4256 y(ha)m(v)m(e)32 b(more)f(than)f(one)i(p)s(ossible)e
+(completion)i(without)f(an)m(y)g(p)s(ossible)f(par-)1110
+4366 y(tial)43 b(completion)h(\(the)f(p)s(ossible)f(completions)h
+(don't)f(share)g(a)h(common)1110 4475 y(pre\014x\))30
+b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g(immediately)i
+(instead)e(of)h(ring-)1110 4585 y(ing)g(the)f(b)s(ell.)41
+b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Fs(off)p
+Ft('.)630 4743 y Fs(visible-stats)1110 4853 y Ft(If)h(set)i(to)f(`)p
+Fs(on)p Ft(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s
+(e)g(is)g(app)s(ended)e(to)j(the)1110 4963 y(\014lename)e(when)e
+(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p
+Fs(off)p Ft('.)150 5121 y(Key)f(Bindings)630 5230 y(The)41
+b(syn)m(tax)i(for)f(con)m(trolling)h(k)m(ey)g(bindings)e(in)h(the)g
+(init)g(\014le)g(is)g(simple.)75 b(First)43 b(y)m(ou)630
 5340 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h(the)g(command)f(that)i
 (y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 b(The)27 b(follo)m(wing)p
-eop
+eop end
 %%Page: 90 96
-90 95 bop 150 -116 a Ft(90)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y(sections)36 b(con)m(tain)g(tables)g(of)g(the)g(command)f(name,)j
-(the)e(default)f(k)m(eybinding,)g(if)g(an)m(y)-8 b(,)630
-408 y(and)30 b(a)h(short)f(description)e(of)j(what)f(the)g(command)h
-(do)s(es.)630 543 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g(name)g(of)g(the)
-g(command,)h(simply)d(place)i(on)f(a)i(line)d(in)h(the)h(init)630
-653 y(\014le)d(the)h(name)f(of)h(the)g(k)m(ey)g(y)m(ou)g(wish)e(to)i
-(bind)e(the)i(command)f(to,)i(a)f(colon,)h(and)e(then)630
+TeXDict begin 90 95 bop 150 -116 a Ft(90)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(sections)37 b(con)m(tain)g(tables)g
+(of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an)
+m(y)-8 b(,)630 408 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 543 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g
+(name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g
+(the)g(init)630 653 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m(ou)
+g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)630
 762 y(the)f(name)g(of)g(the)g(command.)46 b(The)31 b(name)h(of)g(the)g
-(k)m(ey)h(can)f(b)s(e)f(expressed)h(in)e(di\013eren)m(t)630
-872 y(w)m(a)m(ys,)h(dep)s(ending)d(on)j(what)f(y)m(ou)h(\014nd)d(most)j
-(comfortable.)630 1006 y(In)k(addition)f(to)j(command)f(names,)i
-(readline)c(allo)m(ws)h(k)m(eys)i(to)g(b)s(e)e(b)s(ound)f(to)j(a)f
-(string)630 1116 y(that)31 b(is)e(inserted)h(when)f(the)i(k)m(ey)g(is)e
-(pressed)h(\(a)h Fq(macro)5 b Ft(\).)630 1250 y(The)42
-b Fs(bind)30 b(-p)42 b Ft(command)h(displa)m(ys)e(Readline)g(function)h
-(names)h(and)f(bindings)e(in)i(a)630 1360 y(format)37
-b(that)h(can)f(put)f(directly)g(in)m(to)h(an)g(initialization)d
-(\014le.)59 b(See)38 b(Section)e(4.2)j([Bash)630 1469
-y(Builtins],)28 b(page)j(39.)630 1629 y Fq(k)m(eyname)5
-b Ft(:)42 b Fq(function-name)34 b Ft(or)d Fq(macro)1110
-1738 y(k)m(eyname)k Ft(is)28 b(the)g(name)h(of)g(a)g(k)m(ey)h(sp)s
-(elled)c(out)j(in)f(English.)37 b(F)-8 b(or)30 b(example:)1350
+(k)m(ey)h(can)f(b)s(e)f(expressed)h(in)f(di\013eren)m(t)630
+872 y(w)m(a)m(ys,)g(dep)s(ending)e(on)i(what)f(y)m(ou)h(\014nd)d(most)j
+(comfortable.)630 1006 y(In)k(addition)h(to)h(command)f(names,)i
+(readline)e(allo)m(ws)h(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f
+(string)630 1116 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f
+(pressed)g(\(a)h Fq(macro)5 b Ft(\).)630 1250 y(The)42
+b Fs(bind)30 b(-p)42 b Ft(command)h(displa)m(ys)g(Readline)g(function)g
+(names)g(and)f(bindings)g(in)h(a)630 1360 y(format)37
+b(that)h(can)f(put)f(directly)i(in)m(to)g(an)f(initialization)j
+(\014le.)60 b(See)38 b(Section)f(4.2)i([Bash)630 1469
+y(Builtins],)31 b(page)g(39.)630 1629 y Fq(k)m(eyname)5
+b Ft(:)42 b Fq(function-name)35 b Ft(or)c Fq(macro)1110
+1738 y(k)m(eyname)k Ft(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s
+(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350
 1873 y Fs(Control-u:)45 b(universal-argument)1350 1983
 y(Meta-Rubout:)f(backward-kill-word)1350 2092 y(Control-o:)h(">)i
-(output")1110 2227 y Ft(In)38 b(the)h(ab)s(o)m(v)m(e)h(example,)g
-Fj(C-u)e Ft(is)g(b)s(ound)e(to)k(the)e(function)g Fs(universal-)1110
-2336 y(argument)p Ft(,)g Fj(M-DEL)e Ft(is)h(b)s(ound)f(to)i(the)g
-(function)f Fs(backward-kill-word)p Ft(,)1110 2446 y(and)h
-Fj(C-o)g Ft(is)g(b)s(ound)f(to)j(run)d(the)j(macro)f(expressed)g(on)f
-(the)i(righ)m(t)e(hand)1110 2555 y(side)29 b(\(that)j(is,)d(to)i
-(insert)f(the)g(text)i(`)p Fs(>)e(output)p Ft(')f(in)m(to)h(the)h
-(line\).)1110 2690 y(A)37 b(n)m(um)m(b)s(er)f(of)h(sym)m(b)s(olic)e(c)m
-(haracter)k(names)e(are)g(recognized)g(while)e(pro-)1110
-2800 y(cessing)23 b(this)g(k)m(ey)h(binding)d(syn)m(tax:)37
+(output")1110 2227 y Ft(In)38 b(the)h(ab)s(o)m(v)m(e)h(example,)h
+Fj(C-u)d Ft(is)h(b)s(ound)d(to)k(the)e(function)h Fs(universal-)1110
+2336 y(argument)p Ft(,)f Fj(M-DEL)e Ft(is)i(b)s(ound)e(to)i(the)g
+(function)g Fs(backward-kill-word)p Ft(,)1110 2446 y(and)g
+Fj(C-o)g Ft(is)h(b)s(ound)e(to)j(run)d(the)j(macro)f(expressed)g(on)f
+(the)i(righ)m(t)f(hand)1110 2555 y(side)30 b(\(that)i(is,)e(to)h
+(insert)g(the)f(text)i(`)p Fs(>)e(output)p Ft(')f(in)m(to)i(the)g
+(line\).)1110 2690 y(A)37 b(n)m(um)m(b)s(er)f(of)h(sym)m(b)s(olic)g(c)m
+(haracter)i(names)e(are)g(recognized)h(while)f(pro-)1110
+2800 y(cessing)24 b(this)g(k)m(ey)g(binding)f(syn)m(tax:)37
 b Fq(DEL)p Ft(,)24 b Fq(ESC)p Ft(,)f Fq(ESCAPE)p Ft(,)g
 Fq(LFD)p Ft(,)h Fq(NEW-)1110 2909 y(LINE)p Ft(,)30 b
 Fq(RET)p Ft(,)g Fq(RETURN)p Ft(,)h Fq(R)m(UBOUT)p Ft(,)g
 Fq(SP)-8 b(A)m(CE)p Ft(,)30 b Fq(SPC)p Ft(,)g(and)f Fq(T)-8
 b(AB)p Ft(.)630 3068 y Fs(")p Fq(k)m(eyseq)r Fs(")p Ft(:)41
-b Fq(function-name)35 b Ft(or)30 b Fq(macro)1110 3178
-y(k)m(eyseq)k Ft(di\013ers)c(from)g Fq(k)m(eyname)37
-b Ft(ab)s(o)m(v)m(e)32 b(in)e(that)i(strings)e(denoting)g(an)h(en-)1110
-3288 y(tire)i(k)m(ey)i(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)g(b)m
-(y)g(placing)g(the)h(k)m(ey)g(sequence)g(in)1110 3397
-y(double)28 b(quotes.)41 b(Some)29 b Fl(gnu)h Ft(Emacs)f(st)m(yle)h(k)m
-(ey)g(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 3507
-y(in)j(the)i(follo)m(wing)f(example,)h(but)f(the)h(sp)s(ecial)f(c)m
-(haracter)i(names)f(are)g(not)1110 3616 y(recognized.)1350
+b Fq(function-name)36 b Ft(or)30 b Fq(macro)1110 3178
+y(k)m(eyseq)k Ft(di\013ers)d(from)f Fq(k)m(eyname)37
+b Ft(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110
+3288 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m
+(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 3397
+y(double)29 b(quotes.)41 b(Some)29 b Fl(gnu)h Ft(Emacs)f(st)m(yle)i(k)m
+(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 3507
+y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s(ecial)h(c)m
+(haracter)g(names)f(are)g(not)1110 3616 y(recognized.)1350
 3751 y Fs("\\C-u":)46 b(universal-argument)1350 3861
 y("\\C-x\\C-r":)f(re-read-init-file)1350 3970 y("\\e[11~":)g("Function)
-h(Key)g(1")1110 4105 y Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)73
-b Fj(C-u)64 b Ft(is)f(again)i(b)s(ound)d(to)k(the)e(function)1110
-4214 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)f(w)m(as)h(in)f
-(the)g(\014rst)g(example\),)48 b(`)p Fj(C-x)1110 4324
-y(C-r)p Ft(')41 b(is)f(b)s(ound)f(to)j(the)f(function)f
-Fs(re-read-init-file)p Ft(,)f(and)i(`)3462 4321 y Fg(h)p
+h(Key)g(1")1110 4105 y Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74
+b Fj(C-u)64 b Ft(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110
+4214 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)g(w)m(as)g(in)g
+(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 4324
+y(C-r)p Ft(')41 b(is)g(b)s(ound)e(to)j(the)f(function)g
+Fs(re-read-init-file)p Ft(,)e(and)i(`)3462 4321 y Fg(h)p
 3486 4268 139 4 v 3486 4324 a Ff(ESC)p 3486 4339 V 3620
 4321 a Fg(i)31 b(h)p 3705 4268 20 4 v 3705 4324 a Ff([)p
 3705 4340 V 3720 4321 a Fg(i)1110 4430 y(h)p 1134 4377
 36 4 v 1134 4433 a Ff(1)p 1134 4449 V 1165 4430 a Fg(i)f(h)p
 1250 4377 V 1250 4433 a Ff(1)p 1250 4449 V 1281 4430
 a Fg(i)g(h)p 1365 4377 48 4 v 1365 4433 a Fs(~)p 1365
-4449 V 1409 4430 a Fg(i)1438 4433 y Ft(')h(is)e(b)s(ound)g(to)i(insert)
-e(the)i(text)g(`)p Fs(Function)d(Key)i(1)p Ft('.)630
-4593 y(The)f(follo)m(wing)f Fl(gnu)i Ft(Emacs)g(st)m(yle)g(escap)s(e)g
-(sequences)g(are)g(a)m(v)-5 b(ailable)29 b(when)g(sp)s(ecifying)630
-4702 y(k)m(ey)i(sequences:)630 4862 y Fj(\\C-)336 b Ft(con)m(trol)31
+4449 V 1409 4430 a Fg(i)1438 4433 y Ft(')h(is)f(b)s(ound)f(to)i(insert)
+f(the)h(text)g(`)p Fs(Function)d(Key)i(1)p Ft('.)630
+4593 y(The)f(follo)m(wing)i Fl(gnu)f Ft(Emacs)g(st)m(yle)h(escap)s(e)f
+(sequences)g(are)g(a)m(v)-5 b(ailable)32 b(when)d(sp)s(ecifying)630
+4702 y(k)m(ey)i(sequences:)630 4862 y Fj(\\C-)336 b Ft(con)m(trol)32
 b(pre\014x)630 5021 y Fj(\\M-)336 b Ft(meta)31 b(pre\014x)630
 5181 y Fj(\\e)384 b Ft(an)30 b(escap)s(e)h(c)m(haracter)630
-5340 y Fj(\\\\)384 b Ft(bac)m(kslash)p eop
+5340 y Fj(\\\\)384 b Ft(bac)m(kslash)p eop end
 %%Page: 91 97
-91 96 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2105 b(91)630 299 y Fj(\\)p Fs(")1110
-296 y Fg(h)p 1134 243 48 4 v 1134 299 a Fs(")p 1134 314
-V 1178 296 a Fg(i)1208 299 y Ft(,)30 b(a)h(double)e(quotation)h(mark)
-630 460 y Fj(\\')1110 457 y Fg(h)p 1134 403 20 4 v 1134
-460 a Ff(')p 1134 475 V 1150 457 a Fg(i)1179 460 y Ft(,)h(a)g(single)e
-(quote)i(or)f(ap)s(ostrophe)630 620 y(In)d(addition)f(to)i(the)g
-Fl(gnu)f Ft(Emacs)h(st)m(yle)g(escap)s(e)g(sequences,)h(a)f(second)f
-(set)h(of)g(bac)m(kslash)630 730 y(escap)s(es)j(is)e(a)m(v)-5
-b(ailable:)630 890 y Fs(\\a)384 b Ft(alert)30 b(\(b)s(ell\))630
-1051 y Fs(\\b)384 b Ft(bac)m(kspace)630 1212 y Fs(\\d)g
-Ft(delete)630 1372 y Fs(\\f)g Ft(form)30 b(feed)630 1533
-y Fs(\\n)384 b Ft(newline)630 1694 y Fs(\\r)g Ft(carriage)31
-b(return)630 1854 y Fs(\\t)384 b Ft(horizon)m(tal)30
-b(tab)630 2015 y Fs(\\v)384 b Ft(v)m(ertical)30 b(tab)630
-2176 y Fs(\\)p Fj(nnn)288 b Ft(the)35 b(eigh)m(t-bit)f(c)m(haracter)i
-(whose)e(v)-5 b(alue)34 b(is)g(the)g(o)s(ctal)h(v)-5
-b(alue)34 b Fq(nnn)f Ft(\(one)i(to)1110 2285 y(three)c(digits\))630
-2446 y Fs(\\x)p Fj(HH)288 b Ft(the)40 b(eigh)m(t-bit)f(c)m(haracter)i
-(whose)e(v)-5 b(alue)38 b(is)h(the)g(hexadecimal)g(v)-5
-b(alue)39 b Fq(HH)1110 2555 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
-(digits\))630 2716 y(When)37 b(en)m(tering)g(the)h(text)g(of)g(a)g
-(macro,)i(single)c(or)h(double)f(quotes)i(m)m(ust)f(b)s(e)g(used)f(to)
-630 2826 y(indicate)21 b(a)g(macro)h(de\014nition.)36
-b(Unquoted)21 b(text)i(is)d(assumed)h(to)h(b)s(e)f(a)h(function)e
-(name.)38 b(In)630 2935 y(the)22 b(macro)f(b)s(o)s(dy)-8
-b(,)23 b(the)e(bac)m(kslash)g(escap)s(es)h(describ)s(ed)d(ab)s(o)m(v)m
-(e)k(are)e(expanded.)37 b(Bac)m(kslash)630 3045 y(will)g(quote)k(an)m
-(y)f(other)g(c)m(haracter)i(in)c(the)j(macro)f(text,)k(including)36
-b(`)p Fs(")p Ft(')k(and)g(`)p Fs(')p Ft('.)69 b(F)-8
-b(or)630 3154 y(example,)27 b(the)f(follo)m(wing)e(binding)e(will)h
-(mak)m(e)k(`)p Fj(C-x)j Fs(\\)p Ft(')c(insert)e(a)i(single)f(`)p
-Fs(\\)p Ft(')h(in)m(to)f(the)h(line:)870 3290 y Fs("\\C-x\\\\":)45
+TeXDict begin 91 96 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2107 b(91)630 299 y Fj(\\)p
+Fs(")1110 296 y Fg(h)p 1134 243 48 4 v 1134 299 a Fs(")p
+1134 314 V 1178 296 a Fg(i)1208 299 y Ft(,)30 b(a)h(double)f(quotation)
+h(mark)630 460 y Fj(\\')1110 457 y Fg(h)p 1134 403 20
+4 v 1134 460 a Ff(')p 1134 475 V 1150 457 a Fg(i)1179
+460 y Ft(,)g(a)g(single)g(quote)g(or)f(ap)s(ostrophe)630
+620 y(In)d(addition)h(to)g(the)g Fl(gnu)f Ft(Emacs)h(st)m(yle)h(escap)s
+(e)f(sequences,)h(a)f(second)f(set)h(of)g(bac)m(kslash)630
+730 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 890 y
+Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 1051 y Fs(\\b)384
+b Ft(bac)m(kspace)630 1212 y Fs(\\d)g Ft(delete)630 1372
+y Fs(\\f)g Ft(form)30 b(feed)630 1533 y Fs(\\n)384 b
+Ft(newline)630 1694 y Fs(\\r)g Ft(carriage)32 b(return)630
+1854 y Fs(\\t)384 b Ft(horizon)m(tal)32 b(tab)630 2015
+y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630 2176 y Fs(\\)p
+Fj(nnn)288 b Ft(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5
+b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fq(nnn)e
+Ft(\(one)i(to)1110 2285 y(three)c(digits\))630 2446 y
+Fs(\\x)p Fj(HH)288 b Ft(the)40 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e
+(v)-5 b(alue)39 b(is)h(the)f(hexadecimal)i(v)-5 b(alue)40
+b Fq(HH)1110 2555 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630
+2716 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e
+(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630
+2826 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21
+b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f(name.)38
+b(In)630 2935 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23
+b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m(e)j
+(are)e(expanded.)37 b(Bac)m(kslash)630 3045 y(will)j(quote)h(an)m(y)f
+(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39
+b(`)p Fs(")p Ft(')h(and)g(`)p Fs(')p Ft('.)69 b(F)-8
+b(or)630 3154 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i
+(mak)m(e)h(`)p Fj(C-x)j Fs(\\)p Ft(')c(insert)f(a)h(single)h(`)p
+Fs(\\)p Ft(')f(in)m(to)g(the)g(line:)870 3290 y Fs("\\C-x\\\\":)45
 b("\\\\")150 3516 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs)
-275 3762 y Ft(Readline)34 b(implemen)m(ts)f(a)j(facilit)m(y)f(similar)d
-(in)i(spirit)f(to)j(the)g(conditional)e(compilation)g(features)150
-3871 y(of)h(the)f(C)g(prepro)s(cessor)g(whic)m(h)f(allo)m(ws)h(k)m(ey)h
-(bindings)c(and)j(v)-5 b(ariable)33 b(settings)i(to)g(b)s(e)f(p)s
-(erformed)f(as)150 3981 y(the)e(result)e(of)h(tests.)42
-b(There)30 b(are)h(four)e(parser)h(directiv)m(es)g(used.)150
-4142 y Fs($if)336 b Ft(The)31 b Fs($if)f Ft(construct)i(allo)m(ws)f
-(bindings)d(to)k(b)s(e)e(made)i(based)f(on)g(the)g(editing)f(mo)s(de,)i
-(the)630 4252 y(terminal)37 b(b)s(eing)f(used,)k(or)e(the)g
-(application)e(using)h(Readline.)62 b(The)38 b(text)h(of)f(the)g(test)
-630 4361 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)e(no)h(c)m
-(haracters)i(are)f(required)d(to)j(isolate)g(it.)630
+275 3762 y Ft(Readline)36 b(implemen)m(ts)f(a)h(facilit)m(y)i(similar)d
+(in)g(spirit)g(to)h(the)g(conditional)h(compilation)g(features)150
+3871 y(of)e(the)f(C)g(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)f
+(bindings)e(and)h(v)-5 b(ariable)35 b(settings)h(to)f(b)s(e)f(p)s
+(erformed)f(as)150 3981 y(the)e(result)f(of)g(tests.)42
+b(There)30 b(are)h(four)e(parser)h(directiv)m(es)i(used.)150
+4142 y Fs($if)336 b Ft(The)31 b Fs($if)f Ft(construct)i(allo)m(ws)h
+(bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g
+(the)630 4252 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g
+(application)h(using)f(Readline.)64 b(The)38 b(text)h(of)f(the)g(test)
+630 4361 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m
+(haracters)i(are)f(required)e(to)i(isolate)i(it.)630
 4522 y Fs(mode)288 b Ft(The)20 b Fs(mode=)g Ft(form)g(of)h(the)g
-Fs($if)f Ft(directiv)m(e)h(is)f(used)g(to)h(test)h(whether)e(Readline)
-1110 4631 y(is)28 b(in)h Fs(emacs)f Ft(or)h Fs(vi)g Ft(mo)s(de.)40
-b(This)28 b(ma)m(y)i(b)s(e)e(used)h(in)f(conjunction)h(with)f(the)1110
-4741 y(`)p Fs(set)i(keymap)p Ft(')c(command,)i(for)f(instance,)h(to)g
-(set)g(bindings)d(in)h(the)i Fs(emacs-)1110 4851 y(standard)23
-b Ft(and)h Fs(emacs-ctlx)f Ft(k)m(eymaps)i(only)f(if)g(Readline)g(is)g
-(starting)h(out)1110 4960 y(in)k Fs(emacs)g Ft(mo)s(de.)630
+Fs($if)f Ft(directiv)m(e)j(is)e(used)f(to)h(test)h(whether)e(Readline)
+1110 4631 y(is)29 b(in)h Fs(emacs)e Ft(or)h Fs(vi)g Ft(mo)s(de.)40
+b(This)29 b(ma)m(y)h(b)s(e)e(used)h(in)g(conjunction)h(with)f(the)1110
+4741 y(`)p Fs(set)h(keymap)p Ft(')c(command,)i(for)f(instance,)i(to)f
+(set)g(bindings)f(in)g(the)h Fs(emacs-)1110 4851 y(standard)23
+b Ft(and)h Fs(emacs-ctlx)f Ft(k)m(eymaps)i(only)g(if)g(Readline)h(is)f
+(starting)h(out)1110 4960 y(in)k Fs(emacs)f Ft(mo)s(de.)630
 5121 y Fs(term)288 b Ft(The)26 b Fs(term=)g Ft(form)g(ma)m(y)i(b)s(e)e
-(used)g(to)i(include)d(terminal-sp)s(eci\014c)f(k)m(ey)k(bind-)1110
-5230 y(ings,)37 b(p)s(erhaps)d(to)j(bind)d(the)i(k)m(ey)h(sequences)f
-(output)g(b)m(y)g(the)g(terminal's)1110 5340 y(function)23
-b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)e(side)g(of)h
-(the)g(`)p Fs(=)p Ft(')g(is)f(tested)i(against)p eop
+(used)g(to)i(include)f(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110
+5230 y(ings,)38 b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f
+(output)g(b)m(y)g(the)g(terminal's)1110 5340 y(function)24
+b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g
+(the)g(`)p Fs(=)p Ft(')g(is)g(tested)h(against)p eop
+end
 %%Page: 92 98
-92 97 bop 150 -116 a Ft(92)2572 b(Bash)31 b(Reference)g(Man)m(ual)1110
-299 y(b)s(oth)e(the)h(full)e(name)i(of)g(the)g(terminal)f(and)g(the)i
-(p)s(ortion)d(of)i(the)g(terminal)1110 408 y(name)k(b)s(efore)f(the)g
-(\014rst)g(`)p Fs(-)p Ft('.)50 b(This)32 b(allo)m(ws)h
-Fs(sun)g Ft(to)h(matc)m(h)g(b)s(oth)f Fs(sun)g Ft(and)1110
-518 y Fs(sun-cmd)p Ft(,)c(for)h(instance.)630 677 y Fs(application)1110
-787 y Ft(The)21 b Fq(application)g Ft(construct)h(is)f(used)g(to)i
-(include)d(application-sp)s(eci\014c)f(set-)1110 897
-y(tings.)38 b(Eac)m(h)26 b(program)e(using)f(the)i(Readline)e(library)g
-(sets)i(the)g Fq(application)1110 1006 y(name)p Ft(,)g(and)e(y)m(ou)g
-(can)h(test)g(for)f(a)g(particular)f(v)-5 b(alue.)38
-b(This)21 b(could)h(b)s(e)h(used)f(to)1110 1116 y(bind)31
-b(k)m(ey)i(sequences)g(to)h(functions)d(useful)g(for)i(a)g(sp)s
-(eci\014c)e(program.)48 b(F)-8 b(or)1110 1225 y(instance,)34
-b(the)f(follo)m(wing)e(command)i(adds)f(a)i(k)m(ey)f(sequence)h(that)f
-(quotes)1110 1335 y(the)e(curren)m(t)f(or)g(previous)f(w)m(ord)h(in)f
-(Bash:)1350 1469 y Fs($if)47 b(Bash)1350 1579 y(#)g(Quote)g(the)g
-(current)f(or)h(previous)e(word)1350 1689 y("\\C-xq":)h
-("\\eb\\"\\ef\\"")1350 1798 y($endif)150 1958 y($endif)192
-b Ft(This)28 b(command,)j(as)f(seen)h(in)e(the)h(previous)f(example,)h
-(terminates)g(an)h Fs($if)e Ft(command.)150 2117 y Fs($else)240
-b Ft(Commands)29 b(in)g(this)h(branc)m(h)f(of)i(the)f
-Fs($if)g Ft(directiv)m(e)g(are)h(executed)g(if)e(the)i(test)g(fails.)
-150 2276 y Fs($include)96 b Ft(This)42 b(directiv)m(e)h(tak)m(es)i(a)e
-(single)g(\014lename)f(as)i(an)f(argumen)m(t)h(and)f(reads)g(commands)
-630 2386 y(and)38 b(bindings)d(from)j(that)i(\014le.)64
-b(F)-8 b(or)39 b(example,)i(the)e(follo)m(wing)e(directiv)m(e)h(reads)g
+TeXDict begin 92 97 bop 150 -116 a Ft(92)2572 b(Bash)31
+b(Reference)g(Man)m(ual)1110 299 y(b)s(oth)e(the)h(full)g(name)g(of)g
+(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g(terminal)1110
+408 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p Fs(-)p Ft('.)50
+b(This)33 b(allo)m(ws)i Fs(sun)e Ft(to)h(matc)m(h)g(b)s(oth)f
+Fs(sun)g Ft(and)1110 518 y Fs(sun-cmd)p Ft(,)c(for)h(instance.)630
+677 y Fs(application)1110 787 y Ft(The)21 b Fq(application)j
+Ft(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h
+(set-)1110 897 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
+(Readline)g(library)g(sets)g(the)g Fq(application)1110
+1006 y(name)p Ft(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
+(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110
+1116 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h
+(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 1225
+y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f
+(sequence)h(that)f(quotes)1110 1335 y(the)e(curren)m(t)f(or)g(previous)
+g(w)m(ord)g(in)g(Bash:)1350 1469 y Fs($if)47 b(Bash)1350
+1579 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350
+1689 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 1798 y($endif)150
+1958 y($endif)192 b Ft(This)29 b(command,)i(as)f(seen)h(in)f(the)g
+(previous)g(example,)h(terminates)g(an)g Fs($if)e Ft(command.)150
+2117 y Fs($else)240 b Ft(Commands)29 b(in)h(this)h(branc)m(h)e(of)i
+(the)f Fs($if)g Ft(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g
+(fails.)150 2276 y Fs($include)96 b Ft(This)43 b(directiv)m(e)i(tak)m
+(es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g
+(commands)630 2386 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
+b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e
 (from)630 2496 y(`)p Fs(/etc/inputrc)p Ft(':)870 2630
 y Fs($include)46 b(/etc/inputrc)150 2854 y Fk(8.3.3)63
-b(Sample)40 b(Init)h(File)275 3098 y Ft(Here)31 b(is)e(an)h(example)h
-(of)f(an)g Fq(inputrc)k Ft(\014le.)41 b(This)28 b(illustrates)h(k)m(ey)
-i(binding,)d(v)-5 b(ariable)29 b(assignmen)m(t,)150 3208
-y(and)h(conditional)e(syn)m(tax.)p eop
+b(Sample)41 b(Init)g(File)275 3098 y Ft(Here)31 b(is)f(an)g(example)i
+(of)e(an)g Fq(inputrc)35 b Ft(\014le.)42 b(This)29 b(illustrates)j(k)m
+(ey)f(binding,)f(v)-5 b(ariable)31 b(assignmen)m(t,)150
+3208 y(and)f(conditional)h(syn)m(tax.)p eop end
 %%Page: 93 99
-93 98 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2105 b(93)390 408 y Fs(#)47 b(This)g(file)g(controls)e
-(the)i(behaviour)e(of)j(line)e(input)h(editing)e(for)390
-518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h(Readline)f(library.)93
-b(Existing)390 628 y(#)47 b(programs)f(include)g(FTP,)g(Bash,)h(and)g
-(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g(re-read)f(the)h(inputrc)f
-(file)g(with)h(C-x)g(C-r.)390 956 y(#)g(Lines)g(beginning)e(with)i('#')
-g(are)g(comments.)390 1066 y(#)390 1176 y(#)g(First,)g(include)e(any)i
-(systemwide)e(bindings)h(and)h(variable)390 1285 y(#)g(assignments)e
-(from)i(/etc/Inputrc)390 1395 y($include)f(/etc/Inputrc)390
-1614 y(#)390 1724 y(#)h(Set)g(various)f(bindings)g(for)h(emacs)f(mode.)
-390 1943 y(set)h(editing-mode)d(emacs)390 2162 y($if)j(mode=emacs)390
+TeXDict begin 93 98 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2107 b(93)390 408 y Fs(#)47
+b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h
+(editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h
+(Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include)
+g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g
+(re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390
+956 y(#)g(Lines)g(beginning)e(with)i('#')g(are)g(comments.)390
+1066 y(#)390 1176 y(#)g(First,)g(include)e(any)i(systemwide)e(bindings)
+h(and)h(variable)390 1285 y(#)g(assignments)e(from)i(/etc/Inputrc)390
+1395 y($include)f(/etc/Inputrc)390 1614 y(#)390 1724
+y(#)h(Set)g(various)f(bindings)g(for)h(emacs)f(mode.)390
+1943 y(set)h(editing-mode)d(emacs)390 2162 y($if)j(mode=emacs)390
 2381 y(Meta-Control-h:)91 b(backward-kill-word)43 b(Text)k(after)f(the)
 h(function)f(name)g(is)h(ignored)390 2600 y(#)390 2710
 y(#)g(Arrow)g(keys)f(in)i(keypad)e(mode)390 2819 y(#)390
@@ -9424,18 +11137,18 @@ y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)390
 (previous-history)390 4792 y(#"\\M-\\C-OB":)g(next-history)390
 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode)
 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390
-5340 y(#"\\M-\\C-[C":)g(forward-char)p eop
+5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end
 %%Page: 94 100
-94 99 bop 150 -116 a Ft(94)2572 b(Bash)31 b(Reference)g(Man)m(ual)390
-299 y Fs(#"\\M-\\C-[A":)331 b(previous-history)390 408
-y(#"\\M-\\C-[B":)g(next-history)390 628 y(C-q:)47 b(quoted-insert)390
-847 y($endif)390 1066 y(#)g(An)h(old-style)d(binding.)93
-b(This)47 b(happens)f(to)h(be)g(the)g(default.)390 1176
-y(TAB:)g(complete)390 1395 y(#)g(Macros)g(that)f(are)h(convenient)e
-(for)i(shell)f(interaction)390 1504 y($if)h(Bash)390
-1614 y(#)g(edit)g(the)g(path)390 1724 y("\\C-xp":)f
-("PATH=${PATH}\\e\\C-e\\C-a)o(\\ef)o(\\C-f)o(")390 1833
-y(#)h(prepare)f(to)h(type)g(a)h(quoted)e(word)g(--)390
+TeXDict begin 94 99 bop 150 -116 a Ft(94)2572 b(Bash)31
+b(Reference)g(Man)m(ual)390 299 y Fs(#"\\M-\\C-[A":)331
+b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390
+628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066
+y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the)
+g(default.)390 1176 y(TAB:)g(complete)390 1395 y(#)g(Macros)g(that)f
+(are)h(convenient)e(for)i(shell)f(interaction)390 1504
+y($if)h(Bash)390 1614 y(#)g(edit)g(the)g(path)390 1724
+y("\\C-xp":)f("PATH=${PATH}\\e\\C-e\\C-a)o(\\ef)o(\\C-f)o(")390
+1833 y(#)h(prepare)f(to)h(type)g(a)h(quoted)e(word)g(--)390
 1943 y(#)h(insert)g(open)f(and)h(close)f(double)h(quotes)390
 2052 y(#)g(and)g(move)g(to)g(just)g(after)f(the)h(open)g(quote)390
 2162 y("\\C-x\\"":)e("\\"\\"\\C-b")390 2271 y(#)i(insert)g(a)g
@@ -9459,28 +11172,28 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h
 5011 y(#)i(if)h(there)e(are)h(more)g(than)f(150)h(possible)f
 (completions)e(for)390 5121 y(#)j(a)h(word,)e(ask)h(the)g(user)g(if)g
 (he)g(wants)f(to)i(see)f(all)f(of)i(them)390 5230 y(set)f
-(completion-query-items)42 b(150)p eop
+(completion-query-items)42 b(150)p eop end
 %%Page: 95 101
-95 100 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2105 b(95)390 299 y Fs(#)47 b(For)g(FTP)390
-408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390
+TeXDict begin 95 100 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2107 b(95)390 299 y Fs(#)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 1086 y Fr(8.4)68 b(Bindable)45 b(Readline)i(Commands)
-275 1323 y Ft(This)33 b(section)j(describ)s(es)e(Readline)g(commands)i
+275 1323 y Ft(This)34 b(section)j(describ)s(es)e(Readline)h(commands)g
 (that)g(ma)m(y)g(b)s(e)f(b)s(ound)f(to)i(k)m(ey)h(sequences.)56
-b(Y)-8 b(ou)150 1433 y(can)29 b(list)e(y)m(our)i(k)m(ey)g(bindings)d(b)
-m(y)j(executing)f Fs(bind)i(-P)e Ft(or,)h(for)g(a)g(more)f(terse)i
-(format,)f(suitable)f(for)g(an)150 1543 y Fq(inputrc)33
-b Ft(\014le,)28 b Fs(bind)h(-p)p Ft(.)40 b(\(See)30 b(Section)e(4.2)i
-([Bash)g(Builtins],)d(page)j(39.\))41 b(Command)28 b(names)h(without)
-150 1652 y(an)h(accompan)m(ying)h(k)m(ey)g(sequence)g(are)g(un)m(b)s
-(ound)d(b)m(y)i(default.)275 1780 y(In)25 b(the)h(follo)m(wing)f
-(descriptions,)g Fq(p)s(oin)m(t)i Ft(refers)f(to)h(the)f(curren)m(t)g
-(cursor)g(p)s(osition,)f(and)h Fq(mark)31 b Ft(refers)150
-1890 y(to)40 b(a)f(cursor)f(p)s(osition)f(sa)m(v)m(ed)j(b)m(y)f(the)g
+b(Y)-8 b(ou)150 1433 y(can)29 b(list)g(y)m(our)g(k)m(ey)g(bindings)f(b)
+m(y)h(executing)g Fs(bind)h(-P)e Ft(or,)h(for)g(a)g(more)f(terse)i
+(format,)f(suitable)h(for)e(an)150 1543 y Fq(inputrc)34
+b Ft(\014le,)29 b Fs(bind)g(-p)p Ft(.)40 b(\(See)30 b(Section)f(4.2)h
+([Bash)g(Builtins],)g(page)g(39.\))41 b(Command)28 b(names)h(without)
+150 1652 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 1780 y(In)25 b(the)h(follo)m(wing)i
+(descriptions,)f Fq(p)s(oin)m(t)h Ft(refers)e(to)h(the)f(curren)m(t)g
+(cursor)g(p)s(osition,)h(and)f Fq(mark)31 b Ft(refers)150
+1890 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g
 Fs(set-mark)d Ft(command.)66 b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f
-(p)s(oin)m(t)f(and)150 2000 y(mark)30 b(is)g(referred)f(to)i(as)g(the)f
-Fq(region)p Ft(.)150 2205 y Fk(8.4.1)63 b(Commands)40
+(p)s(oin)m(t)g(and)150 2000 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f
+Fq(region)p Ft(.)150 2205 y Fk(8.4.1)63 b(Commands)42
 b(F)-10 b(or)41 b(Mo)m(ving)150 2443 y Fs(beginning-of-line)26
 b(\(C-a\))630 2553 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f
 (curren)m(t)g(line.)150 2700 y Fs(end-of-line)d(\(C-e\))630
@@ -9490,686 +11203,692 @@ b(forw)m(ard)e(a)h(c)m(haracter.)150 3213 y Fs(backward-char)c(\(C-b\))
 630 3322 y Ft(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150
 3469 y Fs(forward-word)d(\(M-f\))630 3579 y Ft(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)h(and)630
-3689 y(digits.)150 3835 y Fs(backward-word)c(\(M-b\))630
+b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630
+3689 y(digits.)150 3835 y Fs(backward-word)27 b(\(M-b\))630
 3945 y Ft(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)f(w)m(ord.)50 b(W)-8 b(ords)34
-b(are)g(comp)s(osed)630 4055 y(of)d(letters)f(and)g(digits.)150
-4202 y Fs(clear-screen)d(\(C-l\))630 4311 y Ft(Clear)f(the)h(screen)f
-(and)h(redra)m(w)f(the)h(curren)m(t)f(line,)g(lea)m(ving)g(the)h
-(curren)m(t)g(line)e(at)i(the)g(top)630 4421 y(of)k(the)f(screen.)150
+(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 4055 y(of)d(letters)g(and)f(digits.)150
+4202 y Fs(clear-screen)d(\(C-l\))630 4311 y Ft(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 4421 y(of)k(the)f(screen.)150
 4568 y Fs(redraw-current-line)25 b(\(\))630 4677 y Ft(Refresh)30
-b(the)g(curren)m(t)h(line.)39 b(By)30 b(default,)g(this)f(is)h(un)m(b)s
-(ound.)150 4883 y Fk(8.4.2)63 b(Commands)40 b(F)-10 b(or)41
+b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s
+(ound.)150 4883 y Fk(8.4.2)63 b(Commands)42 b(F)-10 b(or)41
 b(Manipulating)h(The)f(History)150 5121 y Fs(accept-line)27
-b(\(Newline)h(or)i(Return\))630 5230 y Ft(Accept)25 b(the)e(line)f
-(regardless)h(of)g(where)g(the)h(cursor)e(is.)38 b(If)23
-b(this)f(line)g(is)g(non-empt)m(y)-8 b(,)26 b(add)c(it)630
-5340 y(to)27 b(the)f(history)f(list)g(according)h(to)h(the)f(setting)h
-(of)f(the)g Fs(HISTCONTROL)d Ft(and)j Fs(HISTIGNORE)p
-eop
+b(\(Newline)h(or)i(Return\))630 5230 y Ft(Accept)25 b(the)e(line)h
+(regardless)g(of)f(where)g(the)h(cursor)e(is.)39 b(If)23
+b(this)g(line)h(is)f(non-empt)m(y)-8 b(,)26 b(add)c(it)630
+5340 y(to)27 b(the)f(history)g(list)h(according)g(to)g(the)f(setting)i
+(of)e(the)g Fs(HISTCONTROL)d Ft(and)j Fs(HISTIGNORE)p
+eop end
 %%Page: 96 102
-96 101 bop 150 -116 a Ft(96)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y(v)-5 b(ariables.)40 b(If)30 b(this)g(line)f(is)h(a)h(mo)s
-(di\014ed)d(history)i(line,)f(then)h(restore)i(the)f(history)e(line)g
-(to)630 408 y(its)h(original)e(state.)150 562 y Fs(previous-history)e
-(\(C-p\))630 672 y Ft(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g
-(history)g(list,)f(fetc)m(hing)h(the)h(previous)e(command.)150
-826 y Fs(next-history)e(\(C-n\))630 935 y Ft(Mo)m(v)m(e)32
-b(`forw)m(ard')f(through)e(the)i(history)e(list,)h(fetc)m(hing)g(the)h
-(next)f(command.)150 1089 y Fs(beginning-of-history)25
-b(\(M-<\))630 1199 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)e(in)
-i(the)g(history)-8 b(.)150 1352 y Fs(end-of-history)26
-b(\(M->\))630 1462 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h
-(input)d(history)-8 b(,)30 b(i.e.,)h(the)g(line)d(curren)m(tly)i(b)s
-(eing)f(en)m(tered.)150 1616 y Fs(reverse-search-history)24
-b(\(C-r\))630 1725 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)f(at)h
-(the)f(curren)m(t)g(line)e(and)i(mo)m(ving)g(`up')f(through)h(the)g
-(his-)630 1835 y(tory)g(as)f(necessary)-8 b(.)42 b(This)28
-b(is)i(an)g(incremen)m(tal)g(searc)m(h.)150 1989 y Fs
-(forward-search-history)24 b(\(C-s\))630 2098 y Ft(Searc)m(h)30
-b(forw)m(ard)f(starting)g(at)h(the)g(curren)m(t)f(line)f(and)h(mo)m
-(ving)g(`do)m(wn')g(through)g(the)h(the)630 2208 y(history)f(as)i
-(necessary)-8 b(.)41 b(This)29 b(is)g(an)i(incremen)m(tal)e(searc)m(h.)
-150 2362 y Fs(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-p\))630 2471 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)f(at)h
-(the)f(curren)m(t)g(line)e(and)i(mo)m(ving)g(`up')f(through)h(the)g
-(his-)630 2581 y(tory)36 b(as)g(necessary)h(using)d(a)j(non-incremen)m
-(tal)e(searc)m(h)h(for)g(a)g(string)f(supplied)e(b)m(y)j(the)630
+TeXDict begin 96 101 bop 150 -116 a Ft(96)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(v)-5 b(ariables.)42
+b(If)30 b(this)h(line)g(is)g(a)g(mo)s(di\014ed)e(history)i(line,)g
+(then)f(restore)i(the)f(history)f(line)h(to)630 408 y(its)g(original)g
+(state.)150 562 y Fs(previous-history)26 b(\(C-p\))630
+672 y Ft(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g
+(fetc)m(hing)g(the)g(previous)f(command.)150 826 y Fs(next-history)d
+(\(C-n\))630 935 y Ft(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i
+(history)f(list,)i(fetc)m(hing)f(the)g(next)f(command.)150
+1089 y Fs(beginning-of-history)25 b(\(M-<\))630 1199
+y Ft(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8
+b(.)150 1352 y Fs(end-of-history)26 b(\(M->\))630 1462
+y Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8
+b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150
+1616 y Fs(reverse-search-history)24 b(\(C-r\))630 1725
+y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g
+(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630
+1835 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 b(is)i(an)f(incremen)m
+(tal)i(searc)m(h.)150 1989 y Fs(forward-search-history)24
+b(\(C-s\))630 2098 y Ft(Searc)m(h)30 b(forw)m(ard)f(starting)h(at)g
+(the)g(curren)m(t)f(line)h(and)f(mo)m(ving)h(`do)m(wn')f(through)g(the)
+h(the)630 2208 y(history)g(as)h(necessary)-8 b(.)41 b(This)30
+b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 2362 y Fs
+(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
+b(\(M-p\))630 2471 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
+(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g
+(his-)630 2581 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m
+(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630
 2690 y(user.)150 2844 y Fs(non-incremental-forward-)o(sear)o(ch-h)o
 (ist)o(ory)24 b(\(M-n\))630 2954 y Ft(Searc)m(h)30 b(forw)m(ard)f
-(starting)g(at)h(the)g(curren)m(t)f(line)f(and)h(mo)m(ving)g(`do)m(wn')
-g(through)g(the)h(the)630 3063 y(history)c(as)g(necessary)i(using)d(a)i
-(non-incremen)m(tal)e(searc)m(h)j(for)e(a)h(string)f(supplied)d(b)m(y)k
+(starting)h(at)g(the)g(curren)m(t)f(line)h(and)f(mo)m(ving)h(`do)m(wn')
+f(through)g(the)h(the)630 3063 y(history)d(as)f(necessary)i(using)e(a)h
+(non-incremen)m(tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i
 (the)630 3173 y(user.)150 3327 y Fs(history-search-forward)d(\(\))630
-3436 y Ft(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)e(for)h
-(the)h(string)e(of)i(c)m(haracters)h(b)s(et)m(w)m(een)f(the)630
-3546 y(start)36 b(of)f(the)g(curren)m(t)g(line)e(and)i(the)g(p)s(oin)m
-(t.)54 b(This)33 b(is)i(a)g(non-incremen)m(tal)f(searc)m(h.)56
-b(By)630 3655 y(default,)30 b(this)f(command)h(is)g(un)m(b)s(ound.)150
+3436 y Ft(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g
+(the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f(the)630
+3546 y(start)36 b(of)f(the)g(curren)m(t)g(line)g(and)g(the)g(p)s(oin)m
+(t.)55 b(This)34 b(is)i(a)f(non-incremen)m(tal)h(searc)m(h.)56
+b(By)630 3655 y(default,)31 b(this)f(command)g(is)h(un)m(b)s(ound.)150
 3809 y Fs(history-search-backward)24 b(\(\))630 3919
-y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)f(for)h
-(the)f(string)g(of)h(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630
-4028 y(start)g(of)f(the)g(curren)m(t)g(line)e(and)i(the)g(p)s(oin)m(t.)
-54 b(This)33 b(is)i(a)g(non-incremen)m(tal)f(searc)m(h.)56
-b(By)630 4138 y(default,)30 b(this)f(command)h(is)g(un)m(b)s(ound.)150
-4292 y Fs(yank-nth-arg)d(\(M-C-y\))630 4401 y Ft(Insert)e(the)i
-(\014rst)e(argumen)m(t)h(to)h(the)f(previous)f(command)g(\(usually)f
-(the)i(second)g(w)m(ord)g(on)630 4511 y(the)k(previous)f(line\))f(at)j
-(p)s(oin)m(t.)39 b(With)30 b(an)g(argumen)m(t)g Fq(n)p
-Ft(,)g(insert)e(the)j Fq(n)p Ft(th)e(w)m(ord)g(from)h(the)630
-4621 y(previous)25 b(command)i(\(the)h(w)m(ords)e(in)g(the)h(previous)e
-(command)i(b)s(egin)e(with)h(w)m(ord)h(0\).)40 b(A)630
-4730 y(negativ)m(e)27 b(argumen)m(t)f(inserts)e(the)i
-Fq(n)p Ft(th)f(w)m(ord)g(from)g(the)h(end)f(of)h(the)g(previous)e
-(command.)150 4884 y Fs(yank-last-arg)j(\(M-.)i(or)h(M-_\))630
-4994 y Ft(Insert)k(last)h(argumen)m(t)h(to)g(the)f(previous)e(command)i
-(\(the)h(last)e(w)m(ord)h(of)g(the)g(previous)630 5103
-y(history)30 b(en)m(try\).)41 b(With)30 b(an)h(argumen)m(t,)g(b)s(eha)m
-(v)m(e)g(exactly)h(lik)m(e)e Fs(yank-nth-arg)p Ft(.)38
-b(Succes-)630 5213 y(siv)m(e)c(calls)g(to)h Fs(yank-last-arg)c
-Ft(mo)m(v)m(e)36 b(bac)m(k)g(through)d(the)i(history)f(list,)g
-(inserting)f(the)630 5322 y(last)d(argumen)m(t)h(of)g(eac)m(h)g(line)e
-(in)g(turn.)p eop
+y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g
+(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630
+4028 y(start)g(of)f(the)g(curren)m(t)g(line)g(and)g(the)g(p)s(oin)m(t.)
+55 b(This)34 b(is)i(a)f(non-incremen)m(tal)h(searc)m(h.)56
+b(By)630 4138 y(default,)31 b(this)f(command)g(is)h(un)m(b)s(ound.)150
+4292 y Fs(yank-nth-arg)c(\(M-C-y\))630 4401 y Ft(Insert)e(the)i
+(\014rst)e(argumen)m(t)h(to)h(the)f(previous)g(command)f(\(usually)h
+(the)g(second)g(w)m(ord)g(on)630 4511 y(the)k(previous)g(line\))g(at)h
+(p)s(oin)m(t.)40 b(With)31 b(an)f(argumen)m(t)g Fq(n)p
+Ft(,)g(insert)f(the)i Fq(n)p Ft(th)e(w)m(ord)g(from)h(the)630
+4621 y(previous)c(command)h(\(the)h(w)m(ords)e(in)h(the)g(previous)f
+(command)h(b)s(egin)f(with)h(w)m(ord)g(0\).)40 b(A)630
+4730 y(negativ)m(e)28 b(argumen)m(t)e(inserts)f(the)h
+Fq(n)p Ft(th)f(w)m(ord)g(from)g(the)h(end)f(of)h(the)g(previous)f
+(command.)150 4884 y Fs(yank-last-arg)i(\(M-.)i(or)h(M-_\))630
+4994 y Ft(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous)f(command)h
+(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630 5103
+y(history)c(en)m(try\).)41 b(With)31 b(an)g(argumen)m(t,)g(b)s(eha)m(v)
+m(e)g(exactly)i(lik)m(e)f Fs(yank-nth-arg)p Ft(.)38 b(Succes-)630
+5213 y(siv)m(e)d(calls)h(to)f Fs(yank-last-arg)c Ft(mo)m(v)m(e)36
+b(bac)m(k)g(through)d(the)i(history)g(list,)h(inserting)f(the)630
+5322 y(last)c(argumen)m(t)g(of)g(eac)m(h)g(line)g(in)f(turn.)p
+eop end
 %%Page: 97 103
-97 102 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2105 b(97)150 299 y Fk(8.4.3)63 b(Commands)40
-b(F)-10 b(or)41 b(Changing)g(T)-10 b(ext)150 549 y Fs(delete-char)27
-b(\(C-d\))630 659 y Ft(Delete)40 b(the)f(c)m(haracter)i(at)e(p)s(oin)m
-(t.)65 b(If)39 b(p)s(oin)m(t)e(is)h(at)i(the)f(b)s(eginning)d(of)j(the)
-g(line,)h(there)630 769 y(are)d(no)g(c)m(haracters)i(in)c(the)j(line,)f
-(and)f(the)h(last)g(c)m(haracter)i(t)m(yp)s(ed)e(w)m(as)g(not)g(b)s
-(ound)e(to)630 878 y Fs(delete-char)p Ft(,)28 b(then)i(return)f
-Fl(eof)p Ft(.)150 1050 y Fs(backward-delete-char)c(\(Rubout\))630
-1160 y Ft(Delete)31 b(the)g(c)m(haracter)g(b)s(ehind)d(the)i(cursor.)40
-b(A)30 b(n)m(umeric)f(argumen)m(t)i(means)f(to)h(kill)d(the)630
-1270 y(c)m(haracters)k(instead)d(of)i(deleting)e(them.)150
+TeXDict begin 97 102 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2107 b(97)150 299 y Fk(8.4.3)63
+b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 b(ext)150
+549 y Fs(delete-char)27 b(\(C-d\))630 659 y Ft(Delete)41
+b(the)e(c)m(haracter)i(at)e(p)s(oin)m(t.)66 b(If)39 b(p)s(oin)m(t)f(is)
+h(at)h(the)f(b)s(eginning)f(of)h(the)g(line,)j(there)630
+769 y(are)37 b(no)g(c)m(haracters)i(in)d(the)i(line,)h(and)d(the)h
+(last)h(c)m(haracter)h(t)m(yp)s(ed)e(w)m(as)g(not)g(b)s(ound)e(to)630
+878 y Fs(delete-char)p Ft(,)28 b(then)i(return)f Fl(eof)p
+Ft(.)150 1050 y Fs(backward-delete-char)c(\(Rubout\))630
+1160 y Ft(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40
+b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630
+1270 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
 1442 y Fs(forward-backward-delete-)o(char)24 b(\(\))630
-1551 y Ft(Delete)39 b(the)g(c)m(haracter)h(under)c(the)j(cursor,)h
-(unless)c(the)j(cursor)e(is)g(at)i(the)g(end)e(of)i(the)630
-1661 y(line,)31 b(in)f(whic)m(h)g(case)j(the)f(c)m(haracter)h(b)s
-(ehind)c(the)j(cursor)f(is)f(deleted.)45 b(By)32 b(default,)f(this)630
-1771 y(is)e(not)i(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
+1551 y Ft(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
+(unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630
+1661 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s
+(ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630
+1771 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
 1943 y Fs(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 2052
-y Ft(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)f
-(v)m(erbatim.)52 b(This)32 b(is)i(ho)m(w)g(to)h(insert)e(k)m(ey)630
-2162 y(sequences)e(lik)m(e)e Fj(C-q)p Ft(,)h(for)g(example.)150
+y Ft(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h
+(v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630
+2162 y(sequences)d(lik)m(e)g Fj(C-q)p Ft(,)f(for)g(example.)150
 2334 y Fs(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630
 2444 y Ft(Insert)g(y)m(ourself.)150 2616 y Fs(transpose-chars)c
 (\(C-t\))630 2725 y Ft(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)g
 (cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g
-(cursor,)630 2835 y(mo)m(ving)j(the)h(cursor)f(forw)m(ard)g(as)g(w)m
-(ell.)55 b(If)35 b(the)h(insertion)e(p)s(oin)m(t)g(is)g(at)j(the)e(end)
-g(of)h(the)630 2945 y(line,)22 b(then)g(this)f(transp)s(oses)g(the)h
-(last)g(t)m(w)m(o)h(c)m(haracters)g(of)f(the)h(line.)36
-b(Negativ)m(e)24 b(argumen)m(ts)630 3054 y(ha)m(v)m(e)32
+(cursor,)630 2835 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m
+(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)
+g(of)h(the)630 2945 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h
+(last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38
+b(Negativ)m(e)25 b(argumen)m(ts)630 3054 y(ha)m(v)m(e)32
 b(no)e(e\013ect.)150 3226 y Fs(transpose-words)c(\(M-t\))630
-3336 y Ft(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)f(past)h
-(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)h(mo)m(ving)f(p)s(oin)m(t)f(past)
-h(that)630 3446 y(w)m(ord)c(as)h(w)m(ell.)39 b(If)27
-b(the)i(insertion)d(p)s(oin)m(t)i(is)f(at)i(the)g(end)e(of)i(the)f
-(line,)g(this)f(transp)s(oses)h(the)630 3555 y(last)i(t)m(w)m(o)i(w)m
+3336 y Ft(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g
+(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)
+g(that)630 3446 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27
+b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f
+(line,)i(this)e(transp)s(oses)g(the)630 3555 y(last)j(t)m(w)m(o)h(w)m
 (ords)e(on)g(the)h(line.)150 3727 y Fs(upcase-word)c(\(M-u\))630
-3837 y Ft(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))f
-(w)m(ord.)45 b(With)31 b(a)h(negativ)m(e)i(argumen)m(t,)f(upp)s(er-)630
-3947 y(case)e(the)g(previous)e(w)m(ord,)h(but)g(do)g(not)h(mo)m(v)m(e)h
+3837 y Ft(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i
+(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630
+3947 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h
 (the)e(cursor.)150 4119 y Fs(downcase-word)d(\(M-l\))630
-4228 y Ft(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))f
-(w)m(ord.)37 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h(lo)m(w)m
-(ercase)630 4338 y(the)31 b(previous)d(w)m(ord,)j(but)e(do)i(not)f(mo)m
+4228 y Ft(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
+(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m
+(ercase)630 4338 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m
 (v)m(e)i(the)f(cursor.)150 4510 y Fs(capitalize-word)26
-b(\(M-c\))630 4620 y Ft(Capitalize)20 b(the)i(curren)m(t)f(\(or)g
-(follo)m(wing\))f(w)m(ord.)38 b(With)20 b(a)i(negativ)m(e)g(argumen)m
-(t,)i(capitalize)630 4729 y(the)31 b(previous)d(w)m(ord,)j(but)e(do)i
-(not)f(mo)m(v)m(e)i(the)f(cursor.)150 4902 y Fs(overwrite-mode)26
-b(\(\))630 5011 y Ft(T)-8 b(oggle)34 b(o)m(v)m(erwrite)g(mo)s(de.)48
-b(With)32 b(an)h(explicit)e(p)s(ositiv)m(e)h(n)m(umeric)g(argumen)m(t,)
-i(switc)m(hes)630 5121 y(to)22 b(o)m(v)m(erwrite)h(mo)s(de.)37
-b(With)21 b(an)h(explicit)e(non-p)s(ositiv)m(e)g(n)m(umeric)h(argumen)m
-(t,)j(switc)m(hes)d(to)630 5230 y(insert)29 b(mo)s(de.)41
-b(This)29 b(command)i(a\013ects)h(only)d Fs(emacs)g Ft(mo)s(de;)i
+b(\(M-c\))630 4620 y Ft(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
+(wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h
+(capitalize)630 4729 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
+(mo)m(v)m(e)i(the)f(cursor.)150 4902 y Fs(overwrite-mode)26
+b(\(\))630 5011 y Ft(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
+b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,)
+h(switc)m(hes)630 5121 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
+b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m
+(t,)i(switc)m(hes)e(to)630 5230 y(insert)30 b(mo)s(de.)41
+b(This)30 b(command)h(a\013ects)h(only)e Fs(emacs)f Ft(mo)s(de;)i
 Fs(vi)f Ft(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 5340
-y(di\013eren)m(tly)-8 b(.)40 b(Eac)m(h)31 b(call)f(to)h
-Fs(readline\(\))c Ft(starts)k(in)e(insert)g(mo)s(de.)p
-eop
+y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f
+Fs(readline\(\))c Ft(starts)k(in)f(insert)g(mo)s(de.)p
+eop end
 %%Page: 98 104
-98 103 bop 150 -116 a Ft(98)2572 b(Bash)31 b(Reference)g(Man)m(ual)630
-299 y(In)d(o)m(v)m(erwrite)i(mo)s(de,)f(c)m(haracters)i(b)s(ound)c(to)j
-Fs(self-insert)c Ft(replace)j(the)h(text)g(at)g(p)s(oin)m(t)630
-408 y(rather)41 b(than)h(pushing)d(the)j(text)g(to)g(the)g(righ)m(t.)74
-b(Characters)42 b(b)s(ound)d(to)j Fs(backward-)630 518
-y(delete-char)27 b Ft(replace)k(the)f(c)m(haracter)i(b)s(efore)e(p)s
-(oin)m(t)g(with)f(a)h(space.)630 656 y(By)h(default,)e(this)h(command)g
-(is)f(un)m(b)s(ound.)150 896 y Fk(8.4.4)63 b(Killing)42
-b(And)e(Y)-10 b(anking)150 1144 y Fs(kill-line)28 b(\(C-k\))630
-1253 y Ft(Kill)g(the)i(text)i(from)e(p)s(oin)m(t)f(to)i(the)g(end)e(of)
-i(the)f(line.)150 1420 y Fs(backward-kill-line)25 b(\(C-x)30
-b(Rubout\))630 1530 y Ft(Kill)e(bac)m(kw)m(ard)j(to)g(the)f(b)s
-(eginning)e(of)i(the)h(line.)150 1697 y Fs(unix-line-discard)26
-b(\(C-u\))630 1807 y Ft(Kill)i(bac)m(kw)m(ard)j(from)e(the)i(cursor)f
-(to)h(the)f(b)s(eginning)e(of)j(the)f(curren)m(t)g(line.)150
-1974 y Fs(kill-whole-line)c(\(\))630 2083 y Ft(Kill)34
-b(all)h(c)m(haracters)j(on)f(the)f(curren)m(t)h(line,)f(no)h(matter)g
-(where)f(p)s(oin)m(t)g(is.)58 b(By)36 b(default,)630
-2193 y(this)29 b(is)h(un)m(b)s(ound.)150 2360 y Fs(kill-word)e(\(M-d\))
-630 2469 y Ft(Kill)f(from)i(p)s(oin)m(t)f(to)i(the)g(end)e(of)i(the)f
-(curren)m(t)h(w)m(ord,)f(or)g(if)g(b)s(et)m(w)m(een)h(w)m(ords,)f(to)h
+TeXDict begin 98 103 bop 150 -116 a Ft(98)2572 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(In)d(o)m(v)m(erwrite)j(mo)s(de,)e(c)m
+(haracters)i(b)s(ound)c(to)j Fs(self-insert)c Ft(replace)k(the)g(text)g
+(at)g(p)s(oin)m(t)630 408 y(rather)41 b(than)h(pushing)e(the)i(text)g
+(to)g(the)g(righ)m(t.)75 b(Characters)42 b(b)s(ound)d(to)j
+Fs(backward-)630 518 y(delete-char)27 b Ft(replace)32
+b(the)e(c)m(haracter)i(b)s(efore)e(p)s(oin)m(t)h(with)f(a)g(space.)630
+656 y(By)h(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150
+896 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
+1144 y Fs(kill-line)28 b(\(C-k\))630 1253 y Ft(Kill)j(the)f(text)i
+(from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f(line.)150
+1420 y Fs(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630
+1530 y Ft(Kill)h(bac)m(kw)m(ard)g(to)g(the)f(b)s(eginning)g(of)g(the)h
+(line.)150 1697 y Fs(unix-line-discard)26 b(\(C-u\))630
+1807 y Ft(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f
+(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150 1974
+y Fs(kill-whole-line)c(\(\))630 2083 y Ft(Kill)37 b(all)g(c)m
+(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f(matter)g(where)f(p)s
+(oin)m(t)h(is.)59 b(By)36 b(default,)630 2193 y(this)30
+b(is)h(un)m(b)s(ound.)150 2360 y Fs(kill-word)d(\(M-d\))630
+2469 y Ft(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
+(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h
 (the)g(end)630 2579 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
-b(ord)31 b(b)s(oundaries)d(are)i(the)h(same)g(as)f Fs(forward-word)p
+b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Fs(forward-word)p
 Ft(.)150 2746 y Fs(backward-kill-word)25 b(\(M-)1183
 2743 y Fg(h)p 1207 2690 146 4 v 1207 2746 a Ff(DEL)p
 1207 2761 V 1348 2743 a Fg(i)1378 2746 y Fs(\))630 2856
-y Ft(Kill)h(the)j(w)m(ord)g(b)s(ehind)d(p)s(oin)m(t.)39
-b(W)-8 b(ord)29 b(b)s(oundaries)e(are)i(the)g(same)g(as)g
+y Ft(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40
+b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g
 Fs(backward-word)p Ft(.)150 3023 y Fs(unix-word-rubout)d(\(C-w\))630
-3132 y Ft(Kill)j(the)j(w)m(ord)f(b)s(ehind)e(p)s(oin)m(t,)i(using)f
-(white)h(space)h(as)g(a)g(w)m(ord)f(b)s(oundary)-8 b(.)43
-b(The)31 b(killed)630 3242 y(text)g(is)f(sa)m(v)m(ed)h(on)g(the)f
+3132 y Ft(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m(t,)i(using)f
+(white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8 b(.)43
+b(The)31 b(killed)630 3242 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f
 (kill-ring.)150 3409 y Fs(unix-filename-rubout)25 b(\(\))630
-3518 y Ft(Kill)34 b(the)i(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t,)j(using)e
-(white)g(space)i(and)f(the)g(slash)f(c)m(haracter)j(as)f(the)630
-3628 y(w)m(ord)30 b(b)s(oundaries.)38 b(The)30 b(killed)e(text)j(is)f
-(sa)m(v)m(ed)h(on)g(the)f(kill-ring.)150 3795 y Fs
-(delete-horizontal-space)24 b(\(\))630 3905 y Ft(Delete)32
-b(all)d(spaces)i(and)e(tabs)i(around)e(p)s(oin)m(t.)40
-b(By)31 b(default,)e(this)h(is)f(un)m(b)s(ound.)150 4072
-y Fs(kill-region)e(\(\))630 4181 y Ft(Kill)h(the)i(text)i(in)d(the)h
-(curren)m(t)h(region.)40 b(By)31 b(default,)e(this)h(command)g(is)f(un)
-m(b)s(ound.)150 4348 y Fs(copy-region-as-kill)c(\(\))630
-4458 y Ft(Cop)m(y)34 b(the)g(text)h(in)e(the)h(region)f(to)i(the)f
-(kill)e(bu\013er,)i(so)g(it)g(can)g(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)e
-(a)m(w)m(a)m(y)-8 b(.)630 4568 y(By)31 b(default,)e(this)h(command)g
-(is)f(un)m(b)s(ound.)150 4735 y Fs(copy-backward-word)c(\(\))630
-4844 y Ft(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)f(to)j
-(the)e(kill)e(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries)e(are)j
-(the)630 4954 y(same)31 b(as)f Fs(backward-word)p Ft(.)38
-b(By)30 b(default,)g(this)f(command)h(is)g(un)m(b)s(ound.)150
-5121 y Fs(copy-forward-word)c(\(\))630 5230 y Ft(Cop)m(y)31
-b(the)g(w)m(ord)g(follo)m(wing)e(p)s(oin)m(t)h(to)i(the)f(kill)e
-(bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)d(are)k(the)630
+3518 y Ft(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e
+(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630
+3628 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g
+(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 3795 y Fs
+(delete-horizontal-space)24 b(\(\))630 3905 y Ft(Delete)33
+b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41
+b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 4072
+y Fs(kill-region)d(\(\))630 4181 y Ft(Kill)k(the)f(text)i(in)e(the)g
+(curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un)
+m(b)s(ound.)150 4348 y Fs(copy-region-as-kill)25 b(\(\))630
+4458 y Ft(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f
+(kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f
+(a)m(w)m(a)m(y)-8 b(.)630 4568 y(By)31 b(default,)f(this)h(command)f
+(is)g(un)m(b)s(ound.)150 4735 y Fs(copy-backward-word)25
+b(\(\))630 4844 y Ft(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m
+(t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries)
+f(are)i(the)630 4954 y(same)31 b(as)f Fs(backward-word)p
+Ft(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150
+5121 y Fs(copy-forward-word)26 b(\(\))630 5230 y Ft(Cop)m(y)31
+b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h
+(bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630
 5340 y(same)f(as)f Fs(forward-word)p Ft(.)38 b(By)30
-b(default,)g(this)g(command)g(is)f(un)m(b)s(ound.)p eop
+b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)p eop
+end
 %%Page: 99 105
-99 104 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2105 b(99)150 299 y Fs(yank)29 b(\(C-y\))630
-408 y Ft(Y)-8 b(ank)31 b(the)f(top)h(of)g(the)f(kill)e(ring)h(in)m(to)i
-(the)f(bu\013er)g(at)h(p)s(oin)m(t.)150 558 y Fs(yank-pop)d(\(M-y\))630
-667 y Ft(Rotate)36 b(the)f(kill-ring,)e(and)h(y)m(ank)h(the)f(new)g
-(top.)54 b(Y)-8 b(ou)35 b(can)g(only)e(do)i(this)e(if)h(the)h(prior)630
-777 y(command)30 b(is)g Fs(yank)f Ft(or)h Fs(yank-pop)p
-Ft(.)150 986 y Fk(8.4.5)63 b(Sp)s(ecifying)41 b(Numeric)f(Argumen)m(ts)
-150 1225 y Fs(digit-argument)26 b(\()p Fj(M-0)p Fs(,)j
-Fj(M-1)p Fs(,)h(...)f Fj(M--)p Fs(\))630 1335 y Ft(Add)d(this)g(digit)f
-(to)j(the)f(argumen)m(t)g(already)g(accum)m(ulating,)g(or)g(start)h(a)f
-(new)f(argumen)m(t.)630 1445 y Fj(M--)j Ft(starts)i(a)g(negativ)m(e)h
+TeXDict begin 99 104 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2107 b(99)150 299 y Fs(yank)29
+b(\(C-y\))630 408 y Ft(Y)-8 b(ank)31 b(the)f(top)h(of)g(the)f(kill)h
+(ring)f(in)m(to)i(the)e(bu\013er)g(at)h(p)s(oin)m(t.)150
+558 y Fs(yank-pop)d(\(M-y\))630 667 y Ft(Rotate)36 b(the)f(kill-ring,)i
+(and)d(y)m(ank)h(the)f(new)g(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h
+(this)f(if)h(the)g(prior)630 777 y(command)30 b(is)h
+Fs(yank)e Ft(or)h Fs(yank-pop)p Ft(.)150 986 y Fk(8.4.5)63
+b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m(ts)150 1225
+y Fs(digit-argument)26 b(\()p Fj(M-0)p Fs(,)j Fj(M-1)p
+Fs(,)h(...)f Fj(M--)p Fs(\))630 1335 y Ft(Add)d(this)h(digit)g(to)h
+(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f(new)
+f(argumen)m(t.)630 1445 y Fj(M--)j Ft(starts)i(a)g(negativ)m(e)i
 (argumen)m(t.)150 1594 y Fs(universal-argument)25 b(\(\))630
-1704 y Ft(This)f(is)g(another)i(w)m(a)m(y)g(to)h(sp)s(ecify)d(an)h
-(argumen)m(t.)40 b(If)25 b(this)f(command)i(is)e(follo)m(w)m(ed)h(b)m
-(y)h(one)630 1813 y(or)k(more)f(digits,)g(optionally)f(with)g(a)i
-(leading)f(min)m(us)f(sign,)h(those)h(digits)e(de\014ne)h(the)h(ar-)630
-1923 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)f(follo)m(w)m(ed)g(b)
-m(y)h(digits,)g(executing)g Fs(universal-argument)630
-2032 y Ft(again)j(ends)f(the)h(n)m(umeric)e(argumen)m(t,)j(but)e(is)g
-(otherwise)g(ignored.)44 b(As)32 b(a)g(sp)s(ecial)f(case,)630
-2142 y(if)h(this)g(command)g(is)g(immediately)f(follo)m(w)m(ed)i(b)m(y)
-f(a)h(c)m(haracter)i(that)e(is)f(neither)g(a)h(digit)630
-2252 y(or)28 b(min)m(us)e(sign,)i(the)g(argumen)m(t)g(coun)m(t)h(for)e
-(the)i(next)f(command)f(is)g(m)m(ultiplied)e(b)m(y)i(four.)630
-2361 y(The)37 b(argumen)m(t)h(coun)m(t)f(is)g(initially)d(one,)39
-b(so)f(executing)f(this)f(function)g(the)i(\014rst)e(time)630
+1704 y Ft(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g
+(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m
+(y)f(one)630 1813 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h
+(leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630
+1923 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)
+m(y)f(digits,)i(executing)f Fs(universal-argument)630
+2032 y Ft(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
+(otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630
+2142 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)
+d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630
+2252 y(or)28 b(min)m(us)f(sign,)i(the)f(argumen)m(t)g(coun)m(t)h(for)e
+(the)i(next)f(command)f(is)h(m)m(ultiplied)h(b)m(y)e(four.)630
+2361 y(The)37 b(argumen)m(t)h(coun)m(t)f(is)h(initially)h(one,)g(so)f
+(executing)g(this)f(function)g(the)h(\014rst)e(time)630
 2471 y(mak)m(es)d(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)i(second)e
-(time)h(mak)m(es)g(the)g(argumen)m(t)g(coun)m(t)h(six-)630
-2580 y(teen,)e(and)f(so)h(on.)40 b(By)31 b(default,)f(this)f(is)g(not)i
+(time)i(mak)m(es)f(the)g(argumen)m(t)g(coun)m(t)h(six-)630
+2580 y(teen,)e(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g(not)h
 (b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 2790 y Fk(8.4.6)63
 b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42
 b(Y)-10 b(ou)150 3029 y Fs(complete)28 b(\()610 3026
 y Fg(h)p 634 2973 148 4 v 634 3029 a Ff(T)-6 b(AB)p 634
 3044 V 778 3026 a Fg(i)808 3029 y Fs(\))630 3138 y Ft(A)m(ttempt)24
-b(to)f(p)s(erform)e(completion)h(on)h(the)g(text)g(b)s(efore)f(p)s(oin)
-m(t.)38 b(The)22 b(actual)h(completion)630 3248 y(p)s(erformed)33
-b(is)g(application-sp)s(eci\014c.)49 b(Bash)35 b(attempts)g(completion)
-e(treating)i(the)f(text)630 3357 y(as)39 b(a)h(v)-5 b(ariable)37
-b(\(if)i(the)g(text)h(b)s(egins)d(with)h(`)p Fs($)p Ft('\),)k(username)
-c(\(if)h(the)g(text)h(b)s(egins)d(with)630 3467 y(`)p
-Fs(~)p Ft('\),)31 b(hostname)f(\(if)f(the)h(text)h(b)s(egins)d(with)h
-(`)p Fs(@)p Ft('\),)i(or)f(command)f(\(including)e(aliases)j(and)630
-3577 y(functions\))k(in)f(turn.)53 b(If)34 b(none)g(of)h(these)h(pro)s
-(duces)d(a)i(matc)m(h,)i(\014lename)d(completion)g(is)630
+b(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g(b)s(efore)f(p)s(oin)
+m(t.)39 b(The)22 b(actual)i(completion)630 3248 y(p)s(erformed)33
+b(is)h(application-sp)s(eci\014c.)53 b(Bash)35 b(attempts)g(completion)
+g(treating)h(the)e(text)630 3357 y(as)39 b(a)h(v)-5 b(ariable)39
+b(\(if)h(the)f(text)h(b)s(egins)e(with)h(`)p Fs($)p Ft('\),)j(username)
+c(\(if)i(the)f(text)h(b)s(egins)e(with)630 3467 y(`)p
+Fs(~)p Ft('\),)31 b(hostname)f(\(if)g(the)g(text)h(b)s(egins)e(with)h
+(`)p Fs(@)p Ft('\),)h(or)f(command)f(\(including)h(aliases)i(and)630
+3577 y(functions\))j(in)f(turn.)53 b(If)34 b(none)g(of)h(these)h(pro)s
+(duces)d(a)i(matc)m(h,)i(\014lename)e(completion)h(is)630
 3686 y(attempted.)150 3836 y Fs(possible-completions)25
-b(\(M-?\))630 3945 y Ft(List)30 b(the)g(p)s(ossible)e(completions)i(of)
-g(the)h(text)g(b)s(efore)f(p)s(oin)m(t.)150 4095 y Fs
+b(\(M-?\))630 3945 y Ft(List)31 b(the)f(p)s(ossible)g(completions)i(of)
+e(the)h(text)g(b)s(efore)f(p)s(oin)m(t.)150 4095 y Fs
 (insert-completions)25 b(\(M-*\))630 4204 y Ft(Insert)30
-b(all)f(completions)h(of)h(the)g(text)g(b)s(efore)f(p)s(oin)m(t)g(that)
-h(w)m(ould)e(ha)m(v)m(e)j(b)s(een)e(generated)630 4314
+b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f(p)s(oin)m(t)h(that)
+g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(generated)630 4314
 y(b)m(y)g Fs(possible-completions)p Ft(.)150 4463 y Fs(menu-complete)d
-(\(\))630 4573 y Ft(Similar)21 b(to)j Fs(complete)p Ft(,)f(but)h
-(replaces)f(the)h(w)m(ord)g(to)g(b)s(e)f(completed)h(with)e(a)j(single)
-d(matc)m(h)630 4682 y(from)37 b(the)h(list)f(of)h(p)s(ossible)d
-(completions.)62 b(Rep)s(eated)39 b(execution)f(of)g
-Fs(menu-complete)630 4792 y Ft(steps)i(through)g(the)g(list)f(of)h(p)s
-(ossible)e(completions,)k(inserting)c(eac)m(h)k(matc)m(h)f(in)e(turn.)
-630 4902 y(A)m(t)f(the)f(end)f(of)h(the)g(list)e(of)i(completions,)g
-(the)g(b)s(ell)e(is)h(rung)g(\(sub)5 b(ject)36 b(to)i(the)f(setting)630
-5011 y(of)f Fs(bell-style)p Ft(\))e(and)h(the)h(original)f(text)i(is)e
+(\(\))630 4573 y Ft(Similar)d(to)g Fs(complete)p Ft(,)f(but)h(replaces)
+g(the)g(w)m(ord)g(to)g(b)s(e)f(completed)i(with)e(a)i(single)f(matc)m
+(h)630 4682 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64
+b(Rep)s(eated)39 b(execution)g(of)f Fs(menu-complete)630
+4792 y Ft(steps)i(through)g(the)g(list)h(of)f(p)s(ossible)g
+(completions,)k(inserting)c(eac)m(h)i(matc)m(h)f(in)f(turn.)630
+4902 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g(of)g(completions,)i(the)e
+(b)s(ell)g(is)g(rung)f(\(sub)5 b(ject)36 b(to)i(the)f(setting)630
+5011 y(of)f Fs(bell-style)p Ft(\))e(and)h(the)h(original)i(text)f(is)f
 (restored.)57 b(An)36 b(argumen)m(t)h(of)f Fq(n)f Ft(mo)m(v)m(es)i
-Fq(n)630 5121 y Ft(p)s(ositions)c(forw)m(ard)h(in)f(the)i(list)f(of)g
-(matc)m(hes;)39 b(a)c(negativ)m(e)h(argumen)m(t)f(ma)m(y)g(b)s(e)f
+Fq(n)630 5121 y Ft(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
+(matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f
 (used)g(to)630 5230 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
-(list.)63 b(This)37 b(command)h(is)f(in)m(tended)g(to)i(b)s(e)f(b)s
+(list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s
 (ound)e(to)630 5337 y Fg(h)p 654 5284 V 654 5340 a Ff(T)-6
 b(AB)p 654 5355 V 798 5337 a Fg(i)828 5340 y Ft(,)30
-b(but)g(is)f(un)m(b)s(ound)f(b)m(y)i(default.)p eop
+b(but)g(is)g(un)m(b)s(ound)e(b)m(y)i(default.)p eop end
 %%Page: 100 106
-100 105 bop 150 -116 a Ft(100)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-150 299 y Fs(delete-char-or-list)25 b(\(\))630 408 y
-Ft(Deletes)j(the)f(c)m(haracter)h(under)e(the)h(cursor)f(if)g(not)h(at)
-g(the)g(b)s(eginning)e(or)h(end)h(of)g(the)g(line)630
-518 y(\(lik)m(e)i Fs(delete-char)p Ft(\).)37 b(If)29
-b(at)h(the)f(end)f(of)i(the)f(line,)f(b)s(eha)m(v)m(es)i(iden)m
-(tically)d(to)i Fs(possible-)630 628 y(completions)p
-Ft(.)38 b(This)28 b(command)i(is)g(un)m(b)s(ound)e(b)m(y)i(default.)150
+TeXDict begin 100 105 bop 150 -116 a Ft(100)2527 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(delete-char-or-list)25
+b(\(\))630 408 y Ft(Deletes)k(the)e(c)m(haracter)h(under)e(the)h
+(cursor)f(if)h(not)g(at)g(the)g(b)s(eginning)g(or)f(end)h(of)g(the)g
+(line)630 518 y(\(lik)m(e)k Fs(delete-char)p Ft(\).)37
+b(If)29 b(at)h(the)f(end)f(of)i(the)f(line,)h(b)s(eha)m(v)m(es)g(iden)m
+(tically)h(to)e Fs(possible-)630 628 y(completions)p
+Ft(.)38 b(This)29 b(command)h(is)h(un)m(b)s(ound)d(b)m(y)i(default.)150
 789 y Fs(complete-filename)c(\(M-/\))630 899 y Ft(A)m(ttempt)32
-b(\014lename)d(completion)h(on)g(the)h(text)g(b)s(efore)f(p)s(oin)m(t.)
+b(\014lename)e(completion)i(on)e(the)h(text)g(b)s(efore)f(p)s(oin)m(t.)
 150 1060 y Fs(possible-filename-comple)o(tion)o(s)24
-b(\(C-x)30 b(/\))630 1170 y Ft(List)e(the)h(p)s(ossible)d(completions)h
-(of)i(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)f(treating)h(it)f(as)h(a)f
+b(\(C-x)30 b(/\))630 1170 y Ft(List)f(the)g(p)s(ossible)f(completions)h
+(of)g(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)g(treating)h(it)f(as)g(a)f
 (\014lename.)150 1331 y Fs(complete-username)e(\(M-~\))630
-1441 y Ft(A)m(ttempt)32 b(completion)d(on)i(the)f(text)i(b)s(efore)e(p)
-s(oin)m(t,)f(treating)i(it)f(as)g(a)h(username.)150 1602
+1441 y Ft(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p)
+s(oin)m(t,)g(treating)i(it)f(as)f(a)h(username.)150 1602
 y Fs(possible-username-comple)o(tion)o(s)24 b(\(C-x)30
-b(~\))630 1712 y Ft(List)24 b(the)h(p)s(ossible)e(completions)h(of)h
-(the)g(text)h(b)s(efore)f(p)s(oin)m(t,)g(treating)g(it)g(as)g(a)g
+b(~\))630 1712 y Ft(List)25 b(the)g(p)s(ossible)g(completions)h(of)f
+(the)g(text)h(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)f(a)g
 (username.)150 1873 y Fs(complete-variable)h(\(M-$\))630
-1983 y Ft(A)m(ttempt)32 b(completion)d(on)i(the)f(text)i(b)s(efore)e(p)
-s(oin)m(t,)f(treating)i(it)f(as)g(a)h(shell)e(v)-5 b(ariable.)150
+1983 y Ft(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p)
+s(oin)m(t,)g(treating)i(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150
 2144 y Fs(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30
-b($\))630 2254 y Ft(List)41 b(the)h(p)s(ossible)e(completions)h(of)h
-(the)g(text)h(b)s(efore)e(p)s(oin)m(t,)k(treating)d(it)f(as)h(a)h
+b($\))630 2254 y Ft(List)42 b(the)g(p)s(ossible)g(completions)h(of)f
+(the)g(text)h(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h
 (shell)630 2364 y(v)-5 b(ariable.)150 2525 y Fs(complete-hostname)26
-b(\(M-@\))630 2635 y Ft(A)m(ttempt)32 b(completion)d(on)i(the)f(text)i
-(b)s(efore)e(p)s(oin)m(t,)f(treating)i(it)f(as)g(a)h(hostname.)150
+b(\(M-@\))630 2635 y Ft(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i
+(b)s(efore)e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(hostname.)150
 2796 y Fs(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30
-b(@\))630 2906 y Ft(List)24 b(the)h(p)s(ossible)d(completions)h(of)i
-(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)g(treating)g(it)f(as)g(a)h
+b(@\))630 2906 y Ft(List)25 b(the)g(p)s(ossible)f(completions)h(of)g
+(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)h(treating)g(it)f(as)f(a)h
 (hostname.)150 3067 y Fs(complete-command)h(\(M-!\))630
-3177 y Ft(A)m(ttempt)32 b(completion)e(on)h(the)g(text)h(b)s(efore)e(p)
-s(oin)m(t,)g(treating)h(it)g(as)g(a)g(command)g(name.)630
-3286 y(Command)46 b(completion)g(attempts)i(to)f(matc)m(h)h(the)f(text)
-h(against)f(aliases,)k(reserv)m(ed)630 3396 y(w)m(ords,)36
-b(shell)e(functions,)i(shell)d(builtins,)h(and)h(\014nally)e
-(executable)j(\014lenames,)g(in)e(that)630 3505 y(order.)150
+3177 y Ft(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p)
+s(oin)m(t,)h(treating)h(it)g(as)f(a)g(command)g(name.)630
+3286 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text)
+h(against)g(aliases,)53 b(reserv)m(ed)630 3396 y(w)m(ords,)36
+b(shell)g(functions,)h(shell)e(builtins,)i(and)e(\014nally)g
+(executable)i(\014lenames,)g(in)e(that)630 3505 y(order.)150
 3667 y Fs(possible-command-complet)o(ions)24 b(\(C-x)29
-b(!\))630 3777 y Ft(List)c(the)i(p)s(ossible)d(completions)h(of)h(the)h
-(text)g(b)s(efore)f(p)s(oin)m(t,)g(treating)g(it)g(as)h(a)f(command)630
+b(!\))630 3777 y Ft(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h
+(text)g(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)g(a)f(command)630
 3886 y(name.)150 4048 y Fs(dynamic-complete-history)e(\(M-)1470
 4045 y Fg(h)p 1493 3992 148 4 v 1493 4048 a Ff(T)-6 b(AB)p
 1493 4063 V 1637 4045 a Fg(i)1667 4048 y Fs(\))630 4157
-y Ft(A)m(ttempt)31 b(completion)f(on)g(the)g(text)h(b)s(efore)f(p)s
-(oin)m(t,)f(comparing)h(the)g(text)h(against)g(lines)630
-4267 y(from)f(the)g(history)g(list)f(for)h(p)s(ossible)e(completion)i
+y Ft(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p)s
+(oin)m(t,)g(comparing)h(the)f(text)h(against)h(lines)630
+4267 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i
 (matc)m(hes.)150 4428 y Fs(complete-into-braces)25 b(\(M-{\))630
-4538 y Ft(P)m(erform)f(\014lename)e(completion)h(and)h(insert)e(the)i
-(list)e(of)i(p)s(ossible)d(completions)i(enclosed)630
-4647 y(within)32 b(braces)j(so)f(the)h(list)e(is)h(a)m(v)-5
-b(ailable)34 b(to)h(the)g(shell)e(\(see)i(Section)g(3.5.1)h([Brace)g
-(Ex-)630 4757 y(pansion],)29 b(page)i(17\).)150 4985
+4538 y Ft(P)m(erform)f(\014lename)f(completion)i(and)f(insert)f(the)h
+(list)g(of)g(p)s(ossible)f(completions)i(enclosed)630
+4647 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5
+b(ailable)37 b(to)e(the)g(shell)g(\(see)g(Section)h(3.5.1)g([Brace)g
+(Ex-)630 4757 y(pansion],)30 b(page)h(17\).)150 4985
 y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 5230 y Fs(start-kbd-macro)
-26 b(\(C-x)j(\(\))630 5340 y Ft(Begin)h(sa)m(ving)h(the)f(c)m
-(haracters)i(t)m(yp)s(ed)e(in)m(to)g(the)h(curren)m(t)f(k)m(eyb)s(oard)
-g(macro.)p eop
+26 b(\(C-x)j(\(\))630 5340 y Ft(Begin)i(sa)m(ving)h(the)e(c)m
+(haracters)i(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)
+g(macro.)p eop end
 %%Page: 101 107
-101 106 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2060 b(101)150 299 y Fs(end-kbd-macro)27
-b(\(C-x)i(\)\))630 408 y Ft(Stop)e(sa)m(ving)g(the)h(c)m(haracters)g(t)
-m(yp)s(ed)f(in)m(to)h(the)f(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f
+TeXDict begin 101 106 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(101)150 299 y Fs(end-kbd-macro)27
+b(\(C-x)i(\)\))630 408 y Ft(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)
+m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f
 (sa)m(v)m(e)i(the)630 518 y(de\014nition.)150 691 y Fs
 (call-last-kbd-macro)c(\(C-x)k(e\))630 801 y Ft(Re-execute)37
-b(the)e(last)g(k)m(eyb)s(oard)g(macro)h(de\014ned,)f(b)m(y)h(making)e
-(the)h(c)m(haracters)i(in)d(the)630 911 y(macro)d(app)s(ear)f(as)g(if)g
-(t)m(yp)s(ed)g(at)h(the)f(k)m(eyb)s(oard.)150 1163 y
-Fk(8.4.8)63 b(Some)40 b(Miscellaneous)j(Commands)150
+b(the)e(last)h(k)m(eyb)s(oard)f(macro)h(de\014ned,)f(b)m(y)h(making)f
+(the)g(c)m(haracters)i(in)e(the)630 911 y(macro)c(app)s(ear)f(as)g(if)h
+(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s(oard.)150 1163 y
+Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)150
 1414 y Fs(re-read-init-file)26 b(\(C-x)j(C-r\))630 1524
-y Ft(Read)22 b(in)f(the)h(con)m(ten)m(ts)h(of)f(the)g
-Fq(inputrc)k Ft(\014le,)d(and)e(incorp)s(orate)g(an)m(y)i(bindings)18
-b(or)k(v)-5 b(ariable)630 1633 y(assignmen)m(ts)30 b(found)f(there.)150
+y Ft(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g
+Fq(inputrc)27 b Ft(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d
+(or)i(v)-5 b(ariable)630 1633 y(assignmen)m(ts)31 b(found)e(there.)150
 1807 y Fs(abort)g(\(C-g\))630 1916 y Ft(Ab)s(ort)d(the)h(curren)m(t)f
-(editing)f(command)h(and)g(ring)g(the)g(terminal's)f(b)s(ell)g(\(sub)5
-b(ject)26 b(to)i(the)630 2026 y(setting)i(of)h Fs(bell-style)p
+(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5
+b(ject)26 b(to)i(the)630 2026 y(setting)j(of)g Fs(bell-style)p
 Ft(\).)150 2199 y Fs(do-uppercase-version)25 b(\(M-a,)k(M-b,)g(M-)p
 Fj(x)p Fs(,)g(...)o(\))630 2309 y Ft(If)e(the)h(meta\014ed)g(c)m
-(haracter)h Fq(x)34 b Ft(is)27 b(lo)m(w)m(ercase,)i(run)e(the)g
-(command)h(that)g(is)f(b)s(ound)e(to)k(the)630 2418 y(corresp)s(onding)
-f(upp)s(ercase)i(c)m(haracter.)150 2592 y Fs(prefix-meta)d(\()753
+(haracter)h Fq(x)34 b Ft(is)28 b(lo)m(w)m(ercase,)i(run)d(the)g
+(command)h(that)g(is)g(b)s(ound)d(to)k(the)630 2418 y(corresp)s(onding)
+g(upp)s(ercase)h(c)m(haracter.)150 2592 y Fs(prefix-meta)d(\()753
 2589 y Fg(h)p 777 2536 139 4 v 777 2592 a Ff(ESC)p 777
 2607 V 911 2589 a Fg(i)941 2592 y Fs(\))630 2701 y Ft(Metafy)39
-b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62 b(This)36
-b(is)g(for)i(k)m(eyb)s(oards)f(without)f(a)i(meta)g(k)m(ey)-8
-b(.)630 2811 y(T)m(yping)29 b(`)968 2808 y Fg(h)p 993
+b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62 b(This)37
+b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g(k)m(ey)-8
+b(.)630 2811 y(T)m(yping)30 b(`)968 2808 y Fg(h)p 993
 2755 V 993 2811 a Ff(ESC)p 993 2826 V 1127 2808 a Fg(i)1187
-2811 y Fs(f)p Ft(')h(is)f(equiv)-5 b(alen)m(t)30 b(to)h(t)m(yping)f
-Fj(M-f)p Ft(.)150 2984 y Fs(undo)f(\(C-_)g(or)h(C-x)g(C-u\))630
-3094 y Ft(Incremen)m(tal)g(undo,)g(separately)g(remem)m(b)s(ered)g(for)
+2811 y Fs(f)p Ft(')g(is)g(equiv)-5 b(alen)m(t)32 b(to)f(t)m(yping)g
+Fj(M-f)p Ft(.)150 2984 y Fs(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630
+3094 y Ft(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s(ered)f(for)
 g(eac)m(h)i(line.)150 3267 y Fs(revert-line)27 b(\(M-r\))630
-3377 y Ft(Undo)33 b(all)f(c)m(hanges)i(made)f(to)h(this)e(line.)47
-b(This)31 b(is)h(lik)m(e)h(executing)g(the)g Fs(undo)f
-Ft(command)630 3487 y(enough)e(times)g(to)h(get)h(bac)m(k)f(to)g(the)f
+3377 y Ft(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49
+b(This)32 b(is)h(lik)m(e)i(executing)f(the)f Fs(undo)f
+Ft(command)630 3487 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f
 (b)s(eginning.)150 3660 y Fs(tilde-expand)d(\(M-&\))630
-3770 y Ft(P)m(erform)j(tilde)f(expansion)h(on)g(the)g(curren)m(t)h(w)m
+3770 y Ft(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m
 (ord.)150 3943 y Fs(set-mark)d(\(C-@\))630 4053 y Ft(Set)33
-b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)47 b(If)32 b(a)h(n)m(umeric)f
-(argumen)m(t)h(is)f(supplied,)e(the)j(mark)g(is)e(set)630
-4162 y(to)g(that)g(p)s(osition.)150 4336 y Fs(exchange-point-and-mark)
-24 b(\(C-x)29 b(C-x\))630 4445 y Ft(Sw)m(ap)i(the)g(p)s(oin)m(t)f(with)
-g(the)h(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)g(is)g
-(set)i(to)f(the)h(sa)m(v)m(ed)630 4555 y(p)s(osition,)d(and)g(the)i
-(old)f(cursor)f(p)s(osition)g(is)g(sa)m(v)m(ed)j(as)e(the)h(mark.)150
+b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g
+(argumen)m(t)g(is)g(supplied,)f(the)h(mark)g(is)f(set)630
+4162 y(to)f(that)g(p)s(osition.)150 4336 y Fs(exchange-point-and-mark)
+24 b(\(C-x)29 b(C-x\))630 4445 y Ft(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)
+g(the)g(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f
+(set)h(to)f(the)h(sa)m(v)m(ed)630 4555 y(p)s(osition,)f(and)e(the)i
+(old)g(cursor)e(p)s(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150
 4728 y Fs(character-search)26 b(\(C-]\))630 4838 y Ft(A)f(c)m(haracter)
-h(is)e(read)h(and)f(p)s(oin)m(t)g(is)g(mo)m(v)m(ed)i(to)g(the)f(next)g
+h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g
 (o)s(ccurrence)g(of)g(that)g(c)m(haracter.)630 4947 y(A)30
-b(negativ)m(e)i(coun)m(t)f(searc)m(hes)g(for)f(previous)f(o)s
+b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s
 (ccurrences.)150 5121 y Fs(character-search-backwar)o(d)24
-b(\(M-C-]\))630 5230 y Ft(A)45 b(c)m(haracter)h(is)e(read)h(and)f(p)s
-(oin)m(t)g(is)g(mo)m(v)m(ed)i(to)f(the)g(previous)e(o)s(ccurrence)i(of)
-g(that)630 5340 y(c)m(haracter.)d(A)31 b(negativ)m(e)g(coun)m(t)g
+b(\(M-C-]\))630 5230 y Ft(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s
+(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of)
+g(that)630 5340 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f
 (searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)p
-eop
+eop end
 %%Page: 102 108
-102 107 bop 150 -116 a Ft(102)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-150 299 y Fs(insert-comment)26 b(\(M-#\))630 408 y Ft(Without)35
-b(a)h(n)m(umeric)f(argumen)m(t,)i(the)f(v)-5 b(alue)35
-b(of)h(the)g Fs(comment-begin)c Ft(v)-5 b(ariable)34
-b(is)h(in-)630 518 y(serted)d(at)g(the)g(b)s(eginning)d(of)j(the)f
-(curren)m(t)h(line.)43 b(If)31 b(a)h(n)m(umeric)e(argumen)m(t)i(is)f
-(supplied,)630 628 y(this)k(command)i(acts)g(as)g(a)g(toggle:)54
-b(if)36 b(the)g(c)m(haracters)i(at)g(the)e(b)s(eginning)e(of)j(the)g
-(line)630 737 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)30
-b(of)g Fs(comment-begin)p Ft(,)e(the)i(v)-5 b(alue)30
-b(is)g(inserted,)g(otherwise)g(the)630 847 y(c)m(haracters)42
-b(in)c Fs(comment-begin)f Ft(are)j(deleted)g(from)g(the)g(b)s(eginning)
-e(of)i(the)g(line.)69 b(In)630 956 y(either)36 b(case,)k(the)e(line)d
-(is)h(accepted)j(as)e(if)f(a)h(newline)e(had)i(b)s(een)f(t)m(yp)s(ed.)
-60 b(The)37 b(default)630 1066 y(v)-5 b(alue)31 b(of)h
-Fs(comment-begin)c Ft(causes)k(this)e(command)i(to)g(mak)m(e)h(the)e
-(curren)m(t)h(line)e(a)i(shell)630 1176 y(commen)m(t.)40
-b(If)26 b(a)h(n)m(umeric)e(argumen)m(t)i(causes)g(the)f(commen)m(t)i(c)
-m(haracter)g(to)f(b)s(e)f(remo)m(v)m(ed,)630 1285 y(the)31
-b(line)d(will)g(b)s(e)i(executed)h(b)m(y)f(the)h(shell.)150
-1443 y Fs(dump-functions)26 b(\(\))630 1553 y Ft(Prin)m(t)f(all)h(of)g
-(the)h(functions)e(and)h(their)f(k)m(ey)i(bindings)c(to)28
-b(the)e(Readline)f(output)h(stream.)630 1663 y(If)31
-b(a)h(n)m(umeric)f(argumen)m(t)h(is)f(supplied,)e(the)j(output)f(is)g
-(formatted)h(in)e(suc)m(h)i(a)g(w)m(a)m(y)g(that)630
-1772 y(it)e(can)h(b)s(e)e(made)i(part)f(of)g(an)h Fq(inputrc)j
-Ft(\014le.)40 b(This)28 b(command)i(is)g(un)m(b)s(ound)d(b)m(y)k
+TeXDict begin 102 107 bop 150 -116 a Ft(102)2527 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(insert-comment)26
+b(\(M-#\))630 408 y Ft(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h
+(the)f(v)-5 b(alue)36 b(of)g(the)g Fs(comment-begin)c
+Ft(v)-5 b(ariable)36 b(is)g(in-)630 518 y(serted)c(at)g(the)g(b)s
+(eginning)f(of)h(the)f(curren)m(t)h(line.)45 b(If)31
+b(a)h(n)m(umeric)f(argumen)m(t)h(is)g(supplied,)630 628
+y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37
+b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g(line)630
+737 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f
+Fs(comment-begin)p Ft(,)e(the)i(v)-5 b(alue)31 b(is)g(inserted,)g
+(otherwise)g(the)630 847 y(c)m(haracters)42 b(in)d Fs(comment-begin)e
+Ft(are)j(deleted)h(from)f(the)g(b)s(eginning)g(of)g(the)g(line.)71
+b(In)630 956 y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e
+(if)g(a)g(newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37
+b(default)630 1066 y(v)-5 b(alue)32 b(of)g Fs(comment-begin)c
+Ft(causes)k(this)f(command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g
+(a)g(shell)630 1176 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f
+(argumen)m(t)h(causes)g(the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f
+(remo)m(v)m(ed,)630 1285 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)
+m(y)f(the)h(shell.)150 1443 y Fs(dump-functions)26 b(\(\))630
+1553 y Ft(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g(their)g(k)m(ey)
+h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630
+1663 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
+(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630
+1772 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fq(inputrc)k
+Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k
 (default.)150 1931 y Fs(dump-variables)26 b(\(\))630
-2040 y Ft(Prin)m(t)20 b(all)g(of)i(the)f(settable)h(v)-5
-b(ariables)20 b(and)h(their)f(v)-5 b(alues)21 b(to)h(the)f(Readline)f
-(output)h(stream.)630 2150 y(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)
-f(supplied,)e(the)j(output)f(is)g(formatted)h(in)e(suc)m(h)i(a)g(w)m(a)
-m(y)g(that)630 2259 y(it)e(can)h(b)s(e)e(made)i(part)f(of)g(an)h
-Fq(inputrc)j Ft(\014le.)40 b(This)28 b(command)i(is)g(un)m(b)s(ound)d
+2040 y Ft(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5
+b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h
+(output)f(stream.)630 2150 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)
+g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)
+m(y)g(that)630 2259 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h
+Fq(inputrc)k Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c
 (b)m(y)k(default.)150 2418 y Fs(dump-macros)c(\(\))630
-2527 y Ft(Prin)m(t)33 b(all)f(of)i(the)g(Readline)e(k)m(ey)j(sequences)
-f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)f(they)630
-2637 y(output.)53 b(If)35 b(a)g(n)m(umeric)e(argumen)m(t)j(is)d
-(supplied,)g(the)i(output)g(is)e(formatted)j(in)d(suc)m(h)i(a)630
-2746 y(w)m(a)m(y)c(that)g(it)e(can)h(b)s(e)g(made)g(part)f(of)i(an)e
-Fq(inputrc)34 b Ft(\014le.)40 b(This)28 b(command)i(is)f(un)m(b)s(ound)
-e(b)m(y)630 2856 y(default.)150 3014 y Fs(glob-complete-word)e(\(M-g\))
-630 3124 y Ft(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)g(is)g(treated)i
-(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)f(with)g(an)630
-3233 y(asterisk)d(implicitly)d(app)s(ended.)37 b(This)22
-b(pattern)j(is)e(used)h(to)h(generate)h(a)e(list)f(of)i(matc)m(hing)630
-3343 y(\014le)k(names)i(for)f(p)s(ossible)e(completions.)150
-3501 y Fs(glob-expand-word)e(\(C-x)j(*\))630 3611 y Ft(The)40
-b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)g(is)g(treated)h(as)g(a)g(pattern)g
-(for)f(pathname)g(expansion,)j(and)630 3720 y(the)d(list)e(of)h(matc)m
-(hing)h(\014le)e(names)h(is)g(inserted,)h(replacing)f(the)g(w)m(ord.)67
-b(If)39 b(a)h(n)m(umeric)630 3830 y(argumen)m(t)31 b(is)e(supplied,)f
-(a)i(`)p Fs(*)p Ft(')h(is)e(app)s(ended)g(b)s(efore)h(pathname)g
+2527 y Ft(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)
+f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630
+2637 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e
+(supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630
+2746 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e
+Fq(inputrc)35 b Ft(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound)
+d(b)m(y)630 2856 y(default.)150 3014 y Fs(glob-complete-word)e(\(M-g\))
+630 3124 y Ft(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)h(is)g(treated)h
+(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)g(with)g(an)630
+3233 y(asterisk)d(implicitly)h(app)s(ended.)37 b(This)23
+b(pattern)i(is)f(used)g(to)h(generate)h(a)e(list)h(of)g(matc)m(hing)630
+3343 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150
+3501 y Fs(glob-expand-word)c(\(C-x)j(*\))630 3611 y Ft(The)40
+b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)h(is)g(treated)g(as)g(a)g(pattern)g
+(for)f(pathname)g(expansion,)k(and)630 3720 y(the)c(list)g(of)f(matc)m
+(hing)i(\014le)e(names)g(is)h(inserted,)h(replacing)g(the)e(w)m(ord.)67
+b(If)39 b(a)h(n)m(umeric)630 3830 y(argumen)m(t)31 b(is)f(supplied,)g
+(a)g(`)p Fs(*)p Ft(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g
 (expansion.)150 3988 y Fs(glob-list-expansions)25 b(\(C-x)k(g\))630
-4098 y Ft(The)k(list)f(of)h(expansions)f(that)i(w)m(ould)e(ha)m(v)m(e)i
+4098 y Ft(The)k(list)h(of)f(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h
 (b)s(een)f(generated)h(b)m(y)f Fs(glob-expand-word)630
-4208 y Ft(is)g(displa)m(y)m(ed,)g(and)g(the)h(line)e(is)g(redra)m(wn.)
-50 b(If)33 b(a)h(n)m(umeric)f(argumen)m(t)h(is)e(supplied,)g(a)i(`)p
-Fs(*)p Ft(')630 4317 y(is)29 b(app)s(ended)g(b)s(efore)h(pathname)g
+4208 y Ft(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
+Fs(*)p Ft(')630 4317 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g
 (expansion.)150 4475 y Fs(display-shell-version)25 b(\(C-x)k(C-v\))630
-4585 y Ft(Displa)m(y)h(v)m(ersion)f(information)g(ab)s(out)h(the)h
-(curren)m(t)f(instance)g(of)g(Bash.)150 4743 y Fs(shell-expand-line)c
-(\(M-C-e\))630 4853 y Ft(Expand)34 b(the)h(line)f(as)i(the)f(shell)f
-(do)s(es.)55 b(This)33 b(p)s(erforms)h(alias)g(and)h(history)f
-(expansion)630 4963 y(as)g(w)m(ell)e(as)i(all)f(of)g(the)h(shell)e(w)m
-(ord)h(expansions)f(\(see)j(Section)e(3.5)i([Shell)c(Expansions],)630
-5072 y(page)g(16\).)150 5230 y Fs(history-expand-line)25
-b(\(M-^\))630 5340 y Ft(P)m(erform)30 b(history)g(expansion)f(on)h(the)
-h(curren)m(t)f(line.)p eop
+4585 y Ft(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 4743 y Fs(shell-expand-line)c
+(\(M-C-e\))630 4853 y Ft(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 4963 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
+5072 y(page)e(16\).)150 5230 y Fs(history-expand-line)25
+b(\(M-^\))630 5340 y Ft(P)m(erform)30 b(history)h(expansion)f(on)g(the)
+h(curren)m(t)f(line.)p eop end
 %%Page: 103 109
-103 108 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2060 b(103)150 299 y Fs(magic-space)27
-b(\(\))630 408 y Ft(P)m(erform)c(history)f(expansion)g(on)h(the)g
-(curren)m(t)g(line)e(and)i(insert)f(a)h(space)h(\(see)g(Section)f(9.3)
-630 518 y([History)30 b(In)m(teraction],)i(page)f(111\).)150
-664 y Fs(alias-expand-line)26 b(\(\))630 774 y Ft(P)m(erform)i(alias)g
-(expansion)f(on)h(the)h(curren)m(t)f(line)f(\(see)i(Section)f(6.6)i
-([Aliases],)e(page)h(71\).)150 920 y Fs(history-and-alias-expand)o
-(-lin)o(e)24 b(\(\))630 1029 y Ft(P)m(erform)30 b(history)g(and)f
-(alias)h(expansion)f(on)h(the)h(curren)m(t)f(line.)150
+TeXDict begin 103 108 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(103)150 299 y Fs(magic-space)27
+b(\(\))630 408 y Ft(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 518 y([History)31 b(In)m(teraction],)i(page)e(111\).)150
+664 y Fs(alias-expand-line)26 b(\(\))630 774 y Ft(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(71\).)150 920 y Fs(history-and-alias-expand)o
+(-lin)o(e)24 b(\(\))630 1029 y Ft(P)m(erform)30 b(history)h(and)e
+(alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150
 1176 y Fs(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630
 1285 y Ft(A)g(synon)m(ym)g(for)g Fs(yank-last-arg)p Ft(.)150
 1431 y Fs(operate-and-get-next)25 b(\(C-o\))630 1541
-y Ft(Accept)42 b(the)e(curren)m(t)h(line)d(for)j(execution)f(and)g
-(fetc)m(h)i(the)e(next)h(line)e(relativ)m(e)i(to)g(the)630
-1650 y(curren)m(t)30 b(line)f(from)h(the)g(history)g(for)g(editing.)39
-b(An)m(y)31 b(argumen)m(t)f(is)g(ignored.)150 1797 y
+y Ft(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
+1650 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 1797 y
 Fs(edit-and-execute-command)24 b(\(C-xC-e\))630 1906
-y Ft(In)m(v)m(ok)m(e)34 b(an)f(editor)f(on)h(the)g(curren)m(t)f
-(command)h(line,)f(and)g(execute)i(the)f(result)f(as)h(shell)630
-2016 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)g
-Fs($VISUAL)p Ft(,)g Fs($EDITOR)p Ft(,)h(and)d Fs(emacs)g
-Ft(as)h(the)630 2125 y(editor,)30 b(in)f(that)i(order.)150
+y Ft(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
+2016 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h
+Fs($VISUAL)p Ft(,)f Fs($EDITOR)p Ft(,)h(and)d Fs(emacs)g
+Ft(as)h(the)630 2125 y(editor,)31 b(in)f(that)h(order.)150
 2363 y Fr(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)275 2600
-y Ft(While)22 b(the)i(Readline)e(library)f(do)s(es)j(not)g(ha)m(v)m(e)g
-(a)h(full)c(set)j(of)g Fs(vi)f Ft(editing)f(functions,)i(it)f(do)s(es)h
-(con)m(tain)150 2710 y(enough)34 b(to)h(allo)m(w)e(simple)f(editing)h
-(of)h(the)g(line.)50 b(The)34 b(Readline)e Fs(vi)i Ft(mo)s(de)f(b)s
-(eha)m(v)m(es)i(as)f(sp)s(eci\014ed)e(in)150 2819 y(the)f
+y Ft(While)24 b(the)g(Readline)g(library)f(do)s(es)h(not)g(ha)m(v)m(e)g
+(a)h(full)e(set)h(of)g Fs(vi)f Ft(editing)h(functions,)h(it)f(do)s(es)g
+(con)m(tain)150 2710 y(enough)34 b(to)h(allo)m(w)g(simple)f(editing)h
+(of)f(the)g(line.)52 b(The)34 b(Readline)g Fs(vi)g Ft(mo)s(de)f(b)s
+(eha)m(v)m(es)i(as)f(sp)s(eci\014ed)f(in)150 2819 y(the)e
 Fl(posix)e Ft(1003.2)k(standard.)275 2947 y(In)i(order)g(to)i(switc)m
-(h)e(in)m(teractiv)m(ely)h(b)s(et)m(w)m(een)g Fs(emacs)f
-Ft(and)g Fs(vi)g Ft(editing)f(mo)s(des,)j(use)f(the)g(`)p
+(h)f(in)m(teractiv)m(ely)j(b)s(et)m(w)m(een)d Fs(emacs)f
+Ft(and)g Fs(vi)g Ft(editing)h(mo)s(des,)h(use)f(the)g(`)p
 Fs(set)30 b(-o)150 3057 y(emacs)p Ft(')21 b(and)g(`)p
-Fs(set)29 b(-o)h(vi)p Ft(')21 b(commands)h(\(see)g(Section)g(4.3)h
-([The)e(Set)h(Builtin],)g(page)g(50\).)39 b(The)21 b(Readline)150
-3166 y(default)30 b(is)f Fs(emacs)g Ft(mo)s(de.)275 3294
-y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)d(in)h Fs(vi)g
-Ft(mo)s(de,)h(y)m(ou)h(are)f(already)g(placed)f(in)g(`insertion')f(mo)s
-(de,)i(as)h(if)e(y)m(ou)150 3404 y(had)d(t)m(yp)s(ed)g(an)g(`)p
+Fs(set)29 b(-o)h(vi)p Ft(')21 b(commands)h(\(see)g(Section)h(4.3)g
+([The)e(Set)h(Builtin],)j(page)d(50\).)39 b(The)21 b(Readline)150
+3166 y(default)31 b(is)f Fs(emacs)f Ft(mo)s(de.)275 3294
+y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fs(vi)f
+Ft(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 3404 y(had)c(t)m(yp)s(ed)g(an)g(`)p
 Fs(i)p Ft('.)39 b(Pressing)1215 3401 y Fg(h)p 1239 3348
 139 4 v 1239 3404 a Ff(ESC)p 1239 3419 V 1373 3401 a
-Fg(i)1429 3404 y Ft(switc)m(hes)26 b(y)m(ou)h(in)m(to)f(`command')g(mo)
-s(de,)h(where)f(y)m(ou)h(can)f(edit)g(the)150 3513 y(text)35
-b(of)f(the)g(line)e(with)g(the)i(standard)f Fs(vi)g Ft(mo)m(v)m(emen)m
-(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)f(history)f(lines)g(with)150
-3623 y(`)p Fs(k)p Ft(')f(and)e(subsequen)m(t)h(lines)f(with)g(`)p
-Fs(j)p Ft(',)h(and)g(so)h(forth.)150 3861 y Fr(8.6)68
+Fg(i)1429 3404 y Ft(switc)m(hes)27 b(y)m(ou)g(in)m(to)g(`command')f(mo)
+s(de,)h(where)f(y)m(ou)h(can)f(edit)h(the)150 3513 y(text)35
+b(of)f(the)g(line)g(with)f(the)h(standard)f Fs(vi)g Ft(mo)m(v)m(emen)m
+(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g(history)f(lines)h(with)150
+3623 y(`)p Fs(k)p Ft(')d(and)e(subsequen)m(t)h(lines)h(with)f(`)p
+Fs(j)p Ft(',)g(and)g(so)h(forth.)150 3861 y Fr(8.6)68
 b(Programmable)47 b(Completion)275 4098 y Ft(When)25
-b(w)m(ord)g(completion)g(is)g(attempted)h(for)g(an)f(argumen)m(t)h(to)h
-(a)f(command)f(for)h(whic)m(h)e(a)i(comple-)150 4208
-y(tion)e(sp)s(eci\014cation)f(\(a)j Fq(compsp)s(ec)6
-b Ft(\))24 b(has)g(b)s(een)g(de\014ned)g(using)f(the)h
-Fs(complete)f Ft(builtin)e(\(see)k(Section)g(8.7)150
-4317 y([Programmable)e(Completion)f(Builtins],)g(page)i(105\),)j(the)c
-(programmable)g(completion)f(facilities)g(are)150 4427
-y(in)m(v)m(ok)m(ed.)275 4555 y(First,)g(the)f(command)g(name)g(is)g
-(iden)m(ti\014ed.)35 b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f
+b(w)m(ord)g(completion)i(is)f(attempted)g(for)g(an)f(argumen)m(t)h(to)h
+(a)f(command)f(for)h(whic)m(h)f(a)h(comple-)150 4208
+y(tion)f(sp)s(eci\014cation)g(\(a)h Fq(compsp)s(ec)6
+b Ft(\))24 b(has)g(b)s(een)g(de\014ned)g(using)g(the)g
+Fs(complete)f Ft(builtin)h(\(see)h(Section)h(8.7)150
+4317 y([Programmable)e(Completion)g(Builtins],)h(page)f(105\),)j(the)c
+(programmable)h(completion)g(facilities)i(are)150 4427
+y(in)m(v)m(ok)m(ed.)275 4555 y(First,)d(the)e(command)g(name)g(is)h
+(iden)m(ti\014ed.)37 b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f
 (de\014ned)g(for)h(that)h(command,)150 4664 y(the)44
-b(compsp)s(ec)g(is)f(used)g(to)h(generate)i(the)e(list)e(of)i(p)s
-(ossible)e(completions)h(for)g(the)h(w)m(ord.)81 b(If)44
-b(the)150 4774 y(command)33 b(w)m(ord)f(is)g(a)h(full)e(pathname,)j(a)f
-(compsp)s(ec)f(for)h(the)g(full)e(pathname)h(is)g(searc)m(hed)i(for)e
-(\014rst.)150 4883 y(If)f(no)h(compsp)s(ec)f(is)g(found)f(for)h(the)h
-(full)e(pathname,)i(an)f(attempt)i(is)e(made)g(to)i(\014nd)d(a)i
-(compsp)s(ec)f(for)150 4993 y(the)g(p)s(ortion)e(follo)m(wing)f(the)j
-(\014nal)e(slash.)275 5121 y(Once)34 b(a)g(compsp)s(ec)g(has)g(b)s(een)
-f(found,)h(it)g(is)f(used)g(to)i(generate)h(the)e(list)f(of)h(matc)m
-(hing)g(w)m(ords.)51 b(If)150 5230 y(a)37 b(compsp)s(ec)f(is)f(not)i
-(found,)f(the)h(default)e(Bash)i(completion)e(describ)s(ed)f(ab)s(o)m
-(v)m(e)k(\(see)f(Section)f(8.4.6)150 5340 y([Commands)30
-b(F)-8 b(or)31 b(Completion],)e(page)i(99\))h(is)d(p)s(erformed.)p
-eop
+b(compsp)s(ec)g(is)g(used)f(to)h(generate)i(the)e(list)g(of)g(p)s
+(ossible)g(completions)h(for)e(the)h(w)m(ord.)81 b(If)44
+b(the)150 4774 y(command)33 b(w)m(ord)f(is)h(a)g(full)g(pathname,)h(a)f
+(compsp)s(ec)f(for)h(the)g(full)g(pathname)f(is)h(searc)m(hed)h(for)e
+(\014rst.)150 4883 y(If)f(no)h(compsp)s(ec)f(is)h(found)e(for)h(the)h
+(full)g(pathname,)g(an)f(attempt)i(is)f(made)f(to)i(\014nd)d(a)i
+(compsp)s(ec)f(for)150 4993 y(the)g(p)s(ortion)f(follo)m(wing)h(the)g
+(\014nal)f(slash.)275 5121 y(Once)k(a)g(compsp)s(ec)g(has)g(b)s(een)f
+(found,)h(it)h(is)f(used)f(to)i(generate)h(the)e(list)h(of)f(matc)m
+(hing)h(w)m(ords.)51 b(If)150 5230 y(a)37 b(compsp)s(ec)f(is)g(not)h
+(found,)f(the)h(default)f(Bash)h(completion)g(describ)s(ed)e(ab)s(o)m
+(v)m(e)j(\(see)f(Section)g(8.4.6)150 5340 y([Commands)30
+b(F)-8 b(or)31 b(Completion],)g(page)g(99\))h(is)e(p)s(erformed.)p
+eop end
 %%Page: 104 110
-104 109 bop 150 -116 a Ft(104)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-275 299 y(First,)f(the)h(actions)f(sp)s(eci\014ed)f(b)m(y)i(the)f
-(compsp)s(ec)h(are)g(used.)40 b(Only)29 b(matc)m(hes)j(whic)m(h)d(are)i
-(pre\014xed)150 408 y(b)m(y)25 b(the)h(w)m(ord)f(b)s(eing)e(completed)j
-(are)f(returned.)38 b(When)25 b(the)h(`)p Fs(-f)p Ft(')f(or)g(`)p
-Fs(-d)p Ft(')g(option)g(is)f(used)h(for)g(\014lename)150
-518 y(or)30 b(directory)g(name)g(completion,)g(the)g(shell)f(v)-5
-b(ariable)29 b Fs(FIGNORE)f Ft(is)h(used)g(to)i(\014lter)f(the)g(matc)m
-(hes.)42 b(See)150 628 y(Section)30 b(5.2)i([Bash)e(V)-8
-b(ariables],)31 b(page)g(55,)g(for)f(a)h(description)e(of)h
-Fs(FIGNORE)p Ft(.)275 765 y(An)m(y)f(completions)f(sp)s(eci\014ed)g(b)m
-(y)h(a)h(\014lename)e(expansion)h(pattern)g(to)h(the)g(`)p
-Fs(-G)p Ft(')f(option)g(are)g(gener-)150 874 y(ated)h(next.)40
+TeXDict begin 104 109 bop 150 -116 a Ft(104)2527 b(Bash)31
+b(Reference)g(Man)m(ual)275 299 y(First,)g(the)g(actions)g(sp)s
+(eci\014ed)f(b)m(y)h(the)f(compsp)s(ec)h(are)g(used.)40
+b(Only)30 b(matc)m(hes)i(whic)m(h)e(are)h(pre\014xed)150
+408 y(b)m(y)25 b(the)h(w)m(ord)f(b)s(eing)f(completed)j(are)e
+(returned.)38 b(When)25 b(the)h(`)p Fs(-f)p Ft(')f(or)g(`)p
+Fs(-d)p Ft(')g(option)h(is)f(used)g(for)g(\014lename)150
+518 y(or)30 b(directory)h(name)f(completion,)i(the)e(shell)h(v)-5
+b(ariable)31 b Fs(FIGNORE)d Ft(is)i(used)f(to)i(\014lter)g(the)f(matc)m
+(hes.)42 b(See)150 628 y(Section)31 b(5.2)h([Bash)e(V)-8
+b(ariables],)33 b(page)e(55,)g(for)f(a)h(description)g(of)f
+Fs(FIGNORE)p Ft(.)275 765 y(An)m(y)f(completions)h(sp)s(eci\014ed)f(b)m
+(y)g(a)h(\014lename)f(expansion)h(pattern)f(to)h(the)g(`)p
+Fs(-G)p Ft(')f(option)h(are)f(gener-)150 874 y(ated)h(next.)40
 b(The)29 b(w)m(ords)g(generated)h(b)m(y)f(the)h(pattern)f(need)g(not)g
-(matc)m(h)i(the)e(w)m(ord)g(b)s(eing)f(completed.)150
-984 y(The)42 b Fs(GLOBIGNORE)d Ft(shell)i(v)-5 b(ariable)41
-b(is)g(not)i(used)e(to)i(\014lter)e(the)i(matc)m(hes,)j(but)c(the)g
-Fs(FIGNORE)f Ft(shell)150 1093 y(v)-5 b(ariable)29 b(is)h(used.)275
-1230 y(Next,)35 b(the)g(string)d(sp)s(eci\014ed)h(as)h(the)g(argumen)m
-(t)g(to)h(the)f(`)p Fs(-W)p Ft(')g(option)f(is)g(considered.)51
-b(The)33 b(string)150 1340 y(is)f(\014rst)f(split)g(using)g(the)i(c)m
-(haracters)h(in)d(the)i Fs(IFS)e Ft(sp)s(ecial)h(v)-5
-b(ariable)31 b(as)i(delimiters.)45 b(Shell)30 b(quoting)i(is)150
-1450 y(honored.)37 b(Eac)m(h)21 b(w)m(ord)g(is)f(then)g(expanded)g
-(using)g(brace)h(expansion,)h(tilde)d(expansion,)j(parameter)g(and)150
-1559 y(v)-5 b(ariable)24 b(expansion,)h(command)g(substitution,)f
-(arithmetic)g(expansion,)h(and)g(pathname)g(expansion,)150
-1669 y(as)j(describ)s(ed)d(ab)s(o)m(v)m(e)k(\(see)f(Section)g(3.5)g
-([Shell)e(Expansions],)g(page)j(16\).)41 b(The)27 b(results)f(are)i
-(split)d(using)150 1778 y(the)33 b(rules)f(describ)s(ed)e(ab)s(o)m(v)m
-(e)k(\(see)g(Section)f(3.5.7)i([W)-8 b(ord)33 b(Splitting],)f(page)h
-(22\).)50 b(The)32 b(results)g(of)h(the)150 1888 y(expansion)g(are)i
-(pre\014x-matc)m(hed)f(against)h(the)f(w)m(ord)g(b)s(eing)f(completed,)
-j(and)e(the)g(matc)m(hing)g(w)m(ords)150 1998 y(b)s(ecome)d(the)f(p)s
-(ossible)e(completions.)275 2134 y(After)h(these)g(matc)m(hes)i(ha)m(v)
-m(e)f(b)s(een)f(generated,)h(an)m(y)g(shell)d(function)h(or)h(command)g
-(sp)s(eci\014ed)e(with)150 2244 y(the)j(`)p Fs(-F)p Ft(')g(and)f(`)p
-Fs(-C)p Ft(')h(options)f(is)g(in)m(v)m(ok)m(ed.)40 b(When)30
-b(the)g(command)g(or)f(function)g(is)g(in)m(v)m(ok)m(ed,)h(the)g
+(matc)m(h)i(the)e(w)m(ord)g(b)s(eing)g(completed.)150
+984 y(The)42 b Fs(GLOBIGNORE)d Ft(shell)k(v)-5 b(ariable)43
+b(is)f(not)h(used)e(to)i(\014lter)f(the)h(matc)m(hes,)j(but)c(the)g
+Fs(FIGNORE)f Ft(shell)150 1093 y(v)-5 b(ariable)31 b(is)g(used.)275
+1230 y(Next,)k(the)g(string)e(sp)s(eci\014ed)h(as)g(the)g(argumen)m(t)g
+(to)h(the)f(`)p Fs(-W)p Ft(')g(option)g(is)g(considered.)52
+b(The)33 b(string)150 1340 y(is)g(\014rst)e(split)i(using)f(the)h(c)m
+(haracters)h(in)e(the)h Fs(IFS)e Ft(sp)s(ecial)j(v)-5
+b(ariable)33 b(as)g(delimiters.)48 b(Shell)32 b(quoting)h(is)150
+1450 y(honored.)k(Eac)m(h)21 b(w)m(ord)g(is)g(then)f(expanded)g(using)h
+(brace)g(expansion,)i(tilde)e(expansion,)i(parameter)f(and)150
+1559 y(v)-5 b(ariable)26 b(expansion,)g(command)f(substitution,)h
+(arithmetic)g(expansion,)g(and)f(pathname)g(expansion,)150
+1669 y(as)j(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(3.5)f
+([Shell)g(Expansions],)f(page)i(16\).)41 b(The)27 b(results)g(are)h
+(split)f(using)150 1778 y(the)33 b(rules)g(describ)s(ed)e(ab)s(o)m(v)m
+(e)j(\(see)g(Section)g(3.5.7)h([W)-8 b(ord)33 b(Splitting],)i(page)e
+(22\).)50 b(The)32 b(results)h(of)g(the)150 1888 y(expansion)h(are)h
+(pre\014x-matc)m(hed)f(against)i(the)e(w)m(ord)g(b)s(eing)g(completed,)
+j(and)d(the)g(matc)m(hing)h(w)m(ords)150 1998 y(b)s(ecome)c(the)f(p)s
+(ossible)g(completions.)275 2134 y(After)f(these)g(matc)m(hes)i(ha)m(v)
+m(e)f(b)s(een)f(generated,)h(an)m(y)g(shell)f(function)g(or)g(command)g
+(sp)s(eci\014ed)f(with)150 2244 y(the)i(`)p Fs(-F)p Ft(')g(and)f(`)p
+Fs(-C)p Ft(')h(options)g(is)g(in)m(v)m(ok)m(ed.)41 b(When)30
+b(the)g(command)g(or)f(function)h(is)g(in)m(v)m(ok)m(ed,)h(the)f
 Fs(COMP_)150 2354 y(LINE)21 b Ft(and)h Fs(COMP_POINT)d
-Ft(v)-5 b(ariables)21 b(are)i(assigned)f(v)-5 b(alues)21
-b(as)i(describ)s(ed)d(ab)s(o)m(v)m(e)k(\(see)f(Section)f(5.2)i([Bash)
-150 2463 y(V)-8 b(ariables],)31 b(page)h(55\).)44 b(If)30
-b(a)i(shell)d(function)g(is)h(b)s(eing)g(in)m(v)m(ok)m(ed,)i(the)f
+Ft(v)-5 b(ariables)23 b(are)g(assigned)g(v)-5 b(alues)22
+b(as)h(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(5.2)h([Bash)
+150 2463 y(V)-8 b(ariables],)33 b(page)f(55\).)44 b(If)30
+b(a)i(shell)f(function)f(is)h(b)s(eing)g(in)m(v)m(ok)m(ed,)i(the)e
 Fs(COMP_WORDS)d Ft(and)j Fs(COMP_CWORD)150 2573 y Ft(v)-5
-b(ariables)38 b(are)i(also)g(set.)68 b(When)40 b(the)f(function)g(or)g
-(command)g(is)g(in)m(v)m(ok)m(ed,)j(the)e(\014rst)f(argumen)m(t)h(is)
+b(ariables)40 b(are)g(also)h(set.)68 b(When)40 b(the)f(function)h(or)f
+(command)g(is)h(in)m(v)m(ok)m(ed,)j(the)d(\014rst)f(argumen)m(t)h(is)
 150 2682 y(the)34 b(name)f(of)h(the)g(command)f(whose)g(argumen)m(ts)h
-(are)g(b)s(eing)e(completed,)j(the)e(second)h(argumen)m(t)g(is)150
-2792 y(the)h(w)m(ord)g(b)s(eing)f(completed,)i(and)f(the)g(third)e
-(argumen)m(t)j(is)e(the)h(w)m(ord)g(preceding)f(the)i(w)m(ord)e(b)s
-(eing)150 2902 y(completed)d(on)f(the)h(curren)m(t)g(command)f(line.)40
-b(No)31 b(\014ltering)e(of)i(the)g(generated)h(completions)e(against)
-150 3011 y(the)f(w)m(ord)g(b)s(eing)e(completed)i(is)f(p)s(erformed;)g
-(the)h(function)f(or)h(command)f(has)h(complete)g(freedom)g(in)150
-3121 y(generating)i(the)f(matc)m(hes.)275 3258 y(An)m(y)h(function)g
-(sp)s(eci\014ed)f(with)g(`)p Fs(-F)p Ft(')i(is)f(in)m(v)m(ok)m(ed)h
-(\014rst.)44 b(The)31 b(function)g(ma)m(y)h(use)g(an)m(y)g(of)g(the)g
-(shell)150 3367 y(facilities,)40 b(including)d(the)j
-Fs(compgen)d Ft(builtin)g(describ)s(ed)g(b)s(elo)m(w)i(\(see)i(Section)
-e(8.7)i([Programmable)150 3477 y(Completion)26 b(Builtins],)f(page)j
+(are)g(b)s(eing)f(completed,)j(the)d(second)h(argumen)m(t)g(is)150
+2792 y(the)h(w)m(ord)g(b)s(eing)g(completed,)i(and)e(the)g(third)f
+(argumen)m(t)i(is)f(the)g(w)m(ord)g(preceding)g(the)h(w)m(ord)e(b)s
+(eing)150 2902 y(completed)e(on)e(the)h(curren)m(t)g(command)f(line.)42
+b(No)31 b(\014ltering)g(of)g(the)g(generated)h(completions)g(against)
+150 3011 y(the)d(w)m(ord)g(b)s(eing)f(completed)i(is)f(p)s(erformed;)f
+(the)h(function)g(or)g(command)f(has)h(complete)h(freedom)f(in)150
+3121 y(generating)j(the)e(matc)m(hes.)275 3258 y(An)m(y)h(function)h
+(sp)s(eci\014ed)f(with)g(`)p Fs(-F)p Ft(')h(is)g(in)m(v)m(ok)m(ed)h
+(\014rst.)44 b(The)31 b(function)h(ma)m(y)g(use)g(an)m(y)g(of)g(the)g
+(shell)150 3367 y(facilities,)44 b(including)c(the)g
+Fs(compgen)d Ft(builtin)j(describ)s(ed)e(b)s(elo)m(w)i(\(see)h(Section)
+f(8.7)h([Programmable)150 3477 y(Completion)28 b(Builtins],)g(page)g
 (105\),)i(to)e(generate)h(the)e(matc)m(hes.)41 b(It)27
-b(m)m(ust)g(put)g(the)g(p)s(ossible)e(comple-)150 3587
-y(tions)30 b(in)f(the)h Fs(COMPREPLY)e Ft(arra)m(y)j(v)-5
-b(ariable.)275 3724 y(Next,)23 b(an)m(y)e(command)f(sp)s(eci\014ed)f
-(with)g(the)i(`)p Fs(-C)p Ft(')f(option)g(is)g(in)m(v)m(ok)m(ed)h(in)e
-(an)h(en)m(vironmen)m(t)g(equiv)-5 b(alen)m(t)150 3833
-y(to)26 b(command)e(substitution.)37 b(It)25 b(should)e(prin)m(t)h(a)h
-(list)f(of)h(completions,)g(one)g(p)s(er)f(line,)h(to)h(the)f(standard)
-150 3943 y(output.)40 b(Bac)m(kslash)31 b(ma)m(y)g(b)s(e)f(used)g(to)h
-(escap)s(e)g(a)f(newline,)f(if)g(necessary)-8 b(.)275
-4080 y(After)42 b(all)e(of)i(the)g(p)s(ossible)e(completions)h(are)h
-(generated,)k(an)m(y)c(\014lter)f(sp)s(eci\014ed)f(with)h(the)h(`)p
-Fs(-X)p Ft(')150 4189 y(option)33 b(is)f(applied)f(to)j(the)f(list.)47
-b(The)33 b(\014lter)f(is)g(a)i(pattern)f(as)g(used)g(for)g(pathname)g
-(expansion;)g(a)h(`)p Fs(&)p Ft(')150 4299 y(in)k(the)h(pattern)g(is)f
-(replaced)g(with)g(the)h(text)h(of)f(the)g(w)m(ord)g(b)s(eing)e
-(completed.)67 b(A)39 b(literal)e(`)p Fs(&)p Ft(')i(ma)m(y)150
-4408 y(b)s(e)e(escap)s(ed)h(with)f(a)i(bac)m(kslash;)j(the)c(bac)m
-(kslash)g(is)f(remo)m(v)m(ed)i(b)s(efore)e(attempting)i(a)f(matc)m(h.)
-65 b(An)m(y)150 4518 y(completion)33 b(that)i(matc)m(hes)g(the)f
-(pattern)g(will)d(b)s(e)j(remo)m(v)m(ed)h(from)e(the)h(list.)51
-b(A)34 b(leading)e(`)p Fs(!)p Ft(')j(negates)150 4628
-y(the)c(pattern;)f(in)f(this)h(case)h(an)m(y)g(completion)e(not)i(matc)
-m(hing)g(the)f(pattern)h(will)c(b)s(e)j(remo)m(v)m(ed.)275
-4765 y(Finally)-8 b(,)30 b(an)m(y)i(pre\014x)f(and)g(su\016x)g(sp)s
-(eci\014ed)f(with)h(the)h(`)p Fs(-P)p Ft(')f(and)g(`)p
-Fs(-S)p Ft(')h(options)f(are)h(added)f(to)i(eac)m(h)150
-4874 y(mem)m(b)s(er)e(of)g(the)h(completion)f(list,)f(and)h(the)h
-(result)e(is)h(returned)f(to)i(the)g(Readline)e(completion)h(co)s(de)
-150 4984 y(as)g(the)f(list)f(of)i(p)s(ossible)d(completions.)275
-5121 y(If)22 b(the)i(previously-applied)19 b(actions)24
-b(do)f(not)h(generate)h(an)m(y)f(matc)m(hes,)i(and)d(the)g(`)p
-Fs(-o)30 b(dirnames)p Ft(')22 b(op-)150 5230 y(tion)28
-b(w)m(as)g(supplied)d(to)k Fs(complete)d Ft(when)h(the)h(compsp)s(ec)g
-(w)m(as)g(de\014ned,)g(directory)f(name)i(completion)150
-5340 y(is)g(attempted.)p eop
+b(m)m(ust)g(put)g(the)g(p)s(ossible)g(comple-)150 3587
+y(tions)k(in)f(the)g Fs(COMPREPLY)e Ft(arra)m(y)j(v)-5
+b(ariable.)275 3724 y(Next,)23 b(an)m(y)e(command)f(sp)s(eci\014ed)g
+(with)g(the)h(`)p Fs(-C)p Ft(')f(option)h(is)g(in)m(v)m(ok)m(ed)h(in)e
+(an)g(en)m(vironmen)m(t)h(equiv)-5 b(alen)m(t)150 3833
+y(to)26 b(command)e(substitution.)39 b(It)25 b(should)f(prin)m(t)h(a)g
+(list)h(of)f(completions,)i(one)e(p)s(er)f(line,)j(to)f(the)f(standard)
+150 3943 y(output.)40 b(Bac)m(kslash)32 b(ma)m(y)f(b)s(e)f(used)g(to)h
+(escap)s(e)g(a)f(newline,)h(if)f(necessary)-8 b(.)275
+4080 y(After)42 b(all)g(of)g(the)g(p)s(ossible)g(completions)h(are)f
+(generated,)k(an)m(y)c(\014lter)g(sp)s(eci\014ed)f(with)h(the)g(`)p
+Fs(-X)p Ft(')150 4189 y(option)34 b(is)f(applied)g(to)h(the)f(list.)49
+b(The)33 b(\014lter)g(is)g(a)h(pattern)f(as)g(used)g(for)g(pathname)g
+(expansion;)h(a)g(`)p Fs(&)p Ft(')150 4299 y(in)39 b(the)g(pattern)g
+(is)g(replaced)g(with)g(the)g(text)h(of)f(the)g(w)m(ord)g(b)s(eing)f
+(completed.)68 b(A)39 b(literal)h(`)p Fs(&)p Ft(')f(ma)m(y)150
+4408 y(b)s(e)e(escap)s(ed)h(with)g(a)h(bac)m(kslash;)k(the)38
+b(bac)m(kslash)h(is)f(remo)m(v)m(ed)h(b)s(efore)e(attempting)j(a)e
+(matc)m(h.)65 b(An)m(y)150 4518 y(completion)35 b(that)g(matc)m(hes)g
+(the)f(pattern)g(will)g(b)s(e)g(remo)m(v)m(ed)h(from)e(the)h(list.)53
+b(A)34 b(leading)g(`)p Fs(!)p Ft(')h(negates)150 4628
+y(the)c(pattern;)f(in)g(this)h(case)g(an)m(y)g(completion)g(not)g(matc)
+m(hing)h(the)e(pattern)h(will)f(b)s(e)g(remo)m(v)m(ed.)275
+4765 y(Finally)-8 b(,)33 b(an)m(y)f(pre\014x)f(and)g(su\016x)g(sp)s
+(eci\014ed)g(with)h(the)g(`)p Fs(-P)p Ft(')f(and)g(`)p
+Fs(-S)p Ft(')h(options)g(are)g(added)f(to)i(eac)m(h)150
+4874 y(mem)m(b)s(er)e(of)g(the)h(completion)h(list,)f(and)f(the)h
+(result)f(is)h(returned)e(to)i(the)g(Readline)g(completion)h(co)s(de)
+150 4984 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)275
+5121 y(If)22 b(the)i(previously-applied)f(actions)i(do)e(not)h
+(generate)h(an)m(y)f(matc)m(hes,)i(and)d(the)g(`)p Fs(-o)30
+b(dirnames)p Ft(')22 b(op-)150 5230 y(tion)29 b(w)m(as)f(supplied)f(to)
+i Fs(complete)d Ft(when)h(the)h(compsp)s(ec)g(w)m(as)g(de\014ned,)g
+(directory)g(name)h(completion)150 5340 y(is)h(attempted.)p
+eop end
 %%Page: 105 111
-105 110 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2060 b(105)275 299 y(If)30 b(the)i(`)p
-Fs(-o)e(plusdirs)p Ft(')f(option)i(w)m(as)g(supplied)d(to)k
+TeXDict begin 105 110 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(105)275 299 y(If)30
+b(the)i(`)p Fs(-o)e(plusdirs)p Ft(')f(option)j(w)m(as)f(supplied)f(to)i
 Fs(complete)e Ft(when)g(the)h(compsp)s(ec)g(w)m(as)h(de\014ned,)150
-408 y(directory)j(name)g(completion)g(is)f(attempted)i(and)f(an)m(y)h
-(matc)m(hes)g(are)g(added)f(to)h(the)f(results)f(of)i(the)150
-518 y(other)31 b(actions.)275 659 y(By)g(default,)h(if)e(a)i(compsp)s
-(ec)f(is)g(found,)g(whatev)m(er)h(it)f(generates)i(is)d(returned)h(to)h
-(the)g(completion)150 769 y(co)s(de)21 b(as)g(the)g(full)e(set)i(of)g
-(p)s(ossible)d(completions.)37 b(The)20 b(default)g(Bash)h(completions)
-f(are)i(not)f(attempted,)150 879 y(and)k(the)h(Readline)e(default)h(of)
-h(\014lename)f(completion)g(is)g(disabled.)36 b(If)26
+408 y(directory)k(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h
+(matc)m(hes)g(are)g(added)f(to)h(the)f(results)g(of)h(the)150
+518 y(other)31 b(actions.)275 659 y(By)g(default,)i(if)e(a)h(compsp)s
+(ec)f(is)h(found,)f(whatev)m(er)h(it)g(generates)h(is)e(returned)g(to)h
+(the)g(completion)150 769 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g
+(p)s(ossible)f(completions.)39 b(The)20 b(default)h(Bash)g(completions)
+h(are)g(not)f(attempted,)150 879 y(and)k(the)h(Readline)g(default)g(of)
+g(\014lename)g(completion)h(is)f(disabled.)38 b(If)26
 b(the)g(`)p Fs(-o)k(bashdefault)p Ft(')22 b(option)150
-988 y(w)m(as)i(supplied)c(to)25 b Fs(complete)c Ft(when)i(the)g(compsp)
-s(ec)h(w)m(as)g(de\014ned,)g(the)f(default)g(Bash)h(completions)f(are)
-150 1098 y(attempted)h(if)e(the)h(compsp)s(ec)g(generates)i(no)e(matc)m
+988 y(w)m(as)i(supplied)e(to)j Fs(complete)c Ft(when)i(the)g(compsp)s
+(ec)h(w)m(as)g(de\014ned,)g(the)f(default)h(Bash)g(completions)h(are)
+150 1098 y(attempted)f(if)f(the)g(compsp)s(ec)g(generates)i(no)e(matc)m
 (hes.)39 b(If)23 b(the)g(`)p Fs(-o)30 b(default)p Ft(')21
-b(option)i(w)m(as)g(supplied)d(to)150 1207 y Fs(complete)25
-b Ft(when)h(the)h(compsp)s(ec)f(w)m(as)i(de\014ned,)e(Readline's)g
-(default)g(completion)g(will)e(b)s(e)i(p)s(erformed)150
-1317 y(if)j(the)i(compsp)s(ec)f(\(and,)g(if)g(attempted,)h(the)g
-(default)e(Bash)i(completions\))f(generate)i(no)e(matc)m(hes.)275
-1458 y(When)20 b(a)i(compsp)s(ec)e(indicates)g(that)i(directory)f(name)
-g(completion)f(is)g(desired,)i(the)f(programmable)150
-1568 y(completion)29 b(functions)f(force)j(Readline)d(to)j(app)s(end)d
-(a)i(slash)f(to)h(completed)g(names)f(whic)m(h)g(are)h(sym-)150
-1678 y(b)s(olic)38 b(links)g(to)j(directories,)h(sub)5
-b(ject)40 b(to)h(the)f(v)-5 b(alue)40 b(of)g(the)g Fq(mark-directories)
-j Ft(Readline)c(v)-5 b(ariable,)150 1787 y(regardless)30
-b(of)g(the)h(setting)f(of)h(the)f Fq(mark-symlink)m(ed-directories)i
-Ft(Readline)d(v)-5 b(ariable.)150 2062 y Fr(8.7)68 b(Programmable)47
-b(Completion)f(Builtins)275 2313 y Ft(Tw)m(o)30 b(builtin)d(commands)j
-(are)h(a)m(v)-5 b(ailable)29 b(to)i(manipulate)e(the)i(programmable)e
-(completion)h(facil-)150 2423 y(ities.)150 2592 y Fs(compgen)870
-2730 y(compgen)46 b([)p Fj(option)11 b Fs(])45 b([)p
-Fj(word)11 b Fs(])630 2868 y Ft(Generate)27 b(p)s(ossible)c(completion)
-i(matc)m(hes)i(for)e Fq(w)m(ord)k Ft(according)d(to)g(the)g
-Fq(option)p Ft(s,)g(whic)m(h)630 2978 y(ma)m(y)i(b)s(e)f(an)m(y)h
-(option)f(accepted)i(b)m(y)e(the)h Fs(complete)d Ft(builtin)g(with)h
-(the)i(exception)f(of)h(`)p Fs(-p)p Ft(')630 3088 y(and)k(`)p
-Fs(-r)p Ft(',)i(and)e(write)g(the)h(matc)m(hes)h(to)g(the)f(standard)f
-(output.)48 b(When)33 b(using)e(the)i(`)p Fs(-F)p Ft(')630
-3197 y(or)28 b(`)p Fs(-C)p Ft(')g(options,)g(the)g(v)-5
-b(arious)28 b(shell)e(v)-5 b(ariables)27 b(set)h(b)m(y)g(the)g
-(programmable)g(completion)630 3307 y(facilities,)h(while)f(a)m(v)-5
-b(ailable,)30 b(will)e(not)j(ha)m(v)m(e)g(useful)e(v)-5
-b(alues.)630 3445 y(The)34 b(matc)m(hes)h(will)d(b)s(e)i(generated)h
-(in)e(the)i(same)g(w)m(a)m(y)g(as)g(if)e(the)i(programmable)e(com-)630
-3554 y(pletion)c(co)s(de)i(had)f(generated)i(them)e(directly)g(from)g
-(a)h(completion)f(sp)s(eci\014cation)f(with)630 3664
-y(the)g(same)h(\015ags.)40 b(If)29 b Fq(w)m(ord)j Ft(is)c(sp)s
-(eci\014ed,)g(only)g(those)i(completions)e(matc)m(hing)h
-Fq(w)m(ord)k Ft(will)630 3773 y(b)s(e)d(displa)m(y)m(ed.)630
-3911 y(The)24 b(return)g(v)-5 b(alue)24 b(is)g(true)g(unless)f(an)i(in)
-m(v)-5 b(alid)22 b(option)i(is)g(supplied,)e(or)j(no)g(matc)m(hes)g(w)m
+b(option)j(w)m(as)f(supplied)f(to)150 1207 y Fs(complete)j
+Ft(when)h(the)h(compsp)s(ec)f(w)m(as)i(de\014ned,)e(Readline's)i
+(default)f(completion)h(will)f(b)s(e)f(p)s(erformed)150
+1317 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,)g(the)g
+(default)f(Bash)h(completions\))h(generate)g(no)e(matc)m(hes.)275
+1458 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g(name)
+f(completion)h(is)f(desired,)i(the)e(programmable)150
+1568 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d
+(a)i(slash)g(to)g(completed)h(names)e(whic)m(h)h(are)g(sym-)150
+1678 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5
+b(ject)40 b(to)h(the)f(v)-5 b(alue)41 b(of)f(the)g Fq(mark-directories)
+45 b Ft(Readline)c(v)-5 b(ariable,)150 1787 y(regardless)31
+b(of)f(the)h(setting)g(of)g(the)f Fq(mark-symlink)m(ed-directories)36
+b Ft(Readline)31 b(v)-5 b(ariable.)150 2062 y Fr(8.7)68
+b(Programmable)47 b(Completion)f(Builtins)275 2313 y
+Ft(Tw)m(o)30 b(builtin)g(commands)g(are)h(a)m(v)-5 b(ailable)32
+b(to)f(manipulate)g(the)g(programmable)f(completion)i(facil-)150
+2423 y(ities.)150 2592 y Fs(compgen)870 2730 y(compgen)46
+b([)p Fj(option)11 b Fs(])45 b([)p Fj(word)11 b Fs(])630
+2868 y Ft(Generate)27 b(p)s(ossible)e(completion)i(matc)m(hes)g(for)e
+Fq(w)m(ord)k Ft(according)e(to)f(the)g Fq(option)p Ft(s,)h(whic)m(h)630
+2978 y(ma)m(y)h(b)s(e)f(an)m(y)h(option)g(accepted)h(b)m(y)e(the)h
+Fs(complete)d Ft(builtin)j(with)f(the)h(exception)g(of)g(`)p
+Fs(-p)p Ft(')630 3088 y(and)k(`)p Fs(-r)p Ft(',)i(and)e(write)h(the)g
+(matc)m(hes)h(to)g(the)f(standard)f(output.)48 b(When)33
+b(using)f(the)h(`)p Fs(-F)p Ft(')630 3197 y(or)28 b(`)p
+Fs(-C)p Ft(')g(options,)h(the)f(v)-5 b(arious)29 b(shell)f(v)-5
+b(ariables)29 b(set)f(b)m(y)g(the)g(programmable)h(completion)630
+3307 y(facilities,)k(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 3445 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 3554 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 3664 y(the)e(same)h(\015ags.)40 b(If)29 b Fq(w)m(ord)j
+Ft(is)d(sp)s(eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g
+Fq(w)m(ord)j Ft(will)630 3773 y(b)s(e)d(displa)m(y)m(ed.)630
+3911 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 4021 y(generated.)150 4187 y Fs(complete)870
 4325 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)11
 b Fs(])44 b([-A)j Fj(action)11 b Fs(])45 b([-G)i Fj(glob-)870
@@ -10178,2028 +11897,2037 @@ b Fs(])44 b([-A)j Fj(action)11 b Fs(])45 b([-G)i Fj(glob-)870
 b Fs(])45 b([-X)i Fj(filterpat)11 b Fs(])45 b([-F)i Fj(function)11
 b Fs(])870 4654 y([-C)47 b Fj(command)11 b Fs(])45 b
 Fj(name)57 b Fs([)p Fj(name)g Fs(...)o(])870 4764 y(complete)46
-b(-pr)g([)p Fj(name)57 b Fs(...])630 4902 y Ft(Sp)s(ecify)32
-b(ho)m(w)i(argumen)m(ts)h(to)f(eac)m(h)i Fq(name)j Ft(should)32
-b(b)s(e)h(completed.)52 b(If)33 b(the)i(`)p Fs(-p)p Ft(')e(option)630
-5011 y(is)c(supplied,)d(or)k(if)f(no)g(options)g(are)h(supplied,)d
+b(-pr)g([)p Fj(name)57 b Fs(...])630 4902 y Ft(Sp)s(ecify)33
+b(ho)m(w)h(argumen)m(ts)h(to)f(eac)m(h)i Fq(name)j Ft(should)33
+b(b)s(e)g(completed.)53 b(If)33 b(the)i(`)p Fs(-p)p Ft(')e(option)630
+5011 y(is)d(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
-5121 y(prin)m(ted)42 b(in)h(a)h(w)m(a)m(y)h(that)f(allo)m(ws)f(them)h
-(to)g(b)s(e)g(reused)f(as)h(input.)79 b(The)43 b(`)p
-Fs(-r)p Ft(')g(option)630 5230 y(remo)m(v)m(es)29 b(a)f(completion)f
-(sp)s(eci\014cation)f(for)i(eac)m(h)g Fq(name)p Ft(,)h(or,)f(if)f(no)g
-Fq(name)5 b Ft(s)28 b(are)g(supplied,)630 5340 y(all)h(completion)h(sp)
-s(eci\014cations.)p eop
+5121 y(prin)m(ted)43 b(in)h(a)g(w)m(a)m(y)h(that)f(allo)m(ws)h(them)f
+(to)g(b)s(e)g(reused)f(as)h(input.)80 b(The)43 b(`)p
+Fs(-r)p Ft(')g(option)630 5230 y(remo)m(v)m(es)29 b(a)f(completion)h
+(sp)s(eci\014cation)f(for)g(eac)m(h)g Fq(name)p Ft(,)h(or,)f(if)g(no)f
+Fq(name)5 b Ft(s)28 b(are)g(supplied,)630 5340 y(all)j(completion)h(sp)
+s(eci\014cations.)p eop end
 %%Page: 106 112
-106 111 bop 150 -116 a Ft(106)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-630 299 y(The)e(pro)s(cess)g(of)h(applying)e(these)i(completion)e(sp)s
-(eci\014cations)h(when)f(w)m(ord)i(completion)630 408
-y(is)k(attempted)i(is)e(describ)s(ed)f(ab)s(o)m(v)m(e)k(\(see)f
-(Section)f(8.6)h([Programmable)f(Completion],)630 518
-y(page)c(103\).)630 652 y(Other)41 b(options,)k(if)40
-b(sp)s(eci\014ed,)j(ha)m(v)m(e)g(the)f(follo)m(wing)f(meanings.)74
-b(The)41 b(argumen)m(ts)h(to)630 762 y(the)e(`)p Fs(-G)p
-Ft(',)j(`)p Fs(-W)p Ft(',)g(and)d(`)p Fs(-X)p Ft(')g(options)f(\(and,)k
-(if)c(necessary)-8 b(,)44 b(the)c(`)p Fs(-P)p Ft(')h(and)e(`)p
-Fs(-S)p Ft(')h(options\))630 872 y(should)29 b(b)s(e)i(quoted)g(to)h
-(protect)g(them)f(from)g(expansion)f(b)s(efore)h(the)g
-Fs(complete)e Ft(builtin)630 981 y(is)g(in)m(v)m(ok)m(ed.)630
-1140 y Fs(-o)h Fj(comp-option)1110 1250 y Ft(The)c Fq(comp-option)h
-Ft(con)m(trols)g(sev)m(eral)h(asp)s(ects)f(of)g(the)g(compsp)s(ec's)g
-(b)s(eha)m(v-)1110 1359 y(ior)f(b)s(ey)m(ond)g(the)g(simple)f
-(generation)i(of)f(completions.)39 b Fq(comp-option)26
-b Ft(ma)m(y)1110 1469 y(b)s(e)k(one)g(of:)1110 1628 y
-Fs(bashdefault)1590 1738 y Ft(P)m(erform)d(the)h(rest)f(of)h(the)g
-(default)e(Bash)i(completions)e(if)h(the)1590 1847 y(compsp)s(ec)j
-(generates)i(no)e(matc)m(hes.)1110 2006 y Fs(default)144
-b Ft(Use)22 b(Readline's)e(default)h(\014lename)g(completion)f(if)h
-(the)h(comp-)1590 2116 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110
-2275 y Fs(dirnames)96 b Ft(P)m(erform)46 b(directory)f(name)i
-(completion)e(if)g(the)h(compsp)s(ec)1590 2385 y(generates)32
+TeXDict begin 106 111 bop 150 -116 a Ft(106)2527 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y(The)e(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 408 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
+518 y(page)31 b(103\).)630 652 y(Other)41 b(options,)46
+b(if)41 b(sp)s(eci\014ed,)j(ha)m(v)m(e)f(the)f(follo)m(wing)i
+(meanings.)75 b(The)41 b(argumen)m(ts)h(to)630 762 y(the)e(`)p
+Fs(-G)p Ft(',)j(`)p Fs(-W)p Ft(',)g(and)d(`)p Fs(-X)p
+Ft(')g(options)g(\(and,)j(if)d(necessary)-8 b(,)44 b(the)c(`)p
+Fs(-P)p Ft(')h(and)e(`)p Fs(-S)p Ft(')h(options\))630
+872 y(should)30 b(b)s(e)h(quoted)g(to)h(protect)g(them)f(from)g
+(expansion)g(b)s(efore)g(the)g Fs(complete)e Ft(builtin)630
+981 y(is)h(in)m(v)m(ok)m(ed.)630 1140 y Fs(-o)g Fj(comp-option)1110
+1250 y Ft(The)c Fq(comp-option)i Ft(con)m(trols)g(sev)m(eral)h(asp)s
+(ects)e(of)g(the)g(compsp)s(ec's)g(b)s(eha)m(v-)1110
+1359 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h(generation)h(of)e
+(completions.)41 b Fq(comp-option)27 b Ft(ma)m(y)1110
+1469 y(b)s(e)j(one)g(of:)1110 1628 y Fs(bashdefault)1590
+1738 y Ft(P)m(erform)d(the)h(rest)f(of)h(the)g(default)f(Bash)h
+(completions)g(if)g(the)1590 1847 y(compsp)s(ec)i(generates)i(no)e
+(matc)m(hes.)1110 2006 y Fs(default)144 b Ft(Use)22 b(Readline's)g
+(default)g(\014lename)g(completion)g(if)g(the)g(comp-)1590
+2116 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110
+2275 y Fs(dirnames)96 b Ft(P)m(erform)46 b(directory)g(name)h
+(completion)g(if)f(the)g(compsp)s(ec)1590 2385 y(generates)32
 b(no)e(matc)m(hes.)1110 2544 y Fs(filenames)1590 2653
-y Ft(T)-8 b(ell)38 b(Readline)f(that)j(the)f(compsp)s(ec)f(generates)j
-(\014lenames,)1590 2763 y(so)29 b(it)g(can)g(p)s(erform)f(an)m(y)h
-(\014lename-sp)s(eci\014c)f(pro)s(cessing)f(\(lik)m(e)1590
-2872 y(adding)h(a)i(slash)e(to)i(directory)f(names)g(or)g(suppressing)e
-(trail-)1590 2982 y(ing)37 b(spaces\).)66 b(This)36 b(option)i(is)f(in)
-m(tended)g(to)i(b)s(e)f(used)f(with)1590 3092 y(shell)29
-b(functions)g(sp)s(eci\014ed)f(with)h(`)p Fs(-F)p Ft('.)1110
-3251 y Fs(nospace)144 b Ft(T)-8 b(ell)38 b(Readline)g(not)i(to)g(app)s
-(end)d(a)j(space)g(\(the)f(default\))g(to)1590 3360 y(w)m(ords)30
-b(completed)g(at)h(the)g(end)f(of)g(the)h(line.)630 3519
-y Fs(-A)f Fj(action)1110 3629 y Ft(The)25 b Fq(action)g
-Ft(ma)m(y)h(b)s(e)e(one)h(of)h(the)f(follo)m(wing)f(to)h(generate)i(a)e
-(list)f(of)h(p)s(ossible)1110 3739 y(completions:)1110
-3898 y Fs(alias)240 b Ft(Alias)29 b(names.)41 b(Ma)m(y)31
-b(also)g(b)s(e)f(sp)s(eci\014ed)e(as)j(`)p Fs(-a)p Ft('.)1110
-4057 y Fs(arrayvar)96 b Ft(Arra)m(y)31 b(v)-5 b(ariable)29
-b(names.)1110 4216 y Fs(binding)144 b Ft(Readline)28
-b(k)m(ey)h(binding)d(names)j(\(see)h(Section)e(8.4)i([Bindable)1590
-4325 y(Readline)f(Commands],)h(page)h(95\).)1110 4484
-y Fs(builtin)144 b Ft(Names)21 b(of)g(shell)d(builtin)g(commands.)37
-b(Ma)m(y)21 b(also)g(b)s(e)f(sp)s(eci\014ed)1590 4594
+y Ft(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j
+(\014lenames,)1590 2763 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h
+(\014lename-sp)s(eci\014c)h(pro)s(cessing)e(\(lik)m(e)1590
+2872 y(adding)h(a)h(slash)f(to)h(directory)g(names)f(or)g(suppressing)f
+(trail-)1590 2982 y(ing)38 b(spaces\).)66 b(This)37 b(option)i(is)f(in)
+m(tended)g(to)h(b)s(e)f(used)f(with)1590 3092 y(shell)31
+b(functions)f(sp)s(eci\014ed)f(with)h(`)p Fs(-F)p Ft('.)1110
+3251 y Fs(nospace)144 b Ft(T)-8 b(ell)40 b(Readline)g(not)g(to)g(app)s
+(end)d(a)j(space)g(\(the)f(default\))h(to)1590 3360 y(w)m(ords)30
+b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)630 3519
+y Fs(-A)f Fj(action)1110 3629 y Ft(The)25 b Fq(action)h
+Ft(ma)m(y)g(b)s(e)e(one)h(of)h(the)f(follo)m(wing)i(to)e(generate)i(a)e
+(list)h(of)f(p)s(ossible)1110 3739 y(completions:)1110
+3898 y Fs(alias)240 b Ft(Alias)31 b(names.)41 b(Ma)m(y)31
+b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i(`)p Fs(-a)p Ft('.)1110
+4057 y Fs(arrayvar)96 b Ft(Arra)m(y)31 b(v)-5 b(ariable)31
+b(names.)1110 4216 y Fs(binding)144 b Ft(Readline)30
+b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h([Bindable)1590
+4325 y(Readline)h(Commands],)f(page)h(95\).)1110 4484
+y Fs(builtin)144 b Ft(Names)21 b(of)g(shell)f(builtin)h(commands.)37
+b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 4594
 y(as)31 b(`)p Fs(-b)p Ft('.)1110 4753 y Fs(command)144
-b Ft(Command)29 b(names.)41 b(Ma)m(y)32 b(also)e(b)s(e)g(sp)s
-(eci\014ed)e(as)j(`)p Fs(-c)p Ft('.)1110 4912 y Fs(directory)1590
-5022 y Ft(Directory)g(names.)40 b(Ma)m(y)32 b(also)e(b)s(e)g(sp)s
-(eci\014ed)f(as)h(`)p Fs(-d)p Ft('.)1110 5181 y Fs(disabled)96
-b Ft(Names)31 b(of)g(disabled)d(shell)g(builtins.)1110
-5340 y Fs(enabled)144 b Ft(Names)31 b(of)g(enabled)e(shell)f(builtins.)
-p eop
+b Ft(Command)29 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s
+(eci\014ed)f(as)i(`)p Fs(-c)p Ft('.)1110 4912 y Fs(directory)1590
+5022 y Ft(Directory)h(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s
+(eci\014ed)g(as)g(`)p Fs(-d)p Ft('.)1110 5181 y Fs(disabled)96
+b Ft(Names)31 b(of)g(disabled)f(shell)g(builtins.)1110
+5340 y Fs(enabled)144 b Ft(Names)31 b(of)g(enabled)f(shell)g(builtins.)
+p eop end
 %%Page: 107 113
-107 112 bop 150 -116 a Ft(Chapter)30 b(8:)41 b(Command)29
-b(Line)h(Editing)2060 b(107)1110 299 y Fs(export)192
-b Ft(Names)34 b(of)f(exp)s(orted)f(shell)f(v)-5 b(ariables.)47
-b(Ma)m(y)35 b(also)d(b)s(e)h(sp)s(eci-)1590 408 y(\014ed)d(as)g(`)p
-Fs(-e)p Ft('.)1110 558 y Fs(file)288 b Ft(File)30 b(names.)40
-b(Ma)m(y)32 b(also)e(b)s(e)g(sp)s(eci\014ed)e(as)j(`)p
+TeXDict begin 107 112 bop 150 -116 a Ft(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(107)1110 299 y Fs(export)192
+b Ft(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5 b(ariables.)49
+b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590 408 y(\014ed)d(as)g(`)p
+Fs(-e)p Ft('.)1110 558 y Fs(file)288 b Ft(File)32 b(names.)40
+b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i(`)p
 Fs(-f)p Ft('.)1110 708 y Fs(function)96 b Ft(Names)31
-b(of)g(shell)d(functions.)1110 858 y Fs(group)240 b Ft(Group)30
-b(names.)40 b(Ma)m(y)32 b(also)e(b)s(e)g(sp)s(eci\014ed)f(as)h(`)p
-Fs(-g)p Ft('.)1110 1008 y Fs(helptopic)1590 1118 y Ft(Help)36
-b(topics)g(as)h(accepted)h(b)m(y)e(the)h Fs(help)f Ft(builtin)d(\(see)k
-(Sec-)1590 1228 y(tion)30 b(4.2)h([Bash)g(Builtins],)d(page)j(39\).)
+b(of)g(shell)f(functions.)1110 858 y Fs(group)240 b Ft(Group)30
+b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g(`)p
+Fs(-g)p Ft('.)1110 1008 y Fs(helptopic)1590 1118 y Ft(Help)37
+b(topics)g(as)g(accepted)h(b)m(y)e(the)h Fs(help)f Ft(builtin)g(\(see)h
+(Sec-)1590 1228 y(tion)31 b(4.2)g([Bash)g(Builtins],)g(page)g(39\).)
 1110 1377 y Fs(hostname)96 b Ft(Hostnames,)89 b(as)76
-b(tak)m(en)h(from)f(the)g(\014le)g(sp)s(eci\014ed)e(b)m(y)1590
-1487 y(the)55 b Fs(HOSTFILE)e Ft(shell)h(v)-5 b(ariable)54
-b(\(see)i(Section)f(5.2)i([Bash)1590 1597 y(V)-8 b(ariables],)30
-b(page)h(55\).)1110 1747 y Fs(job)336 b Ft(Job)31 b(names,)h(if)f(job)g
-(con)m(trol)h(is)f(activ)m(e.)45 b(Ma)m(y)33 b(also)f(b)s(e)f(sp)s
+b(tak)m(en)h(from)f(the)g(\014le)h(sp)s(eci\014ed)e(b)m(y)1590
+1487 y(the)55 b Fs(HOSTFILE)e Ft(shell)j(v)-5 b(ariable)56
+b(\(see)g(Section)g(5.2)h([Bash)1590 1597 y(V)-8 b(ariables],)32
+b(page)f(55\).)1110 1747 y Fs(job)336 b Ft(Job)31 b(names,)h(if)g(job)f
+(con)m(trol)i(is)f(activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s
 (eci-)1590 1856 y(\014ed)f(as)g(`)p Fs(-j)p Ft('.)1110
-2006 y Fs(keyword)144 b Ft(Shell)28 b(reserv)m(ed)j(w)m(ords.)40
-b(Ma)m(y)32 b(also)e(b)s(e)g(sp)s(eci\014ed)e(as)j(`)p
+2006 y Fs(keyword)144 b Ft(Shell)30 b(reserv)m(ed)h(w)m(ords.)40
+b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i(`)p
 Fs(-k)p Ft('.)1110 2156 y Fs(running)144 b Ft(Names)31
-b(of)g(running)c(jobs,)j(if)g(job)g(con)m(trol)g(is)g(activ)m(e.)1110
-2306 y Fs(service)144 b Ft(Service)30 b(names.)41 b(Ma)m(y)31
-b(also)f(b)s(e)g(sp)s(eci\014ed)f(as)h(`)p Fs(-s)p Ft('.)1110
-2456 y Fs(setopt)192 b Ft(V)-8 b(alid)32 b(argumen)m(ts)h(for)f(the)h
-(`)p Fs(-o)p Ft(')g(option)f(to)i(the)f Fs(set)e Ft(builtin)1590
-2566 y(\(see)g(Section)g(4.3)g([The)f(Set)h(Builtin],)d(page)j(50\).)
-1110 2716 y Fs(shopt)240 b Ft(Shell)38 b(option)h(names)h(as)g
+b(of)g(running)d(jobs,)i(if)h(job)f(con)m(trol)h(is)g(activ)m(e.)1110
+2306 y Fs(service)144 b Ft(Service)31 b(names.)41 b(Ma)m(y)31
+b(also)g(b)s(e)f(sp)s(eci\014ed)g(as)g(`)p Fs(-s)p Ft('.)1110
+2456 y Fs(setopt)192 b Ft(V)-8 b(alid)34 b(argumen)m(ts)f(for)f(the)h
+(`)p Fs(-o)p Ft(')g(option)g(to)h(the)f Fs(set)e Ft(builtin)1590
+2566 y(\(see)g(Section)h(4.3)f([The)f(Set)h(Builtin],)g(page)g(50\).)
+1110 2716 y Fs(shopt)240 b Ft(Shell)40 b(option)g(names)g(as)g
 (accepted)i(b)m(y)e(the)g Fs(shopt)e Ft(builtin)1590
-2825 y(\(see)31 b(Section)g(4.2)g([Bash)g(Builtins],)d(page)j(39\).)
-1110 2975 y Fs(signal)192 b Ft(Signal)29 b(names.)1110
-3125 y Fs(stopped)144 b Ft(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)f
-(job)h(con)m(trol)h(is)f(activ)m(e.)1110 3275 y Fs(user)288
-b Ft(User)30 b(names.)41 b(Ma)m(y)32 b(also)e(b)s(e)g(sp)s(eci\014ed)e
-(as)j(`)p Fs(-u)p Ft('.)1110 3425 y Fs(variable)96 b
-Ft(Names)36 b(of)g(all)e(shell)g(v)-5 b(ariables.)54
-b(Ma)m(y)37 b(also)e(b)s(e)g(sp)s(eci\014ed)f(as)1590
-3535 y(`)p Fs(-v)p Ft('.)630 3685 y Fs(-G)c Fj(globpat)1110
-3794 y Ft(The)39 b(\014lename)g(expansion)g(pattern)h
-Fq(globpat)i Ft(is)d(expanded)g(to)h(generate)1110 3904
-y(the)31 b(p)s(ossible)c(completions.)630 4054 y Fs(-W)j
-Fj(wordlist)1110 4163 y Ft(The)24 b Fq(w)m(ordlist)i
-Ft(is)e(split)f(using)g(the)i(c)m(haracters)i(in)c(the)j
-Fs(IFS)e Ft(sp)s(ecial)f(v)-5 b(ariable)1110 4273 y(as)36
-b(delimiters,)f(and)h(eac)m(h)h(resultan)m(t)f(w)m(ord)f(is)g
-(expanded.)57 b(The)35 b(p)s(ossible)1110 4383 y(completions)29
-b(are)g(the)h(mem)m(b)s(ers)f(of)g(the)h(resultan)m(t)f(list)f(whic)m
-(h)g(matc)m(h)j(the)1110 4492 y(w)m(ord)f(b)s(eing)f(completed.)630
-4642 y Fs(-C)h Fj(command)1110 4752 y Fq(command)35 b
-Ft(is)d(executed)h(in)d(a)j(subshell)c(en)m(vironmen)m(t,)j(and)g(its)f
-(output)h(is)1110 4861 y(used)e(as)g(the)h(p)s(ossible)d(completions.)
-630 5011 y Fs(-F)i Fj(function)1110 5121 y Ft(The)25
-b(shell)g(function)f Fq(function)h Ft(is)g(executed)i(in)d(the)j
-(curren)m(t)e(shell)g(en)m(viron-)1110 5230 y(men)m(t.)40
-b(When)25 b(it)g(\014nishes,)f(the)i(p)s(ossible)d(completions)h(are)i
-(retriev)m(ed)f(from)1110 5340 y(the)31 b(v)-5 b(alue)29
-b(of)i(the)g Fs(COMPREPLY)c Ft(arra)m(y)k(v)-5 b(ariable.)p
-eop
+2825 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(39\).)
+1110 2975 y Fs(signal)192 b Ft(Signal)31 b(names.)1110
+3125 y Fs(stopped)144 b Ft(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g
+(job)g(con)m(trol)i(is)f(activ)m(e.)1110 3275 y Fs(user)288
+b Ft(User)30 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f
+(as)i(`)p Fs(-u)p Ft('.)1110 3425 y Fs(variable)96 b
+Ft(Names)36 b(of)g(all)g(shell)g(v)-5 b(ariables.)56
+b(Ma)m(y)37 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590
+3535 y(`)p Fs(-v)p Ft('.)630 3685 y Fs(-G)30 b Fj(globpat)1110
+3794 y Ft(The)39 b(\014lename)h(expansion)g(pattern)g
+Fq(globpat)j Ft(is)d(expanded)f(to)h(generate)1110 3904
+y(the)31 b(p)s(ossible)e(completions.)630 4054 y Fs(-W)h
+Fj(wordlist)1110 4163 y Ft(The)24 b Fq(w)m(ordlist)k
+Ft(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i
+Fs(IFS)e Ft(sp)s(ecial)h(v)-5 b(ariable)1110 4273 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 4383 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 4492 y(w)m(ord)f(b)s(eing)g(completed.)630
+4642 y Fs(-C)g Fj(command)1110 4752 y Fq(command)35 b
+Ft(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen)m(t,)i(and)f(its)g
+(output)g(is)1110 4861 y(used)e(as)g(the)h(p)s(ossible)f(completions.)
+630 5011 y Fs(-F)g Fj(function)1110 5121 y Ft(The)25
+b(shell)i(function)e Fq(function)h Ft(is)g(executed)h(in)e(the)i
+(curren)m(t)e(shell)i(en)m(viron-)1110 5230 y(men)m(t.)40
+b(When)25 b(it)h(\014nishes,)f(the)h(p)s(ossible)f(completions)h(are)g
+(retriev)m(ed)g(from)1110 5340 y(the)31 b(v)-5 b(alue)30
+b(of)h(the)g Fs(COMPREPLY)c Ft(arra)m(y)k(v)-5 b(ariable.)p
+eop end
 %%Page: 108 114
-108 113 bop 150 -116 a Ft(108)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-630 299 y Fs(-X)f Fj(filterpat)1110 408 y Fq(\014lterpat)c
-Ft(is)e(a)h(pattern)g(as)f(used)g(for)h(\014lename)f(expansion.)37
-b(It)25 b(is)f(applied)e(to)1110 518 y(the)30 b(list)d(of)j(p)s
-(ossible)d(completions)h(generated)j(b)m(y)e(the)g(preceding)g(options)
-1110 628 y(and)e(argumen)m(ts,)i(and)e(eac)m(h)i(completion)e(matc)m
-(hing)h Fq(\014lterpat)h Ft(is)e(remo)m(v)m(ed)1110 737
-y(from)j(the)h(list.)40 b(A)30 b(leading)g(`)p Fs(!)p
-Ft(')g(in)f Fq(\014lterpat)j Ft(negates)g(the)f(pattern;)g(in)e(this)
-1110 847 y(case,)j(an)m(y)e(completion)g(not)h(matc)m(hing)f
-Fq(\014lterpat)i Ft(is)d(remo)m(v)m(ed.)630 1006 y Fs(-P)h
-Fj(prefix)1110 1116 y Fq(pre\014x)39 b Ft(is)33 b(added)g(at)i(the)f(b)
-s(eginning)d(of)k(eac)m(h)g(p)s(ossible)c(completion)i(after)1110
-1225 y(all)c(other)i(options)f(ha)m(v)m(e)h(b)s(een)f(applied.)630
-1385 y Fs(-S)g Fj(suffix)1110 1494 y Fq(su\016x)c Ft(is)19
-b(app)s(ended)g(to)i(eac)m(h)h(p)s(ossible)c(completion)i(after)h(all)e
-(other)i(options)1110 1604 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630
-1763 y(The)35 b(return)g(v)-5 b(alue)36 b(is)f(true)g(unless)g(an)g(in)
-m(v)-5 b(alid)34 b(option)h(is)g(supplied,)f(an)i(option)g(other)630
+TeXDict begin 108 113 bop 150 -116 a Ft(108)2527 b(Bash)31
+b(Reference)g(Man)m(ual)630 299 y Fs(-X)f Fj(filterpat)1110
+408 y Fq(\014lterpat)d Ft(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
+518 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 628 y(and)d(argumen)m(ts,)i(and)e
+(eac)m(h)i(completion)g(matc)m(hing)g Fq(\014lterpat)h
+Ft(is)e(remo)m(v)m(ed)1110 737 y(from)i(the)h(list.)42
+b(A)30 b(leading)i(`)p Fs(!)p Ft(')e(in)g Fq(\014lterpat)j
+Ft(negates)f(the)f(pattern;)g(in)f(this)1110 847 y(case,)i(an)m(y)e
+(completion)i(not)f(matc)m(hing)g Fq(\014lterpat)i Ft(is)d(remo)m(v)m
+(ed.)630 1006 y Fs(-P)g Fj(prefix)1110 1116 y Fq(pre\014x)39
+b Ft(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 1225 y(all)c(other)g(options)g(ha)m
+(v)m(e)g(b)s(een)f(applied.)630 1385 y Fs(-S)g Fj(suffix)1110
+1494 y Fq(su\016x)c Ft(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
+1604 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 1763 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
 1873 y(than)31 b(`)p Fs(-p)p Ft(')g(or)g(`)p Fs(-r)p
-Ft(')g(is)f(supplied)e(without)i(a)h Fq(name)37 b Ft(argumen)m(t,)32
-b(an)f(attempt)h(is)e(made)h(to)630 1983 y(remo)m(v)m(e)h(a)e
-(completion)g(sp)s(eci\014cation)f(for)h(a)h Fq(name)k
-Ft(for)30 b(whic)m(h)f(no)h(sp)s(eci\014cation)f(exists,)630
-2092 y(or)h(an)h(error)f(o)s(ccurs)g(adding)f(a)h(completion)g(sp)s
-(eci\014cation.)p eop
+Ft(')g(is)g(supplied)f(without)h(a)g Fq(name)37 b Ft(argumen)m(t,)32
+b(an)f(attempt)h(is)f(made)g(to)630 1983 y(remo)m(v)m(e)h(a)e
+(completion)i(sp)s(eci\014cation)f(for)f(a)h Fq(name)k
+Ft(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,)630
+2092 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s
+(eci\014cation.)p eop end
 %%Page: 109 115
-109 114 bop 150 -116 a Ft(Chapter)30 b(9:)41 b(Using)29
-b(History)h(In)m(teractiv)m(ely)1923 b(109)150 299 y
-Fo(9)80 b(Using)54 b(History)g(In)l(teractiv)l(ely)275
-562 y Ft(This)31 b(c)m(hapter)j(describ)s(es)d(ho)m(w)i(to)h(use)f(the)
-g Fl(gnu)g Ft(History)g(Library)e(in)m(teractiv)m(ely)-8
-b(,)34 b(from)f(a)h(user's)150 671 y(standp)s(oin)m(t.)75
-b(It)42 b(should)e(b)s(e)i(considered)f(a)h(user's)g(guide.)75
-b(F)-8 b(or)43 b(information)d(on)i(using)f(the)h Fl(gnu)150
-781 y Ft(History)30 b(Library)f(in)g(other)h(programs,)g(see)h(the)g
-Fl(gnu)f Ft(Readline)f(Library)g(Man)m(ual.)150 1062
+TeXDict begin 109 114 bop 150 -116 a Ft(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(109)150
+299 y Fo(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)275
+562 y Ft(This)32 b(c)m(hapter)i(describ)s(es)e(ho)m(w)h(to)h(use)f(the)
+g Fl(gnu)g Ft(History)h(Library)e(in)m(teractiv)m(ely)-8
+b(,)37 b(from)c(a)h(user's)150 671 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 Fl(gnu)150
+781 y Ft(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g
+Fl(gnu)f Ft(Readline)h(Library)f(Man)m(ual.)150 1062
 y Fr(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)275
-1316 y Ft(When)36 b(the)h(`)p Fs(-o)30 b(history)p Ft(')k(option)i(to)i
-(the)e Fs(set)g Ft(builtin)d(is)j(enabled)f(\(see)j(Section)e(4.3)h
-([The)g(Set)150 1425 y(Builtin],)29 b(page)j(50\),)h(the)e(shell)f(pro)
-m(vides)g(access)i(to)g(the)f Fq(command)g(history)p
-Ft(,)g(the)g(list)f(of)h(commands)150 1535 y(previously)f(t)m(yp)s(ed.)
-47 b(The)33 b(v)-5 b(alue)32 b(of)g(the)h Fs(HISTSIZE)e
-Ft(shell)f(v)-5 b(ariable)32 b(is)g(used)f(as)i(the)g(n)m(um)m(b)s(er)e
-(of)i(com-)150 1644 y(mands)i(to)i(sa)m(v)m(e)h(in)d(a)h(history)g
-(list.)56 b(The)36 b(text)h(of)g(the)f(last)g Fs($HISTSIZE)e
-Ft(commands)i(\(default)f(500\))150 1754 y(is)h(sa)m(v)m(ed.)61
-b(The)36 b(shell)f(stores)j(eac)m(h)g(command)e(in)g(the)h(history)f
-(list)f(prior)g(to)j(parameter)f(and)f(v)-5 b(ari-)150
-1864 y(able)32 b(expansion)g(but)g(after)h(history)e(expansion)h(is)g
-(p)s(erformed,)f(sub)5 b(ject)33 b(to)g(the)g(v)-5 b(alues)32
-b(of)h(the)g(shell)150 1973 y(v)-5 b(ariables)29 b Fs(HISTIGNORE)f
-Ft(and)h Fs(HISTCONTROL)p Ft(.)275 2117 y(When)g(the)g(shell)f(starts)i
-(up,)f(the)h(history)e(is)h(initialized)d(from)j(the)h(\014le)e(named)h
-(b)m(y)h(the)f Fs(HISTFILE)150 2227 y Ft(v)-5 b(ariable)19
-b(\(default)i(`)p Fs(~/.bash_history)p Ft('\).)34 b(The)20
-b(\014le)g(named)g(b)m(y)h(the)g(v)-5 b(alue)20 b(of)h
-Fs(HISTFILE)d Ft(is)i(truncated,)150 2336 y(if)41 b(necessary)-8
-b(,)45 b(to)e(con)m(tain)f(no)g(more)g(than)f(the)h(n)m(um)m(b)s(er)f
-(of)h(lines)e(sp)s(eci\014ed)g(b)m(y)i(the)g(v)-5 b(alue)41
-b(of)h(the)150 2446 y Fs(HISTFILESIZE)21 b Ft(v)-5 b(ariable.)38
-b(When)24 b(an)g(in)m(teractiv)m(e)h(shell)e(exits,)i(the)g(last)f
-Fs($HISTSIZE)e Ft(lines)h(are)h(copied)150 2556 y(from)29
-b(the)i(history)d(list)h(to)i(the)f(\014le)f(named)g(b)m(y)h
+1316 y Ft(When)36 b(the)h(`)p Fs(-o)30 b(history)p Ft(')k(option)j(to)h
+(the)e Fs(set)g Ft(builtin)g(is)h(enabled)f(\(see)i(Section)f(4.3)g
+([The)g(Set)150 1425 y(Builtin],)32 b(page)g(50\),)h(the)e(shell)h(pro)
+m(vides)f(access)h(to)g(the)f Fq(command)g(history)p
+Ft(,)h(the)f(list)h(of)f(commands)150 1535 y(previously)h(t)m(yp)s(ed.)
+47 b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Fs(HISTSIZE)e
+Ft(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 1644 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 Fs($HISTSIZE)d
+Ft(commands)i(\(default)g(500\))150 1754 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
+1864 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 1973 y(v)-5 b(ariables)31 b Fs(HISTIGNORE)d
+Ft(and)h Fs(HISTCONTROL)p Ft(.)275 2117 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 Fs(HISTFILE)150 2227 y Ft(v)-5 b(ariable)21
+b(\(default)h(`)p Fs(~/.bash_history)p Ft('\).)34 b(The)20
+b(\014le)h(named)f(b)m(y)h(the)g(v)-5 b(alue)21 b(of)g
+Fs(HISTFILE)d Ft(is)j(truncated,)150 2336 y(if)42 b(necessary)-8
+b(,)45 b(to)e(con)m(tain)g(no)f(more)g(than)f(the)h(n)m(um)m(b)s(er)f
+(of)h(lines)g(sp)s(eci\014ed)f(b)m(y)h(the)g(v)-5 b(alue)42
+b(of)g(the)150 2446 y Fs(HISTFILESIZE)21 b Ft(v)-5 b(ariable.)40
+b(When)24 b(an)g(in)m(teractiv)m(e)j(shell)e(exits,)h(the)f(last)g
+Fs($HISTSIZE)d Ft(lines)j(are)f(copied)150 2556 y(from)29
+b(the)i(history)e(list)i(to)g(the)f(\014le)g(named)f(b)m(y)h
 Fs($HISTFILE)p Ft(.)38 b(If)30 b(the)g Fs(histappend)d
-Ft(shell)h(option)h(is)g(set)150 2665 y(\(see)22 b(Section)f(4.2)h
-([Bash)g(Builtins],)e(page)i(39\),)j(the)c(lines)e(are)j(app)s(ended)d
-(to)j(the)f(history)f(\014le,)j(otherwise)150 2775 y(the)32
-b(history)e(\014le)g(is)h(o)m(v)m(erwritten.)44 b(If)31
-b Fs(HISTFILE)e Ft(is)i(unset,)g(or)h(if)e(the)i(history)e(\014le)g(is)
-h(un)m(writable,)f(the)150 2884 y(history)36 b(is)h(not)g(sa)m(v)m(ed.)
-63 b(After)38 b(sa)m(ving)f(the)g(history)-8 b(,)39 b(the)f(history)e
-(\014le)g(is)h(truncated)g(to)h(con)m(tain)g(no)150 2994
-y(more)31 b(than)f Fs($HISTFILESIZE)c Ft(lines.)39 b(If)30
-b Fs(HISTFILESIZE)d Ft(is)j(not)g(set,)h(no)g(truncation)e(is)h(p)s
-(erformed.)275 3138 y(If)h(the)h Fs(HISTTIMEFORMAT)d
-Ft(is)i(set,)i(the)f(time)g(stamp)g(information)e(asso)s(ciated)j(with)
-e(eac)m(h)i(history)150 3247 y(en)m(try)e(is)e(written)g(to)j(the)e
-(history)f(\014le.)275 3392 y(The)19 b(builtin)e(command)j
-Fs(fc)g Ft(ma)m(y)h(b)s(e)f(used)f(to)i(list)e(or)i(edit)f(and)f
-(re-execute)j(a)f(p)s(ortion)e(of)h(the)h(history)150
-3501 y(list.)39 b(The)27 b Fs(history)f Ft(builtin)f(ma)m(y)k(b)s(e)e
-(used)g(to)i(displa)m(y)e(or)h(mo)s(dify)e(the)i(history)f(list)g(and)h
-(manipulate)150 3611 y(the)j(history)f(\014le.)41 b(When)31
-b(using)e(command-line)g(editing,)h(searc)m(h)h(commands)g(are)g(a)m(v)
--5 b(ailable)30 b(in)g(eac)m(h)150 3720 y(editing)43
-b(mo)s(de)i(that)g(pro)m(vide)f(access)i(to)f(the)g(history)e(list)h
-(\(see)h(Section)g(8.4.2)h([Commands)e(F)-8 b(or)150
-3830 y(History],)30 b(page)i(95\).)275 3974 y(The)47
-b(shell)g(allo)m(ws)h(con)m(trol)g(o)m(v)m(er)i(whic)m(h)d(commands)h
-(are)h(sa)m(v)m(ed)g(on)f(the)h(history)e(list.)93 b(The)150
+Ft(shell)j(option)g(is)g(set)150 2665 y(\(see)22 b(Section)g(4.2)g
+([Bash)g(Builtins],)h(page)f(39\),)j(the)c(lines)g(are)h(app)s(ended)d
+(to)j(the)f(history)g(\014le,)j(otherwise)150 2775 y(the)32
+b(history)f(\014le)g(is)h(o)m(v)m(erwritten.)45 b(If)31
+b Fs(HISTFILE)e Ft(is)j(unset,)f(or)h(if)f(the)h(history)f(\014le)g(is)
+h(un)m(writable,)g(the)150 2884 y(history)37 b(is)h(not)f(sa)m(v)m(ed.)
+63 b(After)38 b(sa)m(ving)g(the)f(history)-8 b(,)40 b(the)e(history)f
+(\014le)g(is)h(truncated)f(to)h(con)m(tain)h(no)150 2994
+y(more)31 b(than)f Fs($HISTFILESIZE)c Ft(lines.)41 b(If)30
+b Fs(HISTFILESIZE)d Ft(is)k(not)f(set,)h(no)g(truncation)f(is)h(p)s
+(erformed.)275 3138 y(If)g(the)h Fs(HISTTIMEFORMAT)d
+Ft(is)j(set,)h(the)f(time)h(stamp)f(information)g(asso)s(ciated)i(with)
+e(eac)m(h)h(history)150 3247 y(en)m(try)e(is)f(written)g(to)i(the)e
+(history)g(\014le.)275 3392 y(The)19 b(builtin)h(command)g
+Fs(fc)g Ft(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
+3501 y(list.)41 b(The)27 b Fs(history)f Ft(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 3611 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 3720 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
+3830 y(History],)31 b(page)h(95\).)275 3974 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
 4084 y Fs(HISTCONTROL)25 b Ft(and)j Fs(HISTIGNORE)e Ft(v)-5
-b(ariables)27 b(ma)m(y)j(b)s(e)d(set)j(to)f(cause)g(the)g(shell)d(to)k
-(sa)m(v)m(e)g(only)e(a)h(subset)150 4193 y(of)e(the)g(commands)f(en)m
-(tered.)40 b(The)26 b Fs(cmdhist)f Ft(shell)g(option,)i(if)f(enabled,)g
-(causes)i(the)e(shell)f(to)j(attempt)150 4303 y(to)23
-b(sa)m(v)m(e)h(eac)m(h)f(line)e(of)h(a)h(m)m(ulti-line)c(command)j(in)f
-(the)i(same)f(history)f(en)m(try)-8 b(,)25 b(adding)c(semicolons)g
-(where)150 4412 y(necessary)37 b(to)f(preserv)m(e)h(syn)m(tactic)g
-(correctness.)58 b(The)36 b Fs(lithist)e Ft(shell)g(option)i(causes)h
-(the)f(shell)e(to)150 4522 y(sa)m(v)m(e)25 b(the)e(command)h(with)e(em)
-m(b)s(edded)g(newlines)f(instead)i(of)g(semicolons.)38
-b(The)23 b Fs(shopt)e Ft(builtin)f(is)j(used)150 4631
-y(to)31 b(set)g(these)g(options.)40 b(See)31 b(Section)f(4.2)h([Bash)g
-(Builtins],)d(page)j(39,)h(for)e(a)h(description)d(of)j
+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 4193 y(of)e(the)g(commands)f(en)m
+(tered.)40 b(The)26 b Fs(cmdhist)f Ft(shell)i(option,)h(if)f(enabled,)g
+(causes)h(the)e(shell)h(to)h(attempt)150 4303 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 4412 y(necessary)37 b(to)f(preserv)m(e)h(syn)m(tactic)h
+(correctness.)58 b(The)36 b Fs(lithist)e Ft(shell)i(option)h(causes)g
+(the)f(shell)g(to)150 4522 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 Fs(shopt)e Ft(builtin)i(is)h(used)150 4631
+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(39,)h(for)e(a)h(description)f(of)h
 Fs(shopt)p Ft(.)150 4913 y Fr(9.2)68 b(Bash)45 b(History)h(Builtins)275
-5166 y Ft(Bash)30 b(pro)m(vides)f(t)m(w)m(o)j(builtin)27
-b(commands)j(whic)m(h)f(manipulate)g(the)h(history)g(list)f(and)h
-(history)f(\014le.)150 5340 y Fs(fc)p eop
+5166 y Ft(Bash)30 b(pro)m(vides)g(t)m(w)m(o)i(builtin)e(commands)g
+(whic)m(h)g(manipulate)h(the)f(history)h(list)g(and)f(history)g
+(\014le.)150 5340 y Fs(fc)p eop end
 %%Page: 110 116
-110 115 bop 150 -116 a Ft(110)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-870 299 y Fs(fc)47 b([-e)g Fj(ename)11 b Fs(])46 b([-nlr])g([)p
-Fj(first)11 b Fs(])45 b([)p Fj(last)11 b Fs(])870 408
-y(fc)47 b(-s)g([)p Fj(pat)11 b Fs(=)p Fj(rep)g Fs(])45
-b([)p Fj(command)11 b Fs(])630 539 y Ft(Fix)40 b(Command.)68
-b(In)39 b(the)i(\014rst)e(form,)j(a)e(range)h(of)f(commands)g(from)f
-Fq(\014rst)i Ft(to)g Fq(last)h Ft(is)630 648 y(selected)34
-b(from)f(the)g(history)f(list.)48 b(Both)34 b Fq(\014rst)h
-Ft(and)e Fq(last)i Ft(ma)m(y)f(b)s(e)e(sp)s(eci\014ed)g(as)h(a)h
-(string)630 758 y(\(to)26 b(lo)s(cate)g(the)f(most)h(recen)m(t)g
-(command)e(b)s(eginning)f(with)h(that)h(string\))g(or)g(as)g(a)g(n)m
-(um)m(b)s(er)630 867 y(\(an)f(index)e(in)m(to)h(the)h(history)f(list,)g
-(where)g(a)h(negativ)m(e)h(n)m(um)m(b)s(er)d(is)h(used)g(as)g(an)h
-(o\013set)g(from)630 977 y(the)j(curren)m(t)f(command)h(n)m(um)m(b)s
-(er\).)39 b(If)26 b Fq(last)i Ft(is)e(not)h(sp)s(eci\014ed)e(it)h(is)g
-(set)h(to)h Fq(\014rst)p Ft(.)39 b(If)26 b Fq(\014rst)i
-Ft(is)630 1087 y(not)j(sp)s(eci\014ed)e(it)h(is)g(set)i(to)f(the)g
-(previous)e(command)i(for)f(editing)g(and)g Fp(\000)p
-Ft(16)h(for)g(listing.)630 1196 y(If)f(the)g(`)p Fs(-l)p
-Ft(')g(\015ag)h(is)e(giv)m(en,)h(the)h(commands)e(are)i(listed)e(on)h
-(standard)f(output.)40 b(The)30 b(`)p Fs(-n)p Ft(')630
+TeXDict begin 110 115 bop 150 -116 a Ft(110)2527 b(Bash)31
+b(Reference)g(Man)m(ual)870 299 y Fs(fc)47 b([-e)g Fj(ename)11
+b Fs(])46 b([-nlr])g([)p Fj(first)11 b Fs(])45 b([)p
+Fj(last)11 b Fs(])870 408 y(fc)47 b(-s)g([)p Fj(pat)11
+b Fs(=)p Fj(rep)g Fs(])45 b([)p Fj(command)11 b Fs(])630
+539 y Ft(Fix)41 b(Command.)68 b(In)39 b(the)i(\014rst)e(form,)j(a)e
+(range)h(of)f(commands)g(from)f Fq(\014rst)i Ft(to)g
+Fq(last)i Ft(is)630 648 y(selected)35 b(from)e(the)g(history)g(list.)50
+b(Both)34 b Fq(\014rst)h Ft(and)e Fq(last)j Ft(ma)m(y)e(b)s(e)e(sp)s
+(eci\014ed)h(as)g(a)h(string)630 758 y(\(to)26 b(lo)s(cate)h(the)e
+(most)h(recen)m(t)g(command)e(b)s(eginning)h(with)g(that)g(string\))h
+(or)f(as)g(a)g(n)m(um)m(b)s(er)630 867 y(\(an)f(index)f(in)m(to)h(the)g
+(history)g(list,)h(where)e(a)h(negativ)m(e)i(n)m(um)m(b)s(er)c(is)i
+(used)f(as)g(an)h(o\013set)g(from)630 977 y(the)j(curren)m(t)f(command)
+h(n)m(um)m(b)s(er\).)39 b(If)26 b Fq(last)j Ft(is)e(not)g(sp)s
+(eci\014ed)f(it)h(is)g(set)g(to)h Fq(\014rst)p Ft(.)39
+b(If)26 b Fq(\014rst)i Ft(is)630 1087 y(not)j(sp)s(eci\014ed)f(it)h(is)
+g(set)h(to)f(the)g(previous)f(command)h(for)f(editing)i(and)e
+Fp(\000)p Ft(16)h(for)g(listing.)630 1196 y(If)f(the)g(`)p
+Fs(-l)p Ft(')g(\015ag)h(is)f(giv)m(en,)h(the)g(commands)e(are)i(listed)
+g(on)f(standard)f(output.)40 b(The)30 b(`)p Fs(-n)p Ft(')630
 1306 y(\015ag)i(suppresses)f(the)h(command)g(n)m(um)m(b)s(ers)e(when)i
-(listing.)43 b(The)32 b(`)p Fs(-r)p Ft(')g(\015ag)g(rev)m(erses)h(the)
-630 1415 y(order)g(of)g(the)h(listing.)47 b(Otherwise,)33
-b(the)g(editor)g(giv)m(en)g(b)m(y)g Fq(ename)39 b Ft(is)32
-b(in)m(v)m(ok)m(ed)i(on)f(a)h(\014le)630 1525 y(con)m(taining)g(those)h
-(commands.)52 b(If)33 b Fq(ename)40 b Ft(is)33 b(not)i(giv)m(en,)g(the)
-g(v)-5 b(alue)34 b(of)g(the)g(follo)m(wing)630 1634 y(v)-5
-b(ariable)31 b(expansion)f(is)h(used:)42 b Fs(${FCEDIT:-${EDITOR:-vi}})
-p Ft(.)d(This)30 b(sa)m(ys)i(to)g(use)g(the)630 1744
-y(v)-5 b(alue)33 b(of)g(the)h Fs(FCEDIT)e Ft(v)-5 b(ariable)32
-b(if)g(set,)j(or)f(the)f(v)-5 b(alue)33 b(of)h(the)f
-Fs(EDITOR)f Ft(v)-5 b(ariable)32 b(if)g(that)630 1854
-y(is)g(set,)j(or)e Fs(vi)g Ft(if)f(neither)g(is)g(set.)50
-b(When)33 b(editing)f(is)g(complete,)i(the)g(edited)e(commands)630
-1963 y(are)f(ec)m(ho)s(ed)g(and)f(executed.)630 2093
-y(In)k(the)g(second)g(form,)h Fq(command)j Ft(is)33 b(re-executed)j
-(after)f(eac)m(h)g(instance)f(of)g Fq(pat)j Ft(in)c(the)630
-2203 y(selected)e(command)f(is)f(replaced)h(b)m(y)h Fq(rep)p
-Ft(.)630 2333 y(A)g(useful)e(alias)h(to)i(use)e(with)g(the)h
-Fs(fc)f Ft(command)h(is)f Fs(r='fc)f(-s')p Ft(,)h(so)h(that)h(t)m
-(yping)e(`)p Fs(r)g(cc)p Ft(')630 2443 y(runs)35 b(the)h(last)g
-(command)g(b)s(eginning)e(with)h Fs(cc)g Ft(and)h(t)m(yping)f(`)p
-Fs(r)p Ft(')i(re-executes)h(the)e(last)630 2552 y(command)30
-b(\(see)h(Section)g(6.6)g([Aliases],)f(page)i(71\).)150
+(listing.)46 b(The)32 b(`)p Fs(-r)p Ft(')g(\015ag)g(rev)m(erses)h(the)
+630 1415 y(order)g(of)g(the)h(listing.)50 b(Otherwise,)34
+b(the)f(editor)h(giv)m(en)g(b)m(y)f Fq(ename)39 b Ft(is)33
+b(in)m(v)m(ok)m(ed)i(on)e(a)h(\014le)630 1525 y(con)m(taining)i(those)f
+(commands.)52 b(If)33 b Fq(ename)40 b Ft(is)34 b(not)h(giv)m(en,)h(the)
+f(v)-5 b(alue)35 b(of)f(the)g(follo)m(wing)630 1634 y(v)-5
+b(ariable)33 b(expansion)e(is)h(used:)42 b Fs(${FCEDIT:-${EDITOR:-vi}})
+p Ft(.)d(This)31 b(sa)m(ys)h(to)g(use)g(the)630 1744
+y(v)-5 b(alue)34 b(of)f(the)h Fs(FCEDIT)e Ft(v)-5 b(ariable)34
+b(if)f(set,)i(or)f(the)f(v)-5 b(alue)34 b(of)g(the)f
+Fs(EDITOR)f Ft(v)-5 b(ariable)34 b(if)f(that)630 1854
+y(is)g(set,)i(or)e Fs(vi)g Ft(if)g(neither)g(is)g(set.)50
+b(When)33 b(editing)h(is)f(complete,)i(the)f(edited)f(commands)630
+1963 y(are)e(ec)m(ho)s(ed)g(and)f(executed.)630 2093
+y(In)k(the)g(second)g(form,)h Fq(command)j Ft(is)c(re-executed)i(after)
+f(eac)m(h)g(instance)g(of)f Fq(pat)j Ft(in)d(the)630
+2203 y(selected)e(command)e(is)g(replaced)h(b)m(y)g Fq(rep)p
+Ft(.)630 2333 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g
+Fs(fc)f Ft(command)h(is)g Fs(r='fc)e(-s')p Ft(,)h(so)h(that)h(t)m
+(yping)f(`)p Fs(r)f(cc)p Ft(')630 2443 y(runs)35 b(the)h(last)h
+(command)f(b)s(eginning)g(with)g Fs(cc)f Ft(and)h(t)m(yping)g(`)p
+Fs(r)p Ft(')h(re-executes)h(the)e(last)630 2552 y(command)30
+b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(71\).)150
 2703 y Fs(history)870 2833 y(history)46 b([)p Fj(n)11
 b Fs(])870 2943 y(history)46 b(-c)870 3052 y(history)g(-d)h
 Fj(offset)870 3162 y Fs(history)f([-anrw])g([)p Fj(filename)11
 b Fs(])870 3271 y(history)46 b(-ps)h Fj(arg)630 3402
-y Ft(With)25 b(no)h(options,)g(displa)m(y)e(the)i(history)f(list)f
-(with)g(line)g(n)m(um)m(b)s(ers.)38 b(Lines)25 b(pre\014xed)f(with)630
+y Ft(With)26 b(no)g(options,)h(displa)m(y)f(the)g(history)g(list)g
+(with)f(line)h(n)m(um)m(b)s(ers.)38 b(Lines)26 b(pre\014xed)e(with)630
 3511 y(a)35 b(`)p Fs(*)p Ft(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.)
-52 b(An)34 b(argumen)m(t)h(of)g Fq(n)f Ft(lists)g(only)g(the)h(last)f
-Fq(n)g Ft(lines.)52 b(If)35 b(the)630 3621 y(shell)28
-b(v)-5 b(ariable)29 b Fs(HISTTIMEFORMAT)d Ft(is)j(set)i(and)e(not)i(n)m
-(ull,)d(it)i(is)f(used)g(as)h(a)h(format)f(string)630
-3730 y(for)36 b Fq(strftime)k Ft(to)c(displa)m(y)e(the)i(time)g(stamp)g
-(asso)s(ciated)g(with)f(eac)m(h)i(displa)m(y)m(ed)d(history)630
-3840 y(en)m(try)-8 b(.)47 b(No)33 b(in)m(terv)m(ening)e(blank)g(is)g
-(prin)m(ted)g(b)s(et)m(w)m(een)i(the)g(formatted)f(time)g(stamp)h(and)
-630 3950 y(the)e(history)e(line.)630 4080 y(Options,)g(if)h(supplied,)d
-(ha)m(v)m(e)k(the)g(follo)m(wing)e(meanings:)630 4230
-y Fs(-c)384 b Ft(Clear)22 b(the)h(history)f(list.)37
-b(This)21 b(ma)m(y)j(b)s(e)e(com)m(bined)g(with)f(the)i(other)h
-(options)1110 4340 y(to)31 b(replace)f(the)h(history)e(list)g
+53 b(An)34 b(argumen)m(t)h(of)g Fq(n)f Ft(lists)i(only)f(the)g(last)g
+Fq(n)f Ft(lines.)54 b(If)35 b(the)630 3621 y(shell)30
+b(v)-5 b(ariable)31 b Fs(HISTTIMEFORMAT)26 b Ft(is)k(set)h(and)e(not)i
+(n)m(ull,)f(it)h(is)f(used)f(as)h(a)h(format)f(string)630
+3730 y(for)36 b Fq(strftime)41 b Ft(to)36 b(displa)m(y)g(the)g(time)h
+(stamp)f(asso)s(ciated)h(with)f(eac)m(h)h(displa)m(y)m(ed)f(history)630
+3840 y(en)m(try)-8 b(.)47 b(No)33 b(in)m(terv)m(ening)g(blank)f(is)g
+(prin)m(ted)g(b)s(et)m(w)m(een)h(the)g(formatted)f(time)h(stamp)g(and)
+630 3950 y(the)e(history)f(line.)630 4080 y(Options,)g(if)h(supplied,)e
+(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4230
+y Fs(-c)384 b Ft(Clear)23 b(the)g(history)g(list.)39
+b(This)22 b(ma)m(y)i(b)s(e)e(com)m(bined)h(with)f(the)h(other)h
+(options)1110 4340 y(to)31 b(replace)g(the)g(history)f(list)h
 (completely)-8 b(.)630 4491 y Fs(-d)30 b Fj(offset)1110
-4600 y Ft(Delete)24 b(the)g(history)e(en)m(try)i(at)g(p)s(osition)d
-Fq(o\013set)p Ft(.)39 b Fq(o\013set)27 b Ft(should)21
-b(b)s(e)i(sp)s(eci\014ed)1110 4710 y(as)31 b(it)f(app)s(ears)f(when)h
-(the)g(history)f(is)h(displa)m(y)m(ed.)630 4861 y Fs(-a)384
-b Ft(App)s(end)35 b(the)i(new)g(history)f(lines)f(\(history)h(lines)f
-(en)m(tered)j(since)e(the)h(b)s(e-)1110 4970 y(ginning)28
-b(of)j(the)f(curren)m(t)g(Bash)h(session\))f(to)h(the)g(history)e
-(\014le.)630 5121 y Fs(-n)384 b Ft(App)s(end)32 b(the)i(history)e
-(lines)g(not)i(already)f(read)h(from)f(the)h(history)e(\014le)h(to)1110
-5230 y(the)26 b(curren)m(t)f(history)f(list.)38 b(These)25
-b(are)h(lines)e(app)s(ended)g(to)i(the)f(history)g(\014le)1110
-5340 y(since)30 b(the)g(b)s(eginning)e(of)i(the)h(curren)m(t)f(Bash)h
-(session.)p eop
+4600 y Ft(Delete)25 b(the)f(history)f(en)m(try)h(at)g(p)s(osition)f
+Fq(o\013set)p Ft(.)39 b Fq(o\013set)27 b Ft(should)22
+b(b)s(e)h(sp)s(eci\014ed)1110 4710 y(as)31 b(it)g(app)s(ears)e(when)h
+(the)g(history)g(is)h(displa)m(y)m(ed.)630 4861 y Fs(-a)384
+b Ft(App)s(end)35 b(the)i(new)g(history)g(lines)g(\(history)g(lines)g
+(en)m(tered)h(since)f(the)g(b)s(e-)1110 4970 y(ginning)30
+b(of)h(the)f(curren)m(t)g(Bash)h(session\))g(to)g(the)g(history)f
+(\014le.)630 5121 y Fs(-n)384 b Ft(App)s(end)32 b(the)i(history)f
+(lines)h(not)g(already)g(read)g(from)f(the)h(history)f(\014le)h(to)1110
+5230 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
+5340 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h
+(session.)p eop end
 %%Page: 111 117
-111 116 bop 150 -116 a Ft(Chapter)30 b(9:)41 b(Using)29
-b(History)h(In)m(teractiv)m(ely)1923 b(111)630 299 y
-Fs(-r)384 b Ft(Read)26 b(the)h(curren)m(t)f(history)f(\014le)g(and)h
-(app)s(end)e(its)i(con)m(ten)m(ts)i(to)f(the)f(history)1110
-408 y(list.)630 571 y Fs(-w)384 b Ft(W)-8 b(rite)31 b(out)f(the)h
-(curren)m(t)f(history)f(to)j(the)e(history)f(\014le.)630
-734 y Fs(-p)384 b Ft(P)m(erform)31 b(history)e(substitution)g(on)h(the)
-h Fq(arg)8 b Ft(s)31 b(and)f(displa)m(y)f(the)h(result)g(on)1110
-843 y(the)e(standard)f(output,)i(without)e(storing)g(the)h(results)f
-(in)g(the)h(history)f(list.)630 1006 y Fs(-s)384 b Ft(The)30
+TeXDict begin 111 116 bop 150 -116 a Ft(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(111)630
+299 y Fs(-r)384 b Ft(Read)26 b(the)h(curren)m(t)f(history)g(\014le)g
+(and)g(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)f(history)1110
+408 y(list.)630 571 y Fs(-w)384 b Ft(W)-8 b(rite)32 b(out)e(the)h
+(curren)m(t)f(history)g(to)i(the)e(history)g(\014le.)630
+734 y Fs(-p)384 b Ft(P)m(erform)31 b(history)f(substitution)h(on)f(the)
+h Fq(arg)8 b Ft(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110
+843 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g
+(in)g(the)g(history)g(list.)630 1006 y Fs(-s)384 b Ft(The)30
 b Fq(arg)8 b Ft(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f
-(history)g(list)f(as)h(a)h(single)e(en)m(try)-8 b(.)630
+(history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630
 1168 y(When)24 b(an)m(y)h(of)f(the)h(`)p Fs(-w)p Ft(',)h(`)p
 Fs(-r)p Ft(',)f(`)p Fs(-a)p Ft(',)h(or)f(`)p Fs(-n)p
-Ft(')f(options)f(is)h(used,)h(if)e Fq(\014lename)29 b
-Ft(is)23 b(giv)m(en,)j(then)630 1278 y(it)31 b(is)g(used)g(as)h(the)f
-(history)g(\014le.)44 b(If)31 b(not,)h(then)g(the)f(v)-5
-b(alue)31 b(of)h(the)g Fs(HISTFILE)d Ft(v)-5 b(ariable)31
+Ft(')f(options)g(is)h(used,)g(if)f Fq(\014lename)30 b
+Ft(is)24 b(giv)m(en,)j(then)630 1278 y(it)32 b(is)g(used)f(as)h(the)f
+(history)h(\014le.)45 b(If)31 b(not,)h(then)g(the)f(v)-5
+b(alue)32 b(of)g(the)g Fs(HISTFILE)d Ft(v)-5 b(ariable)33
 b(is)630 1388 y(used.)150 1653 y Fr(9.3)68 b(History)46
-b(Expansion)275 1900 y Ft(The)35 b(History)g(library)e(pro)m(vides)i(a)
-h(history)e(expansion)h(feature)h(that)g(is)f(similar)e(to)j(the)g
-(history)150 2010 y(expansion)21 b(pro)m(vided)f(b)m(y)i
-Fs(csh)p Ft(.)37 b(This)21 b(section)h(describ)s(es)e(the)i(syn)m(tax)h
-(used)e(to)h(manipulate)f(the)h(history)150 2120 y(information.)275
-2257 y(History)30 b(expansions)f(in)m(tro)s(duce)g(w)m(ords)h(from)g
-(the)h(history)e(list)g(in)m(to)h(the)h(input)e(stream,)i(making)150
-2367 y(it)f(easy)h(to)g(rep)s(eat)g(commands,)f(insert)f(the)i(argumen)
-m(ts)f(to)h(a)g(previous)e(command)h(in)m(to)h(the)f(curren)m(t)150
-2476 y(input)e(line,)h(or)i(\014x)f(errors)f(in)g(previous)g(commands)h
-(quic)m(kly)-8 b(.)275 2614 y(History)26 b(expansion)f(tak)m(es)j
-(place)e(in)f(t)m(w)m(o)j(parts.)39 b(The)26 b(\014rst)g(is)f(to)i
-(determine)f(whic)m(h)f(line)g(from)h(the)150 2724 y(history)h(list)f
-(should)g(b)s(e)h(used)g(during)f(substitution.)37 b(The)27
-b(second)h(is)f(to)i(select)f(p)s(ortions)e(of)i(that)h(line)150
-2833 y(for)d(inclusion)c(in)m(to)k(the)g(curren)m(t)f(one.)40
-b(The)25 b(line)f(selected)i(from)g(the)g(history)e(is)h(called)g(the)h
-Fq(ev)m(en)m(t)p Ft(,)j(and)150 2943 y(the)21 b(p)s(ortions)f(of)h
-(that)h(line)d(that)j(are)g(acted)g(up)s(on)e(are)h(called)f
-Fq(w)m(ords)p Ft(.)38 b(V)-8 b(arious)20 b Fq(mo)s(di\014ers)j
-Ft(are)f(a)m(v)-5 b(ailable)150 3052 y(to)35 b(manipulate)d(the)i
-(selected)h(w)m(ords.)51 b(The)33 b(line)f(is)h(brok)m(en)h(in)m(to)g
-(w)m(ords)f(in)g(the)h(same)h(fashion)d(that)150 3162
-y(Bash)j(do)s(es,)h(so)f(that)h(sev)m(eral)f(w)m(ords)f(surrounded)f(b)
-m(y)i(quotes)g(are)g(considered)f(one)h(w)m(ord.)54 b(History)150
-3272 y(expansions)33 b(are)h(in)m(tro)s(duced)e(b)m(y)i(the)g(app)s
-(earance)g(of)g(the)g(history)f(expansion)g(c)m(haracter,)j(whic)m(h)d
-(is)150 3381 y(`)p Fs(!)p Ft(')e(b)m(y)f(default.)40
-b(Only)28 b(`)p Fs(\\)p Ft(')j(and)f(`)p Fs(')p Ft(')g(ma)m(y)h(b)s(e)f
-(used)g(to)h(escap)s(e)g(the)f(history)f(expansion)h(c)m(haracter.)275
-3519 y(Sev)m(eral)39 b(shell)f(options)h(settable)h(with)e(the)i
-Fs(shopt)e Ft(builtin)e(\(see)k(Section)g(4.2)g([Bash)g(Builtins],)150
-3629 y(page)32 b(39\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)e(the)g(b)s
-(eha)m(vior)g(of)h(history)f(expansion.)43 b(If)31 b(the)h
-Fs(histverify)d Ft(shell)150 3738 y(option)38 b(is)f(enabled,)i(and)f
-(Readline)e(is)i(b)s(eing)e(used,)k(history)d(substitutions)f(are)i
-(not)h(immediately)150 3848 y(passed)30 b(to)h(the)g(shell)e(parser.)40
-b(Instead,)30 b(the)h(expanded)f(line)f(is)g(reloaded)h(in)m(to)h(the)f
-(Readline)f(editing)150 3957 y(bu\013er)g(for)i(further)e(mo)s
-(di\014cation.)39 b(If)30 b(Readline)f(is)g(b)s(eing)g(used,)h(and)g
-(the)g Fs(histreedit)e Ft(shell)g(option)150 4067 y(is)33
-b(enabled,)h(a)h(failed)e(history)g(expansion)g(will)e(b)s(e)j
-(reloaded)f(in)m(to)h(the)h(Readline)d(editing)h(bu\013er)g(for)150
-4176 y(correction.)73 b(The)41 b(`)p Fs(-p)p Ft(')g(option)f(to)i(the)f
-Fs(history)f Ft(builtin)d(command)k(ma)m(y)h(b)s(e)e(used)h(to)g(see)h
-(what)150 4286 y(a)c(history)f(expansion)f(will)f(do)i(b)s(efore)h
-(using)e(it.)62 b(The)37 b(`)p Fs(-s)p Ft(')g(option)g(to)i(the)f
-Fs(history)d Ft(builtin)f(ma)m(y)150 4396 y(b)s(e)f(used)h(to)g(add)g
-(commands)f(to)i(the)f(end)g(of)g(the)g(history)f(list)g(without)g
-(actually)h(executing)g(them,)150 4505 y(so)k(that)h(they)f(are)g(a)m
-(v)-5 b(ailable)37 b(for)h(subsequen)m(t)f(recall.)63
-b(This)36 b(is)h(most)h(useful)f(in)f(conjunction)h(with)150
-4615 y(Readline.)275 4753 y(The)29 b(shell)g(allo)m(ws)h(con)m(trol)h
-(of)f(the)h(v)-5 b(arious)29 b(c)m(haracters)j(used)e(b)m(y)g(the)h
-(history)e(expansion)h(mec)m(ha-)150 4862 y(nism)f(with)g(the)h
+b(Expansion)275 1900 y Ft(The)35 b(History)h(library)f(pro)m(vides)h(a)
+g(history)f(expansion)h(feature)g(that)g(is)g(similar)g(to)g(the)g
+(history)150 2010 y(expansion)22 b(pro)m(vided)f(b)m(y)h
+Fs(csh)p Ft(.)37 b(This)22 b(section)h(describ)s(es)e(the)h(syn)m(tax)h
+(used)e(to)h(manipulate)h(the)f(history)150 2120 y(information.)275
+2257 y(History)31 b(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
+2367 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
+2476 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
+(quic)m(kly)-8 b(.)275 2614 y(History)27 b(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 2724 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
+2833 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
+Fq(ev)m(en)m(t)p Ft(,)j(and)150 2943 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
+Fq(w)m(ords)p Ft(.)38 b(V)-8 b(arious)21 b Fq(mo)s(di\014ers)j
+Ft(are)e(a)m(v)-5 b(ailable)150 3052 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 3162
+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
+3272 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 3381 y(`)p Fs(!)p Ft(')d(b)m(y)f(default.)41
+b(Only)29 b(`)p Fs(\\)p Ft(')i(and)f(`)p Fs(')p Ft(')g(ma)m(y)h(b)s(e)f
+(used)g(to)h(escap)s(e)g(the)f(history)g(expansion)h(c)m(haracter.)275
+3519 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h
+Fs(shopt)e Ft(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)150
+3629 y(page)32 b(39\))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
+Fs(histverify)d Ft(shell)150 3738 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 3848 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 3957 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 Fs(histreedit)e Ft(shell)i(option)150 4067 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 4176 y(correction.)74
+b(The)41 b(`)p Fs(-p)p Ft(')g(option)g(to)h(the)f Fs(history)f
+Ft(builtin)g(command)h(ma)m(y)h(b)s(e)e(used)h(to)g(see)h(what)150
+4286 y(a)c(history)g(expansion)f(will)h(do)f(b)s(efore)h(using)f(it.)63
+b(The)37 b(`)p Fs(-s)p Ft(')g(option)h(to)h(the)f Fs(history)d
+Ft(builtin)i(ma)m(y)150 4396 y(b)s(e)c(used)h(to)g(add)g(commands)f(to)
+i(the)f(end)g(of)g(the)g(history)g(list)h(without)f(actually)i
+(executing)f(them,)150 4505 y(so)j(that)h(they)f(are)g(a)m(v)-5
+b(ailable)40 b(for)e(subsequen)m(t)f(recall.)65 b(This)37
+b(is)h(most)g(useful)g(in)f(conjunction)h(with)150 4615
+y(Readline.)275 4753 y(The)29 b(shell)i(allo)m(ws)h(con)m(trol)g(of)e
+(the)h(v)-5 b(arious)30 b(c)m(haracters)i(used)e(b)m(y)g(the)h(history)
+f(expansion)h(mec)m(ha-)150 4862 y(nism)f(with)g(the)g
 Fs(histchars)e Ft(v)-5 b(ariable.)150 5093 y Fk(9.3.1)63
 b(Ev)m(en)m(t)39 b(Designators)275 5340 y Ft(An)30 b(ev)m(en)m(t)h
-(designator)g(is)e(a)i(reference)g(to)g(a)f(command)h(line)d(en)m(try)j
-(in)e(the)i(history)e(list.)p eop
+(designator)h(is)e(a)h(reference)g(to)g(a)f(command)h(line)f(en)m(try)h
+(in)f(the)h(history)f(list.)p eop end
 %%Page: 112 118
-112 117 bop 150 -116 a Ft(112)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-150 299 y Fs(!)432 b Ft(Start)34 b(a)f(history)g(substitution,)f
-(except)i(when)f(follo)m(w)m(ed)g(b)m(y)g(a)h(space,)h(tab,)f(the)g
-(end)f(of)630 408 y(the)i(line,)e(`)p Fs(=)p Ft(')i(or)f(`)p
-Fs(\()p Ft(')h(\(when)e(the)i Fs(extglob)d Ft(shell)h(option)g(is)h
-(enabled)f(using)g(the)h Fs(shopt)630 518 y Ft(builtin\).)150
-674 y Fs(!)p Fj(n)384 b Ft(Refer)30 b(to)i(command)e(line)e
-Fq(n)p Ft(.)150 830 y Fs(!-)p Fj(n)336 b Ft(Refer)30
-b(to)i(the)e(command)g Fq(n)g Ft(lines)f(bac)m(k.)150
-985 y Fs(!!)384 b Ft(Refer)30 b(to)i(the)e(previous)f(command.)40
-b(This)29 b(is)g(a)i(synon)m(ym)f(for)g(`)p Fs(!-1)p
-Ft('.)150 1141 y Fs(!)p Fj(string)144 b Ft(Refer)30 b(to)i(the)e(most)h
-(recen)m(t)g(command)f(starting)h(with)e Fq(string)p
-Ft(.)150 1297 y Fs(!?)p Fj(string)11 b Fs([?])630 1406
-y Ft(Refer)34 b(to)g(the)f(most)h(recen)m(t)h(command)e(con)m(taining)g
-Fq(string)p Ft(.)49 b(The)33 b(trailing)f(`)p Fs(?)p
-Ft(')h(ma)m(y)i(b)s(e)630 1516 y(omitted)30 b(if)g(the)g
-Fq(string)37 b Ft(is)30 b(follo)m(w)m(ed)g(immediately)f(b)m(y)h(a)h
-(newline.)150 1672 y Fs(^)p Fj(string1)11 b Fs(^)p Fj(string2)g
-Fs(^)630 1781 y Ft(Quic)m(k)31 b(Substitution.)42 b(Rep)s(eat)32
-b(the)g(last)g(command,)g(replacing)e Fq(string1)39 b
-Ft(with)30 b Fq(string2)p Ft(.)630 1891 y(Equiv)-5 b(alen)m(t)29
-b(to)i Fs(!!:s/)p Fj(string1)11 b Fs(/)p Fj(string2)g
-Fs(/)p Ft(.)150 2047 y Fs(!#)384 b Ft(The)30 b(en)m(tire)g(command)g
-(line)f(t)m(yp)s(ed)h(so)h(far.)150 2265 y Fk(9.3.2)63
-b(W)-10 b(ord)41 b(Designators)275 2508 y Ft(W)-8 b(ord)35
-b(designators)f(are)h(used)f(to)h(select)g(desired)e(w)m(ords)i(from)f
-(the)h(ev)m(en)m(t.)55 b(A)34 b(`)p Fs(:)p Ft(')h(separates)h(the)150
-2617 y(ev)m(en)m(t)41 b(sp)s(eci\014cation)d(from)i(the)f(w)m(ord)g
-(designator.)68 b(It)40 b(ma)m(y)g(b)s(e)f(omitted)h(if)e(the)i(w)m
-(ord)f(designator)150 2727 y(b)s(egins)32 b(with)h(a)i(`)p
-Fs(^)p Ft(',)g(`)p Fs($)p Ft(',)g(`)p Fs(*)p Ft(',)h(`)p
-Fs(-)p Ft(',)f(or)f(`)p Fs(\045)p Ft('.)52 b(W)-8 b(ords)35
-b(are)f(n)m(um)m(b)s(ered)f(from)g(the)i(b)s(eginning)c(of)j(the)g
-(line,)150 2836 y(with)k(the)i(\014rst)f(w)m(ord)g(b)s(eing)f(denoted)i
-(b)m(y)g(0)g(\(zero\).)70 b(W)-8 b(ords)39 b(are)h(inserted)f(in)m(to)g
-(the)h(curren)m(t)g(line)150 2946 y(separated)31 b(b)m(y)f(single)f
-(spaces.)275 3079 y(F)-8 b(or)31 b(example,)150 3234
-y Fs(!!)384 b Ft(designates)36 b(the)g(preceding)f(command.)57
-b(When)35 b(y)m(ou)i(t)m(yp)s(e)f(this,)g(the)g(preceding)f(com-)630
-3344 y(mand)30 b(is)f(rep)s(eated)h(in)f(toto.)150 3500
-y Fs(!!:$)288 b Ft(designates)22 b(the)h(last)f(argumen)m(t)h(of)f(the)
-h(preceding)e(command.)38 b(This)21 b(ma)m(y)i(b)s(e)e(shortened)630
+TeXDict begin 112 117 bop 150 -116 a Ft(112)2527 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(!)432 b Ft(Start)34
+b(a)f(history)h(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)
+e(a)h(space,)h(tab,)f(the)g(end)f(of)630 408 y(the)i(line,)g(`)p
+Fs(=)p Ft(')g(or)f(`)p Fs(\()p Ft(')h(\(when)e(the)i
+Fs(extglob)d Ft(shell)j(option)f(is)h(enabled)f(using)g(the)g
+Fs(shopt)630 518 y Ft(builtin\).)150 674 y Fs(!)p Fj(n)384
+b Ft(Refer)30 b(to)i(command)e(line)g Fq(n)p Ft(.)150
+830 y Fs(!-)p Fj(n)336 b Ft(Refer)30 b(to)i(the)e(command)g
+Fq(n)g Ft(lines)h(bac)m(k.)150 985 y Fs(!!)384 b Ft(Refer)30
+b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f
+(for)g(`)p Fs(!-1)p Ft('.)150 1141 y Fs(!)p Fj(string)144
+b Ft(Refer)30 b(to)i(the)e(most)h(recen)m(t)g(command)f(starting)i
+(with)e Fq(string)p Ft(.)150 1297 y Fs(!?)p Fj(string)11
+b Fs([?])630 1406 y Ft(Refer)34 b(to)g(the)f(most)h(recen)m(t)h
+(command)e(con)m(taining)i Fq(string)p Ft(.)50 b(The)33
+b(trailing)i(`)p Fs(?)p Ft(')e(ma)m(y)i(b)s(e)630 1516
+y(omitted)c(if)g(the)f Fq(string)38 b Ft(is)31 b(follo)m(w)m(ed)h
+(immediately)g(b)m(y)e(a)h(newline.)150 1672 y Fs(^)p
+Fj(string1)11 b Fs(^)p Fj(string2)g Fs(^)630 1781 y Ft(Quic)m(k)32
+b(Substitution.)44 b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g
+Fq(string1)40 b Ft(with)31 b Fq(string2)p Ft(.)630 1891
+y(Equiv)-5 b(alen)m(t)31 b(to)g Fs(!!:s/)p Fj(string1)11
+b Fs(/)p Fj(string2)g Fs(/)p Ft(.)150 2047 y Fs(!#)384
+b Ft(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)150
+2265 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)275
+2508 y Ft(W)-8 b(ord)35 b(designators)g(are)g(used)f(to)h(select)h
+(desired)e(w)m(ords)h(from)f(the)h(ev)m(en)m(t.)55 b(A)34
+b(`)p Fs(:)p Ft(')h(separates)h(the)150 2617 y(ev)m(en)m(t)41
+b(sp)s(eci\014cation)f(from)g(the)f(w)m(ord)g(designator.)69
+b(It)40 b(ma)m(y)g(b)s(e)f(omitted)i(if)e(the)h(w)m(ord)f(designator)
+150 2727 y(b)s(egins)33 b(with)h(a)h(`)p Fs(^)p Ft(',)g(`)p
+Fs($)p Ft(',)g(`)p Fs(*)p Ft(',)h(`)p Fs(-)p Ft(',)f(or)f(`)p
+Fs(\045)p Ft('.)52 b(W)-8 b(ords)35 b(are)f(n)m(um)m(b)s(ered)f(from)g
+(the)i(b)s(eginning)e(of)h(the)g(line,)150 2836 y(with)39
+b(the)h(\014rst)f(w)m(ord)g(b)s(eing)g(denoted)h(b)m(y)g(0)g(\(zero\).)
+70 b(W)-8 b(ords)39 b(are)h(inserted)g(in)m(to)g(the)g(curren)m(t)g
+(line)150 2946 y(separated)31 b(b)m(y)f(single)h(spaces.)275
+3079 y(F)-8 b(or)31 b(example,)150 3234 y Fs(!!)384 b
+Ft(designates)37 b(the)f(preceding)g(command.)57 b(When)35
+b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630
+3344 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 3500
+y Fs(!!:$)288 b Ft(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the)
+h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630
 3609 y(to)31 b Fs(!$)p Ft(.)150 3765 y Fs(!fi:2)240 b
-Ft(designates)29 b(the)h(second)f(argumen)m(t)h(of)f(the)h(most)f
-(recen)m(t)i(command)e(starting)g(with)f(the)630 3875
-y(letters)j Fs(fi)p Ft(.)275 4030 y(Here)f(are)h(the)g(w)m(ord)f
+Ft(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f
+(recen)m(t)i(command)e(starting)h(with)f(the)630 3875
+y(letters)j Fs(fi)p Ft(.)275 4030 y(Here)e(are)h(the)g(w)m(ord)f
 (designators:)150 4186 y Fs(0)g(\(zero\))114 b Ft(The)30
-b Fs(0)p Ft(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)e
-(this)g(is)g(the)i(command)f(w)m(ord.)150 4342 y Fj(n)432
+b Fs(0)p Ft(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h
+(this)e(is)g(the)h(command)f(w)m(ord.)150 4342 y Fj(n)432
 b Ft(The)30 b Fq(n)p Ft(th)g(w)m(ord.)150 4498 y Fs(^)432
-b Ft(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)e(w)m(ord)h(1.)150
-4654 y Fs($)432 b Ft(The)30 b(last)g(argumen)m(t.)150
+b Ft(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150
+4654 y Fs($)432 b Ft(The)30 b(last)h(argumen)m(t.)150
 4809 y Fs(\045)432 b Ft(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h
 (most)g(recen)m(t)g(`)p Fs(?)p Fj(string)11 b Fs(?)p
 Ft(')28 b(searc)m(h.)150 4965 y Fj(x)p Fs(-)p Fj(y)336
 b Ft(A)30 b(range)h(of)g(w)m(ords;)f(`)p Fs(-)p Fj(y)11
-b Ft(')30 b(abbreviates)g(`)p Fs(0-)p Fj(y)11 b Ft('.)150
-5121 y Fs(*)432 b Ft(All)26 b(of)i(the)g(w)m(ords,)g(except)h(the)e
-Fs(0)p Ft(th.)40 b(This)26 b(is)g(a)i(synon)m(ym)f(for)h(`)p
-Fs(1-$)p Ft('.)39 b(It)28 b(is)f(not)h(an)f(error)630
-5230 y(to)j(use)g(`)p Fs(*)p Ft(')f(if)g(there)h(is)f(just)g(one)h(w)m
-(ord)f(in)f(the)i(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)d(is)h
-(returned)f(in)630 5340 y(that)j(case.)p eop
+b Ft(')30 b(abbreviates)h(`)p Fs(0-)p Fj(y)11 b Ft('.)150
+5121 y Fs(*)432 b Ft(All)28 b(of)g(the)g(w)m(ords,)g(except)h(the)e
+Fs(0)p Ft(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p
+Fs(1-$)p Ft('.)39 b(It)28 b(is)g(not)g(an)f(error)630
+5230 y(to)j(use)g(`)p Fs(*)p Ft(')f(if)h(there)g(is)g(just)f(one)h(w)m
+(ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h
+(returned)e(in)630 5340 y(that)j(case.)p eop end
 %%Page: 113 119
-113 118 bop 150 -116 a Ft(Chapter)30 b(9:)41 b(Using)29
-b(History)h(In)m(teractiv)m(ely)1923 b(113)150 299 y
-Fj(x)11 b Fs(*)373 b Ft(Abbreviates)30 b(`)p Fj(x)p Fs(-$)p
-Ft(')150 458 y Fj(x)p Fs(-)384 b Ft(Abbreviates)30 b(`)p
-Fj(x)p Fs(-$)p Ft(')g(lik)m(e)f(`)p Fj(x)11 b Fs(*)p
-Ft(',)31 b(but)e(omits)h(the)h(last)f(w)m(ord.)275 618
-y(If)j(a)h(w)m(ord)g(designator)f(is)g(supplied)e(without)i(an)h(ev)m
-(en)m(t)h(sp)s(eci\014cation,)f(the)g(previous)e(command)150
-727 y(is)d(used)h(as)h(the)f(ev)m(en)m(t.)150 951 y Fk(9.3.3)63
-b(Mo)s(di\014ers)275 1196 y Ft(After)20 b(the)h(optional)f(w)m(ord)h
-(designator,)h(y)m(ou)f(can)g(add)f(a)h(sequence)g(of)g(one)g(or)g
-(more)g(of)g(the)f(follo)m(wing)150 1305 y(mo)s(di\014ers,)28
-b(eac)m(h)k(preceded)e(b)m(y)g(a)h(`)p Fs(:)p Ft('.)150
-1465 y Fs(h)432 b Ft(Remo)m(v)m(e)32 b(a)f(trailing)d(pathname)j(comp)s
-(onen)m(t,)g(lea)m(ving)f(only)f(the)i(head.)150 1624
-y Fs(t)432 b Ft(Remo)m(v)m(e)32 b(all)d(leading)h(pathname)g(comp)s
-(onen)m(ts,)h(lea)m(ving)f(the)g(tail.)150 1783 y Fs(r)432
-b Ft(Remo)m(v)m(e)32 b(a)f(trailing)d(su\016x)i(of)g(the)h(form)f(`)p
-Fs(.)p Fj(suffix)11 b Ft(',)28 b(lea)m(ving)j(the)f(basename.)150
-1943 y Fs(e)432 b Ft(Remo)m(v)m(e)32 b(all)d(but)h(the)h(trailing)d
-(su\016x.)150 2102 y Fs(p)432 b Ft(Prin)m(t)29 b(the)i(new)f(command)g
+TeXDict begin 113 118 bop 150 -116 a Ft(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(113)150
+299 y Fj(x)11 b Fs(*)373 b Ft(Abbreviates)31 b(`)p Fj(x)p
+Fs(-$)p Ft(')150 458 y Fj(x)p Fs(-)384 b Ft(Abbreviates)31
+b(`)p Fj(x)p Fs(-$)p Ft(')f(lik)m(e)h(`)p Fj(x)11 b Fs(*)p
+Ft(',)31 b(but)e(omits)i(the)g(last)g(w)m(ord.)275 618
+y(If)i(a)h(w)m(ord)g(designator)g(is)g(supplied)f(without)h(an)g(ev)m
+(en)m(t)h(sp)s(eci\014cation,)h(the)e(previous)f(command)150
+727 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150 951 y Fk(9.3.3)63
+b(Mo)s(di\014ers)275 1196 y Ft(After)20 b(the)h(optional)h(w)m(ord)f
+(designator,)i(y)m(ou)e(can)g(add)f(a)h(sequence)g(of)g(one)g(or)g
+(more)g(of)g(the)f(follo)m(wing)150 1305 y(mo)s(di\014ers,)29
+b(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p Fs(:)p Ft('.)150
+1465 y Fs(h)432 b Ft(Remo)m(v)m(e)32 b(a)f(trailing)g(pathname)g(comp)s
+(onen)m(t,)g(lea)m(ving)h(only)e(the)h(head.)150 1624
+y Fs(t)432 b Ft(Remo)m(v)m(e)32 b(all)f(leading)h(pathname)e(comp)s
+(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 1783 y Fs(r)432
+b Ft(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g(the)h(form)f(`)p
+Fs(.)p Fj(suffix)11 b Ft(',)28 b(lea)m(ving)33 b(the)d(basename.)150
+1943 y Fs(e)432 b Ft(Remo)m(v)m(e)32 b(all)f(but)f(the)h(trailing)g
+(su\016x.)150 2102 y Fs(p)432 b Ft(Prin)m(t)30 b(the)h(new)f(command)g
 (but)g(do)g(not)g(execute)i(it.)150 2262 y Fs(q)432 b
-Ft(Quote)31 b(the)f(substituted)f(w)m(ords,)h(escaping)g(further)f
-(substitutions.)150 2421 y Fs(x)432 b Ft(Quote)32 b(the)f(substituted)f
-(w)m(ords)g(as)i(with)e(`)p Fs(q)p Ft(',)i(but)e(break)h(in)m(to)h(w)m
-(ords)e(at)i(spaces,)h(tabs,)630 2531 y(and)d(newlines.)150
+Ft(Quote)31 b(the)f(substituted)g(w)m(ords,)g(escaping)h(further)e
+(substitutions.)150 2421 y Fs(x)432 b Ft(Quote)32 b(the)f(substituted)g
+(w)m(ords)f(as)i(with)f(`)p Fs(q)p Ft(',)h(but)e(break)h(in)m(to)i(w)m
+(ords)d(at)i(spaces,)h(tabs,)630 2531 y(and)d(newlines.)150
 2690 y Fs(s/)p Fj(old)11 b Fs(/)p Fj(new)g Fs(/)630 2800
-y Ft(Substitute)31 b Fq(new)40 b Ft(for)32 b(the)h(\014rst)f(o)s
-(ccurrence)h(of)f Fq(old)k Ft(in)31 b(the)i(ev)m(en)m(t)h(line.)46
-b(An)m(y)32 b(delimiter)630 2909 y(ma)m(y)25 b(b)s(e)g(used)f(in)f
-(place)i(of)g(`)p Fs(/)p Ft('.)39 b(The)24 b(delimiter)e(ma)m(y)k(b)s
-(e)e(quoted)h(in)e Fq(old)28 b Ft(and)c Fq(new)32 b Ft(with)24
-b(a)630 3019 y(single)j(bac)m(kslash.)39 b(If)28 b(`)p
-Fs(&)p Ft(')g(app)s(ears)g(in)e Fq(new)p Ft(,)j(it)e(is)h(replaced)f(b)
-m(y)h Fq(old)p Ft(.)39 b(A)28 b(single)f(bac)m(kslash)630
-3128 y(will)32 b(quote)j(the)g(`)p Fs(&)p Ft('.)54 b(The)34
-b(\014nal)f(delimiter)g(is)g(optional)h(if)g(it)g(is)f(the)i(last)g(c)m
-(haracter)h(on)630 3238 y(the)31 b(input)d(line.)150
-3397 y Fs(&)432 b Ft(Rep)s(eat)31 b(the)f(previous)f(substitution.)150
-3557 y Fs(g)150 3666 y(a)432 b Ft(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f
-(applied)f(o)m(v)m(er)j(the)f(en)m(tire)f(ev)m(en)m(t)i(line.)64
-b(Used)39 b(in)e(conjunction)630 3776 y(with)29 b(`)p
-Fs(s)p Ft(',)i(as)f(in)g Fs(gs/)p Fj(old)11 b Fs(/)p
-Fj(new)g Fs(/)p Ft(,)26 b(or)k(with)g(`)p Fs(&)p Ft('.)150
-3935 y Fs(G)432 b Ft(Apply)29 b(the)h(follo)m(wing)f(`)p
-Fs(s)p Ft(')i(mo)s(di\014er)d(once)j(to)g(eac)m(h)h(w)m(ord)e(in)f(the)
-h(ev)m(en)m(t.)p eop
+y Ft(Substitute)32 b Fq(new)40 b Ft(for)32 b(the)h(\014rst)f(o)s
+(ccurrence)h(of)f Fq(old)37 b Ft(in)32 b(the)h(ev)m(en)m(t)h(line.)48
+b(An)m(y)32 b(delimiter)630 2909 y(ma)m(y)25 b(b)s(e)g(used)f(in)g
+(place)i(of)f(`)p Fs(/)p Ft('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s
+(e)e(quoted)h(in)f Fq(old)29 b Ft(and)24 b Fq(new)32
+b Ft(with)25 b(a)630 3019 y(single)k(bac)m(kslash.)40
+b(If)28 b(`)p Fs(&)p Ft(')g(app)s(ears)g(in)f Fq(new)p
+Ft(,)i(it)f(is)h(replaced)f(b)m(y)g Fq(old)p Ft(.)40
+b(A)28 b(single)h(bac)m(kslash)630 3128 y(will)35 b(quote)g(the)g(`)p
+Fs(&)p Ft('.)54 b(The)34 b(\014nal)g(delimiter)i(is)e(optional)i(if)f
+(it)g(is)f(the)h(last)h(c)m(haracter)g(on)630 3238 y(the)31
+b(input)e(line.)150 3397 y Fs(&)432 b Ft(Rep)s(eat)31
+b(the)f(previous)g(substitution.)150 3557 y Fs(g)150
+3666 y(a)432 b Ft(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f(applied)h(o)m(v)
+m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66 b(Used)39
+b(in)f(conjunction)630 3776 y(with)30 b(`)p Fs(s)p Ft(',)h(as)f(in)h
+Fs(gs/)p Fj(old)11 b Fs(/)p Fj(new)g Fs(/)p Ft(,)26 b(or)k(with)h(`)p
+Fs(&)p Ft('.)150 3935 y Fs(G)432 b Ft(Apply)30 b(the)g(follo)m(wing)i
+(`)p Fs(s)p Ft(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g
+(the)g(ev)m(en)m(t.)p eop end
 %%Page: 114 120
-114 119 bop 150 -116 a Ft(114)2527 b(Bash)31 b(Reference)g(Man)m(ual)p
-eop
+TeXDict begin 114 119 bop 150 -116 a Ft(114)2527 b(Bash)31
+b(Reference)g(Man)m(ual)p eop end
 %%Page: 115 121
-115 120 bop 150 -116 a Ft(Chapter)30 b(10:)41 b(Installing)28
-b(Bash)2356 b(115)150 299 y Fo(10)80 b(Installing)55
-b(Bash)275 535 y Ft(This)38 b(c)m(hapter)j(pro)m(vides)e(basic)g
-(instructions)f(for)i(installing)d(Bash)j(on)g(the)h(v)-5
-b(arious)39 b(supp)s(orted)150 645 y(platforms.)57 b(The)36
-b(distribution)d(supp)s(orts)h(the)j Fl(gnu)f Ft(op)s(erating)f
-(systems,)k(nearly)c(ev)m(ery)i(v)m(ersion)f(of)150 754
-y(Unix,)g(and)f(sev)m(eral)h(non-Unix)f(systems)h(suc)m(h)f(as)h(BeOS)g
-(and)f(In)m(terix.)56 b(Other)35 b(indep)s(enden)m(t)f(p)s(orts)150
-864 y(exist)c(for)g Fl(ms-dos)p Ft(,)g Fl(os/2)p Ft(,)g(and)g(Windo)m
-(ws)g(platforms.)150 1123 y Fr(10.1)68 b(Basic)45 b(Installation)275
-1367 y Ft(These)30 b(are)g(installation)f(instructions)f(for)i(Bash.)
-275 1503 y(The)f(simplest)g(w)m(a)m(y)i(to)g(compile)f(Bash)g(is:)199
-1638 y(1.)61 b Fs(cd)38 b Ft(to)h(the)f(directory)g(con)m(taining)g
-(the)h(source)f(co)s(de)h(and)f(t)m(yp)s(e)g(`)p Fs(./configure)p
+TeXDict begin 115 120 bop 150 -116 a Ft(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(115)150 299 y Fo(10)80
+b(Installing)52 b(Bash)275 535 y Ft(This)39 b(c)m(hapter)i(pro)m(vides)
+f(basic)g(instructions)g(for)g(installing)h(Bash)f(on)g(the)h(v)-5
+b(arious)40 b(supp)s(orted)150 645 y(platforms.)58 b(The)36
+b(distribution)g(supp)s(orts)e(the)j Fl(gnu)f Ft(op)s(erating)g
+(systems,)j(nearly)d(ev)m(ery)h(v)m(ersion)g(of)150 754
+y(Unix,)g(and)e(sev)m(eral)i(non-Unix)f(systems)g(suc)m(h)f(as)h(BeOS)g
+(and)f(In)m(terix.)57 b(Other)35 b(indep)s(enden)m(t)g(p)s(orts)150
+864 y(exist)c(for)f Fl(ms-dos)p Ft(,)g Fl(os/2)p Ft(,)g(and)g(Windo)m
+(ws)h(platforms.)150 1123 y Fr(10.1)68 b(Basic)45 b(Installation)275
+1367 y Ft(These)30 b(are)g(installation)j(instructions)d(for)g(Bash.)
+275 1503 y(The)f(simplest)i(w)m(a)m(y)g(to)g(compile)h(Bash)e(is:)199
+1638 y(1.)61 b Fs(cd)38 b Ft(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 Fs(./configure)p
 Ft(')e(to)j(con\014gure)330 1747 y(Bash)c(for)f(y)m(our)h(system.)54
-b(If)34 b(y)m(ou're)h(using)e Fs(csh)h Ft(on)g(an)h(old)f(v)m(ersion)g
-(of)h(System)f(V,)h(y)m(ou)g(migh)m(t)330 1857 y(need)21
+b(If)34 b(y)m(ou're)h(using)f Fs(csh)g Ft(on)g(an)h(old)g(v)m(ersion)g
+(of)g(System)f(V,)h(y)m(ou)g(migh)m(t)330 1857 y(need)21
 b(to)g(t)m(yp)s(e)g(`)p Fs(sh)30 b(./configure)p Ft(')18
-b(instead)i(to)h(prev)m(en)m(t)h Fs(csh)e Ft(from)g(trying)g(to)h
+b(instead)j(to)g(prev)m(en)m(t)h Fs(csh)e Ft(from)g(trying)h(to)g
 (execute)h Fs(configure)330 1966 y Ft(itself.)330 2101
-y(Running)29 b Fs(configure)g Ft(tak)m(es)k(some)e(time.)44
-b(While)30 b(running,)f(it)i(prin)m(ts)f(messages)i(telling)e(whic)m(h)
-330 2211 y(features)h(it)f(is)f(c)m(hec)m(king)i(for.)199
-2346 y(2.)61 b(T)m(yp)s(e)30 b(`)p Fs(make)p Ft(')g(to)h(compile)e
-(Bash)i(and)e(build)f(the)i Fs(bashbug)f Ft(bug)g(rep)s(orting)g
-(script.)199 2481 y(3.)61 b(Optionally)-8 b(,)29 b(t)m(yp)s(e)h(`)p
+y(Running)30 b Fs(configure)f Ft(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 2211 y(features)e(it)g(is)f(c)m(hec)m(king)i(for.)199
+2346 y(2.)61 b(T)m(yp)s(e)30 b(`)p Fs(make)p Ft(')g(to)h(compile)g
+(Bash)g(and)e(build)h(the)g Fs(bashbug)f Ft(bug)g(rep)s(orting)h
+(script.)199 2481 y(3.)61 b(Optionally)-8 b(,)32 b(t)m(yp)s(e)e(`)p
 Fs(make)g(tests)p Ft(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199
 2615 y(4.)61 b(T)m(yp)s(e)36 b(`)p Fs(make)29 b(install)p
-Ft(')35 b(to)i(install)e Fs(bash)g Ft(and)h Fs(bashbug)p
-Ft(.)57 b(This)34 b(will)g(also)j(install)d(the)j(man)m(ual)330
+Ft(')35 b(to)i(install)h Fs(bash)d Ft(and)h Fs(bashbug)p
+Ft(.)57 b(This)35 b(will)i(also)h(install)f(the)g(man)m(ual)330
 2725 y(pages)31 b(and)f(Info)g(\014le.)275 2885 y(The)20
-b Fs(configure)f Ft(shell)g(script)h(attempts)i(to)g(guess)f(correct)i
-(v)-5 b(alues)20 b(for)h(v)-5 b(arious)20 b(system-dep)s(enden)m(t)150
-2995 y(v)-5 b(ariables)42 b(used)h(during)f(compilation.)79
-b(It)43 b(uses)h(those)g(v)-5 b(alues)43 b(to)h(create)h(a)g(`)p
-Fs(Makefile)p Ft(')c(in)i(eac)m(h)150 3104 y(directory)24
-b(of)h(the)g(pac)m(k)-5 b(age)27 b(\(the)e(top)g(directory)-8
-b(,)26 b(the)f(`)p Fs(builtins)p Ft(',)f(`)p Fs(doc)p
+b Fs(configure)f Ft(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
+2995 y(v)-5 b(ariables)44 b(used)f(during)g(compilation.)82
+b(It)43 b(uses)h(those)g(v)-5 b(alues)44 b(to)g(create)h(a)g(`)p
+Fs(Makefile)p Ft(')c(in)j(eac)m(h)150 3104 y(directory)25
+b(of)g(the)g(pac)m(k)-5 b(age)27 b(\(the)e(top)g(directory)-8
+b(,)27 b(the)e(`)p Fs(builtins)p Ft(',)f(`)p Fs(doc)p
 Ft(',)i(and)e(`)p Fs(support)p Ft(')g(directories,)150
-3214 y(eac)m(h)32 b(directory)e(under)e(`)p Fs(lib)p
-Ft(',)j(and)f(sev)m(eral)g(others\).)42 b(It)30 b(also)h(creates)g(a)g
-(`)p Fs(config.h)p Ft(')e(\014le)g(con)m(taining)150
-3324 y(system-dep)s(enden)m(t)i(de\014nitions.)42 b(Finally)-8
-b(,)31 b(it)g(creates)i(a)f(shell)e(script)g(named)h
-Fs(config.status)d Ft(that)150 3433 y(y)m(ou)k(can)g(run)e(in)g(the)h
-(future)g(to)h(recreate)h(the)f(curren)m(t)f(con\014guration,)g(a)h
-(\014le)f(`)p Fs(config.cache)p Ft(')d(that)150 3543
-y(sa)m(v)m(es)35 b(the)f(results)e(of)i(its)f(tests)i(to)f(sp)s(eed)f
-(up)g(recon\014guring,)g(and)g(a)h(\014le)f(`)p Fs(config.log)p
-Ft(')e(con)m(taining)150 3652 y(compiler)23 b(output)i(\(useful)e
-(mainly)g(for)i(debugging)e Fs(configure)p Ft(\).)37
-b(If)24 b(at)i(some)f(p)s(oin)m(t)f(`)p Fs(config.cache)p
-Ft(')150 3762 y(con)m(tains)31 b(results)e(y)m(ou)h(don't)h(w)m(an)m(t)
-g(to)g(k)m(eep,)g(y)m(ou)g(ma)m(y)g(remo)m(v)m(e)h(or)e(edit)g(it.)275
-3897 y(T)-8 b(o)37 b(\014nd)f(out)i(more)f(ab)s(out)h(the)f(options)g
-(and)g(argumen)m(ts)g(that)h(the)g Fs(configure)d Ft(script)h(under-)
+3214 y(eac)m(h)32 b(directory)f(under)d(`)p Fs(lib)p
+Ft(',)j(and)f(sev)m(eral)h(others\).)42 b(It)30 b(also)i(creates)f(a)g
+(`)p Fs(config.h)p Ft(')e(\014le)h(con)m(taining)150
+3324 y(system-dep)s(enden)m(t)h(de\014nitions.)44 b(Finally)-8
+b(,)34 b(it)e(creates)h(a)f(shell)g(script)f(named)g
+Fs(config.status)d Ft(that)150 3433 y(y)m(ou)k(can)g(run)e(in)h(the)g
+(future)g(to)h(recreate)h(the)f(curren)m(t)f(con\014guration,)h(a)g
+(\014le)g(`)p Fs(config.cache)p Ft(')c(that)150 3543
+y(sa)m(v)m(es)35 b(the)f(results)f(of)h(its)g(tests)h(to)f(sp)s(eed)f
+(up)g(recon\014guring,)h(and)f(a)h(\014le)g(`)p Fs(config.log)p
+Ft(')d(con)m(taining)150 3652 y(compiler)25 b(output)g(\(useful)f
+(mainly)h(for)g(debugging)f Fs(configure)p Ft(\).)37
+b(If)24 b(at)i(some)f(p)s(oin)m(t)g(`)p Fs(config.cache)p
+Ft(')150 3762 y(con)m(tains)32 b(results)e(y)m(ou)g(don't)h(w)m(an)m(t)
+g(to)g(k)m(eep,)g(y)m(ou)g(ma)m(y)g(remo)m(v)m(e)h(or)e(edit)h(it.)275
+3897 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 Fs(configure)d Ft(script)i(under-)
 150 4007 y(stands,)30 b(t)m(yp)s(e)390 4142 y Fs(bash-2.04$)45
-b(./configure)g(--help)150 4277 y Ft(at)31 b(the)g(Bash)f(prompt)g(in)f
-(y)m(our)h(Bash)h(source)f(directory)-8 b(.)275 4412
-y(If)53 b(y)m(ou)h(need)f(to)i(do)e(un)m(usual)f(things)g(to)j(compile)
-e(Bash,)59 b(please)54 b(try)f(to)i(\014gure)e(out)h(ho)m(w)150
-4522 y Fs(configure)47 b Ft(could)i(c)m(hec)m(k)i(whether)e(or)g(not)h
-(to)h(do)e(them,)55 b(and)49 b(mail)f(di\013s)g(or)i(instructions)d(to)
+b(./configure)g(--help)150 4277 y Ft(at)31 b(the)g(Bash)f(prompt)g(in)g
+(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4412
+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
+4522 y Fs(configure)47 b Ft(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 4631 y Fs(bash-maintainers@gnu.org)24 b Ft(so)30
-b(they)h(can)g(b)s(e)e(considered)h(for)g(the)g(next)h(release.)275
-4766 y(The)24 b(\014le)h(`)p Fs(configure.in)p Ft(')d(is)j(used)f(to)j
-(create)g Fs(configure)22 b Ft(b)m(y)k(a)g(program)f(called)f(Auto)s
-(conf.)39 b(Y)-8 b(ou)150 4876 y(only)30 b(need)g(`)p
-Fs(configure.in)p Ft(')d(if)j(y)m(ou)g(w)m(an)m(t)i(to)f(c)m(hange)g
-(it)f(or)g(regenerate)i Fs(configure)c Ft(using)h(a)i(new)m(er)150
-4986 y(v)m(ersion)24 b(of)g(Auto)s(conf.)39 b(If)24 b(y)m(ou)h(do)f
-(this,)h(mak)m(e)g(sure)f(y)m(ou)h(are)f(using)f(Auto)s(conf)i(v)m
-(ersion)e(2.50)j(or)f(new)m(er.)275 5121 y(Y)-8 b(ou)29
-b(can)f(remo)m(v)m(e)i(the)f(program)g(binaries)d(and)i(ob)5
-b(ject)29 b(\014les)f(from)g(the)h(source)f(co)s(de)h(directory)f(b)m
-(y)150 5230 y(t)m(yping)j(`)p Fs(make)e(clean)p Ft('.)42
-b(T)-8 b(o)32 b(also)f(remo)m(v)m(e)h(the)g(\014les)e(that)h
+b(they)h(can)g(b)s(e)e(considered)i(for)f(the)g(next)h(release.)275
+4766 y(The)24 b(\014le)i(`)p Fs(configure.in)p Ft(')c(is)k(used)e(to)j
+(create)g Fs(configure)22 b Ft(b)m(y)k(a)g(program)f(called)h(Auto)s
+(conf.)39 b(Y)-8 b(ou)150 4876 y(only)31 b(need)f(`)p
+Fs(configure.in)p Ft(')d(if)k(y)m(ou)f(w)m(an)m(t)i(to)f(c)m(hange)g
+(it)g(or)f(regenerate)i Fs(configure)c Ft(using)i(a)h(new)m(er)150
+4986 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(y)m(ou)h(are)f(using)g(Auto)s(conf)h(v)m
+(ersion)f(2.50)i(or)f(new)m(er.)275 5121 y(Y)-8 b(ou)29
+b(can)f(remo)m(v)m(e)i(the)f(program)g(binaries)f(and)g(ob)5
+b(ject)29 b(\014les)g(from)f(the)h(source)f(co)s(de)h(directory)g(b)m
+(y)150 5230 y(t)m(yping)j(`)p Fs(make)d(clean)p Ft('.)42
+b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g
 Fs(configure)e Ft(created)j(\(so)g(y)m(ou)g(can)f(compile)150
-5340 y(Bash)g(for)f(a)g(di\013eren)m(t)g(kind)f(of)h(computer\),)h(t)m
-(yp)s(e)g(`)p Fs(make)e(distclean)p Ft('.)p eop
+5340 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m
+(yp)s(e)g(`)p Fs(make)e(distclean)p Ft('.)p eop end
 %%Page: 116 122
-116 121 bop 150 -116 a Ft(116)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-150 299 y Fr(10.2)68 b(Compilers)46 b(and)f(Options)275
-560 y Ft(Some)40 b(systems)g(require)e(un)m(usual)g(options)h(for)h
-(compilation)f(or)h(linking)d(that)j(the)g Fs(configure)150
-669 y Ft(script)29 b(do)s(es)i(not)g(kno)m(w)f(ab)s(out.)41
-b(Y)-8 b(ou)31 b(can)g(giv)m(e)g Fs(configure)d Ft(initial)g(v)-5
-b(alues)30 b(for)g(v)-5 b(ariables)29 b(b)m(y)i(setting)150
-779 y(them)21 b(in)e(the)i(en)m(vironmen)m(t.)37 b(Using)20
-b(a)h(Bourne-compatible)f(shell,)h(y)m(ou)g(can)g(do)f(that)i(on)e(the)
-h(command)150 888 y(line)29 b(lik)m(e)g(this:)390 1039
-y Fs(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g(./configure)275
+TeXDict begin 116 121 bop 150 -116 a Ft(116)2527 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fr(10.2)68 b(Compilers)46
+b(and)f(Options)275 560 y Ft(Some)40 b(systems)g(require)f(un)m(usual)g
+(options)h(for)g(compilation)i(or)e(linking)g(that)g(the)g
+Fs(configure)150 669 y Ft(script)30 b(do)s(es)h(not)g(kno)m(w)f(ab)s
+(out.)41 b(Y)-8 b(ou)31 b(can)g(giv)m(e)h Fs(configure)c
+Ft(initial)k(v)-5 b(alues)31 b(for)f(v)-5 b(ariables)31
+b(b)m(y)g(setting)150 779 y(them)21 b(in)f(the)h(en)m(vironmen)m(t.)38
+b(Using)21 b(a)g(Bourne-compatible)h(shell,)h(y)m(ou)e(can)g(do)f(that)
+i(on)e(the)h(command)150 888 y(line)31 b(lik)m(e)g(this:)390
+1039 y Fs(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g(./configure)275
 1191 y Ft(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f
-Fs(env)e Ft(program,)h(y)m(ou)h(can)g(do)f(it)g(lik)m(e)g(this:)390
+Fs(env)e Ft(program,)h(y)m(ou)h(can)g(do)f(it)h(lik)m(e)h(this:)390
 1342 y Fs(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42
-b(LDFLAGS=-s)j(./configure)275 1493 y Ft(The)29 b(con\014guration)h
-(pro)s(cess)g(uses)g(GCC)g(to)h(build)c(Bash)k(if)e(it)h(is)g(a)m(v)-5
+b(LDFLAGS=-s)j(./configure)275 1493 y Ft(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 1792 y Fr(10.3)68 b(Compiling)46 b(F)-11
 b(or)45 b(Multiple)g(Arc)l(hitectures)275 2052 y Ft(Y)-8
-b(ou)28 b(can)h(compile)e(Bash)i(for)f(more)g(than)g(one)h(kind)d(of)j
-(computer)f(at)h(the)g(same)f(time,)h(b)m(y)f(placing)150
-2162 y(the)39 b(ob)5 b(ject)39 b(\014les)f(for)g(eac)m(h)i(arc)m
-(hitecture)f(in)e(their)h(o)m(wn)g(directory)-8 b(.)66
-b(T)-8 b(o)39 b(do)f(this,)i(y)m(ou)f(m)m(ust)f(use)h(a)150
-2271 y(v)m(ersion)32 b(of)h Fs(make)f Ft(that)i(supp)s(orts)d(the)i
-Fs(VPATH)e Ft(v)-5 b(ariable,)33 b(suc)m(h)f(as)i(GNU)f
+b(ou)28 b(can)h(compile)g(Bash)g(for)f(more)g(than)g(one)h(kind)e(of)i
+(computer)f(at)h(the)g(same)f(time,)i(b)m(y)e(placing)150
+2162 y(the)39 b(ob)5 b(ject)39 b(\014les)g(for)f(eac)m(h)i(arc)m
+(hitecture)g(in)e(their)h(o)m(wn)f(directory)-8 b(.)67
+b(T)-8 b(o)39 b(do)f(this,)j(y)m(ou)e(m)m(ust)f(use)h(a)150
+2271 y(v)m(ersion)33 b(of)g Fs(make)f Ft(that)i(supp)s(orts)d(the)i
+Fs(VPATH)e Ft(v)-5 b(ariable,)35 b(suc)m(h)d(as)i(GNU)f
 Fs(make)p Ft(.)47 b Fs(cd)33 b Ft(to)g(the)g(directory)150
 2381 y(where)23 b(y)m(ou)g(w)m(an)m(t)h(the)f(ob)5 b(ject)24
-b(\014les)e(and)g(executables)i(to)g(go)f(and)g(run)f(the)h
-Fs(configure)d Ft(script)i(from)h(the)150 2491 y(source)j(directory)-8
-b(.)39 b(Y)-8 b(ou)26 b(ma)m(y)g(need)g(to)g(supply)e(the)h(`)p
-Fs(--srcdir=PATH)p Ft(')e(argumen)m(t)j(to)h(tell)d Fs(configure)150
-2600 y Ft(where)43 b(the)h(source)g(\014les)f(are.)82
-b Fs(configure)41 b Ft(automatically)j(c)m(hec)m(ks)h(for)f(the)g
-(source)g(co)s(de)g(in)f(the)150 2710 y(directory)30
-b(that)h Fs(configure)d Ft(is)h(in)g(and)h(in)f(`..'.)275
+b(\014les)f(and)f(executables)j(to)f(go)f(and)g(run)f(the)h
+Fs(configure)d Ft(script)j(from)g(the)150 2491 y(source)j(directory)-8
+b(.)40 b(Y)-8 b(ou)26 b(ma)m(y)g(need)g(to)g(supply)f(the)g(`)p
+Fs(--srcdir=PATH)p Ft(')e(argumen)m(t)j(to)h(tell)f Fs(configure)150
+2600 y Ft(where)43 b(the)h(source)g(\014les)g(are.)82
+b Fs(configure)41 b Ft(automatically)47 b(c)m(hec)m(ks)e(for)f(the)g
+(source)g(co)s(de)g(in)g(the)150 2710 y(directory)31
+b(that)g Fs(configure)d Ft(is)i(in)g(and)g(in)g(`..'.)275
 2861 y(If)20 b(y)m(ou)h(ha)m(v)m(e)i(to)e(use)g(a)g Fs(make)f
 Ft(that)i(do)s(es)e(not)i(supp)s(orts)d(the)i Fs(VPATH)e
-Ft(v)-5 b(ariable,)22 b(y)m(ou)g(can)f(compile)f(Bash)150
-2971 y(for)33 b(one)h(arc)m(hitecture)g(at)g(a)g(time)f(in)f(the)i
-(source)g(co)s(de)f(directory)-8 b(.)50 b(After)34 b(y)m(ou)g(ha)m(v)m
-(e)h(installed)c(Bash)150 3080 y(for)f(one)h(arc)m(hitecture,)g(use)f
-(`)p Fs(make)g(distclean)p Ft(')e(b)s(efore)i(recon\014guring)f(for)h
+Ft(v)-5 b(ariable,)24 b(y)m(ou)e(can)f(compile)h(Bash)150
+2971 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 3080 y(for)c(one)h(arc)m(hitecture,)h(use)e
+(`)p Fs(make)g(distclean)p Ft(')e(b)s(efore)i(recon\014guring)g(for)g
 (another)g(arc)m(hitecture.)275 3231 y(Alternativ)m(ely)-8
-b(,)23 b(if)d(y)m(our)i(system)g(supp)s(orts)d(sym)m(b)s(olic)h(links,)
-i(y)m(ou)g(can)g(use)f(the)h(`)p Fs(support/mkclone)p
-Ft(')150 3341 y(script)g(to)i(create)g(a)f(build)d(tree)k(whic)m(h)e
-(has)g(sym)m(b)s(olic)g(links)e(bac)m(k)k(to)g(eac)m(h)g(\014le)e(in)g
-(the)h(source)g(directory)-8 b(.)150 3450 y(Here's)41
-b(an)f(example)h(that)g(creates)h(a)e(build)e(directory)i(in)f(the)i
-(curren)m(t)f(directory)g(from)g(a)h(source)150 3560
-y(directory)30 b(`)p Fs(/usr/gnu/src/bash-2.0)p Ft(':)390
+b(,)26 b(if)21 b(y)m(our)h(system)g(supp)s(orts)d(sym)m(b)s(olic)j
+(links,)i(y)m(ou)e(can)g(use)f(the)h(`)p Fs(support/mkclone)p
+Ft(')150 3341 y(script)h(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 3450 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 3560
+y(directory)31 b(`)p Fs(/usr/gnu/src/bash-2.0)p Ft(':)390
 3711 y Fs(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 3862 y
-Ft(The)c Fs(mkclone)e Ft(script)h(requires)g(Bash,)j(so)f(y)m(ou)f(m)m
-(ust)h(ha)m(v)m(e)g(already)f(built)e(Bash)i(for)g(at)h(least)g(one)150
-3972 y(arc)m(hitecture)31 b(b)s(efore)f(y)m(ou)h(can)f(create)i(build)c
-(directories)h(for)h(other)h(arc)m(hitectures.)150 4271
+Ft(The)c Fs(mkclone)e Ft(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
+3972 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 4271
 y Fr(10.4)68 b(Installation)47 b(Names)275 4531 y Ft(By)36
-b(default,)g(`)p Fs(make)29 b(install)p Ft(')34 b(will)g(install)f(in)m
-(to)j(`)p Fs(/usr/local/bin)p Ft(',)e(`)p Fs(/usr/local/man)p
-Ft(',)g(etc.)150 4641 y(Y)-8 b(ou)39 b(can)g(sp)s(ecify)e(an)i
-(installation)d(pre\014x)h(other)i(than)g(`)p Fs(/usr/local)p
-Ft(')d(b)m(y)i(giving)g Fs(configure)e Ft(the)150 4751
-y(option)k(`)p Fs(--prefix=)p Fj(PATH)11 b Ft(',)41 b(or)g(b)m(y)f(sp)s
-(ecifying)f(a)j(v)-5 b(alue)40 b(for)h(the)g Fs(DESTDIR)e
-Ft(`)p Fs(make)p Ft(')h(v)-5 b(ariable)40 b(when)150
-4860 y(running)28 b(`)p Fs(make)h(install)p Ft('.)275
-5011 y(Y)-8 b(ou)71 b(can)h(sp)s(ecify)e(separate)i(installation)d
-(pre\014xes)h(for)h(arc)m(hitecture-sp)s(eci\014c)g(\014les)g(and)150
-5121 y(arc)m(hitecture-indep)s(enden)m(t)36 b(\014les.)61
-b(If)37 b(y)m(ou)h(giv)m(e)f Fs(configure)e Ft(the)j(option)f(`)p
-Fs(--exec-prefix=)p Fj(PATH)11 b Ft(',)150 5230 y(`)p
-Fs(make)29 b(install)p Ft(')63 b(will)e(use)i Fq(P)-8
-b(A)g(TH)75 b Ft(as)64 b(the)g(pre\014x)e(for)i(installing)d(programs)i
-(and)h(libraries.)150 5340 y(Do)s(cumen)m(tation)31 b(and)f(other)h
-(data)g(\014les)e(will)f(still)g(use)i(the)h(regular)e(pre\014x.)p
-eop
+b(default,)h(`)p Fs(make)29 b(install)p Ft(')34 b(will)j(install)f(in)m
+(to)h(`)p Fs(/usr/local/bin)p Ft(',)d(`)p Fs(/usr/local/man)p
+Ft(',)g(etc.)150 4641 y(Y)-8 b(ou)39 b(can)g(sp)s(ecify)f(an)h
+(installation)h(pre\014x)d(other)i(than)g(`)p Fs(/usr/local)p
+Ft(')d(b)m(y)i(giving)i Fs(configure)c Ft(the)150 4751
+y(option)41 b(`)p Fs(--prefix=)p Fj(PATH)11 b Ft(',)41
+b(or)g(b)m(y)f(sp)s(ecifying)h(a)h(v)-5 b(alue)41 b(for)g(the)g
+Fs(DESTDIR)e Ft(`)p Fs(make)p Ft(')h(v)-5 b(ariable)42
+b(when)150 4860 y(running)29 b(`)p Fs(make)g(install)p
+Ft('.)275 5011 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 5121 y(arc)m(hitecture-indep)s(enden)m(t)38
+b(\014les.)62 b(If)37 b(y)m(ou)h(giv)m(e)g Fs(configure)d
+Ft(the)j(option)g(`)p Fs(--exec-prefix=)p Fj(PATH)11
+b Ft(',)150 5230 y(`)p Fs(make)29 b(install)p Ft(')63
+b(will)h(use)f Fq(P)-8 b(A)g(TH)75 b Ft(as)64 b(the)g(pre\014x)e(for)i
+(installing)h(programs)e(and)h(libraries.)150 5340 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.)p eop end
 %%Page: 117 123
-117 122 bop 150 -116 a Ft(Chapter)30 b(10:)41 b(Installing)28
-b(Bash)2356 b(117)150 299 y Fr(10.5)68 b(Sp)t(ecifying)45
-b(the)g(System)h(T)l(yp)t(e)275 539 y Ft(There)35 b(ma)m(y)h(b)s(e)f
-(some)h(features)g Fs(configure)d Ft(can)j(not)g(\014gure)f(out)g
-(automatically)-8 b(,)38 b(but)d(need)g(to)150 649 y(determine)g(b)m(y)
-h(the)h(t)m(yp)s(e)f(of)g(host)h(Bash)f(will)e(run)g(on.)58
-b(Usually)35 b Fs(configure)f Ft(can)i(\014gure)g(that)g(out,)150
-758 y(but)c(if)g(it)g(prin)m(ts)g(a)h(message)h(sa)m(ying)f(it)f(can)i
-(not)f(guess)g(the)g(host)g(t)m(yp)s(e,)h(giv)m(e)f(it)f(the)h(`)p
-Fs(--host=TYPE)p Ft(')150 868 y(option.)38 b(`)p Fs(TYPE)p
-Ft(')25 b(can)g(either)f(b)s(e)h(a)g(short)g(name)g(for)g(the)g(system)
+TeXDict begin 117 122 bop 150 -116 a Ft(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(117)150 299 y Fr(10.5)68
+b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)275 539
+y Ft(There)35 b(ma)m(y)h(b)s(e)f(some)h(features)g Fs(configure)d
+Ft(can)j(not)g(\014gure)f(out)g(automatically)-8 b(,)41
+b(but)35 b(need)g(to)150 649 y(determine)h(b)m(y)g(the)h(t)m(yp)s(e)f
+(of)g(host)h(Bash)f(will)h(run)d(on.)58 b(Usually)37
+b Fs(configure)d Ft(can)i(\014gure)g(that)g(out,)150
+758 y(but)c(if)h(it)g(prin)m(ts)g(a)g(message)h(sa)m(ying)g(it)f(can)h
+(not)f(guess)g(the)g(host)g(t)m(yp)s(e,)h(giv)m(e)g(it)f(the)g(`)p
+Fs(--host=TYPE)p Ft(')150 868 y(option.)39 b(`)p Fs(TYPE)p
+Ft(')25 b(can)g(either)g(b)s(e)g(a)g(short)g(name)g(for)g(the)g(system)
 g(t)m(yp)s(e,)h(suc)m(h)f(as)g(`)p Fs(sun4)p Ft(',)h(or)f(a)g
-(canonical)150 977 y(name)30 b(with)f(three)i(\014elds:)39
+(canonical)150 977 y(name)30 b(with)g(three)h(\014elds:)40
 b(`)p Fs(CPU-COMPANY-SYSTEM)p Ft(')26 b(\(e.g.,)32 b(`)p
-Fs(i386-unknown-freebsd4.2)p Ft('\).)275 1108 y(See)e(the)h(\014le)e(`)
-p Fs(support/config.sub)p Ft(')d(for)k(the)h(p)s(ossible)d(v)-5
-b(alues)29 b(of)i(eac)m(h)g(\014eld.)150 1354 y Fr(10.6)68
+Fs(i386-unknown-freebsd4.2)p Ft('\).)275 1108 y(See)e(the)h(\014le)f(`)
+p Fs(support/config.sub)p Ft(')c(for)k(the)h(p)s(ossible)f(v)-5
+b(alues)30 b(of)h(eac)m(h)g(\014eld.)150 1354 y Fr(10.6)68
 b(Sharing)45 b(Defaults)275 1594 y Ft(If)34 b(y)m(ou)i(w)m(an)m(t)g(to)
-g(set)g(default)e(v)-5 b(alues)35 b(for)g Fs(configure)e
-Ft(scripts)h(to)i(share,)g(y)m(ou)g(can)g(create)g(a)g(site)150
-1704 y(shell)46 b(script)g(called)h Fs(config.site)d
-Ft(that)k(giv)m(es)g(default)f(v)-5 b(alues)47 b(for)g(v)-5
-b(ariables)46 b(lik)m(e)h Fs(CC)p Ft(,)52 b Fs(cache_)150
+g(set)g(default)f(v)-5 b(alues)36 b(for)f Fs(configure)e
+Ft(scripts)i(to)h(share,)g(y)m(ou)g(can)g(create)g(a)g(site)150
+1704 y(shell)48 b(script)f(called)i Fs(config.site)44
+b Ft(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 Fs(CC)p Ft(,)j Fs(cache_)150
 1813 y(file)p Ft(,)43 b(and)e Fs(prefix)p Ft(.)73 b Fs(configure)39
-b Ft(lo)s(oks)i(for)g(`)p Fs(PREFIX/share/config.site)p
-Ft(')35 b(if)41 b(it)g(exists,)j(then)150 1923 y(`)p
-Fs(PREFIX/etc/config.site)p Ft(')20 b(if)25 b(it)g(exists.)39
+b Ft(lo)s(oks)j(for)f(`)p Fs(PREFIX/share/config.site)p
+Ft(')35 b(if)42 b(it)g(exists,)j(then)150 1923 y(`)p
+Fs(PREFIX/etc/config.site)p Ft(')20 b(if)26 b(it)g(exists.)40
 b(Or,)26 b(y)m(ou)g(can)g(set)g(the)g Fs(CONFIG_SITE)c
-Ft(en)m(vironmen)m(t)j(v)-5 b(ari-)150 2033 y(able)39
-b(to)h(the)g(lo)s(cation)f(of)g(the)h(site)f(script.)66
-b(A)40 b(w)m(arning:)57 b(the)40 b(Bash)g Fs(configure)c
-Ft(lo)s(oks)j(for)g(a)h(site)150 2142 y(script,)30 b(but)f(not)i(all)e
-Fs(configure)f Ft(scripts)h(do.)150 2388 y Fr(10.7)68
+Ft(en)m(vironmen)m(t)k(v)-5 b(ari-)150 2033 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 Fs(configure)c
+Ft(lo)s(oks)k(for)f(a)h(site)150 2142 y(script,)31 b(but)e(not)i(all)g
+Fs(configure)d Ft(scripts)i(do.)150 2388 y Fr(10.7)68
 b(Op)t(eration)46 b(Con)l(trols)275 2628 y Fs(configure)27
-b Ft(recognizes)k(the)g(follo)m(wing)e(options)h(to)h(con)m(trol)f(ho)m
-(w)h(it)f(op)s(erates.)150 2780 y Fs(--cache-file=)p
-Fj(file)630 2890 y Ft(Use)35 b(and)g(sa)m(v)m(e)h(the)f(results)f(of)h
-(the)h(tests)f(in)f Fq(\014le)39 b Ft(instead)34 b(of)i(`)p
-Fs(./config.cache)p Ft('.)51 b(Set)630 2999 y Fq(\014le)35
-b Ft(to)c(`)p Fs(/dev/null)p Ft(')d(to)j(disable)e(cac)m(hing,)i(for)f
-(debugging)f Fs(configure)p Ft(.)150 3151 y Fs(--help)192
-b Ft(Prin)m(t)29 b(a)i(summary)e(of)i(the)f(options)g(to)h
+b Ft(recognizes)32 b(the)f(follo)m(wing)h(options)f(to)g(con)m(trol)g
+(ho)m(w)g(it)g(op)s(erates.)150 2780 y Fs(--cache-file=)p
+Fj(file)630 2890 y Ft(Use)k(and)g(sa)m(v)m(e)h(the)f(results)g(of)g
+(the)h(tests)f(in)g Fq(\014le)40 b Ft(instead)35 b(of)h(`)p
+Fs(./config.cache)p Ft('.)51 b(Set)630 2999 y Fq(\014le)36
+b Ft(to)31 b(`)p Fs(/dev/null)p Ft(')d(to)j(disable)g(cac)m(hing,)h
+(for)e(debugging)g Fs(configure)p Ft(.)150 3151 y Fs(--help)192
+b Ft(Prin)m(t)30 b(a)h(summary)e(of)i(the)f(options)h(to)g
 Fs(configure)p Ft(,)d(and)i(exit.)150 3303 y Fs(--quiet)150
-3412 y(--silent)150 3522 y(-q)384 b Ft(Do)31 b(not)g(prin)m(t)e
-(messages)i(sa)m(ying)f(whic)m(h)g(c)m(hec)m(ks)h(are)g(b)s(eing)e
-(made.)150 3674 y Fs(--srcdir=)p Fj(dir)630 3783 y Ft(Lo)s(ok)j(for)g
-(the)g(Bash)g(source)h(co)s(de)f(in)f(directory)g Fq(dir)p
-Ft(.)44 b(Usually)31 b Fs(configure)e Ft(can)j(deter-)630
-3893 y(mine)d(that)i(directory)f(automatically)-8 b(.)150
-4045 y Fs(--version)630 4154 y Ft(Prin)m(t)28 b(the)i(v)m(ersion)f(of)h
+3412 y(--silent)150 3522 y(-q)384 b Ft(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 3674 y Fs(--srcdir=)p Fj(dir)630 3783 y Ft(Lo)s(ok)i(for)g
+(the)g(Bash)g(source)h(co)s(de)f(in)g(directory)g Fq(dir)p
+Ft(.)45 b(Usually)33 b Fs(configure)c Ft(can)j(deter-)630
+3893 y(mine)e(that)h(directory)g(automatically)-8 b(.)150
+4045 y Fs(--version)630 4154 y Ft(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 Fs(configure)d
-Ft(script,)i(and)g(exit.)275 4306 y Fs(configure)34 b
-Ft(also)j(accepts)h(some)g(other,)h(not)e(widely)e(used,)j(b)s
-(oilerplate)d(options.)60 b(`)p Fs(configure)150 4415
-y(--help)p Ft(')29 b(prin)m(ts)g(the)h(complete)h(list.)150
+Ft(script,)j(and)f(exit.)275 4306 y Fs(configure)34 b
+Ft(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s
+(oilerplate)g(options.)61 b(`)p Fs(configure)150 4415
+y(--help)p Ft(')29 b(prin)m(ts)h(the)g(complete)i(list.)150
 4661 y Fr(10.8)68 b(Optional)46 b(F)-11 b(eatures)275
 4902 y Ft(The)34 b(Bash)h Fs(configure)d Ft(has)j(a)g(n)m(um)m(b)s(er)f
-(of)h(`)p Fs(--enable-)p Fj(feature)11 b Ft(')30 b(options,)36
-b(where)f Fq(feature)40 b Ft(in-)150 5011 y(dicates)32
-b(an)g(optional)f(part)h(of)g(Bash.)45 b(There)32 b(are)g(also)g(sev)m
-(eral)g(`)p Fs(--with-)p Fj(package)11 b Ft(')29 b(options,)i(where)150
-5121 y Fq(pac)m(k)-5 b(age)35 b Ft(is)27 b(something)h(lik)m(e)g(`)p
-Fs(bash-malloc)p Ft(')d(or)j(`)p Fs(purify)p Ft('.)39
-b(T)-8 b(o)29 b(turn)e(o\013)h(the)h(default)e(use)h(of)g(a)h(pac)m(k-)
+(of)h(`)p Fs(--enable-)p Fj(feature)11 b Ft(')30 b(options,)37
+b(where)e Fq(feature)40 b Ft(in-)150 5011 y(dicates)33
+b(an)f(optional)h(part)f(of)g(Bash.)45 b(There)32 b(are)g(also)h(sev)m
+(eral)g(`)p Fs(--with-)p Fj(package)11 b Ft(')29 b(options,)j(where)150
+5121 y Fq(pac)m(k)-5 b(age)35 b Ft(is)28 b(something)h(lik)m(e)h(`)p
+Fs(bash-malloc)p Ft(')25 b(or)j(`)p Fs(purify)p Ft('.)39
+b(T)-8 b(o)29 b(turn)e(o\013)h(the)h(default)f(use)g(of)g(a)h(pac)m(k-)
 150 5230 y(age,)43 b(use)d(`)p Fs(--without-)p Fj(package)11
-b Ft('.)63 b(T)-8 b(o)40 b(con\014gure)g(Bash)f(without)g(a)h(feature)g
-(that)g(is)f(enabled)f(b)m(y)150 5340 y(default,)30 b(use)g(`)p
-Fs(--disable-)p Fj(feature)11 b Ft('.)p eop
+b Ft('.)63 b(T)-8 b(o)40 b(con\014gure)g(Bash)f(without)h(a)g(feature)g
+(that)g(is)g(enabled)f(b)m(y)150 5340 y(default,)31 b(use)f(`)p
+Fs(--disable-)p Fj(feature)11 b Ft('.)p eop end
 %%Page: 118 124
-118 123 bop 150 -116 a Ft(118)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-275 299 y(Here)21 b(is)f(a)h(complete)g(list)f(of)h(the)g(`)p
-Fs(--enable-)p Ft(')e(and)h(`)p Fs(--with-)p Ft(')g(options)g(that)h
-(the)g(Bash)g Fs(configure)150 408 y Ft(recognizes.)150
-589 y Fs(--with-afs)630 698 y Ft(De\014ne)31 b(if)e(y)m(ou)i(are)f
-(using)f(the)i(Andrew)e(File)h(System)g(from)g(T)-8 b(ransarc.)150
-872 y Fs(--with-bash-malloc)630 981 y Ft(Use)40 b(the)f(Bash)h(v)m
-(ersion)f(of)g Fs(malloc)f Ft(in)g(`)p Fs(lib/malloc/malloc.c)p
-Ft('.)63 b(This)38 b(is)g(not)i(the)630 1091 y(same)34
-b Fs(malloc)f Ft(that)h(app)s(ears)f(in)g Fl(gnu)h Ft(lib)s(c,)f(but)g
-(an)h(older)f(v)m(ersion)g(deriv)m(ed)g(from)h(the)630
-1200 y(4.2)45 b Fl(bsd)d Fs(malloc)p Ft(.)79 b(This)41
-b Fs(malloc)h Ft(is)h(v)m(ery)h(fast,)j(but)c(w)m(astes)h(some)g(space)
-g(on)g(eac)m(h)630 1310 y(allo)s(cation.)39 b(This)27
-b(option)g(is)h(enabled)f(b)m(y)h(default.)39 b(The)28
-b(`)p Fs(NOTES)p Ft(')f(\014le)h(con)m(tains)g(a)h(list)e(of)630
-1419 y(systems)e(for)h(whic)m(h)e(this)g(should)f(b)s(e)i(turned)f
-(o\013,)j(and)e Fs(configure)e Ft(disables)g(this)h(option)630
-1529 y(automatically)30 b(for)g(a)h(n)m(um)m(b)s(er)e(of)i(systems.)150
-1702 y Fs(--with-curses)630 1812 y Ft(Use)h(the)h(curses)e(library)f
-(instead)h(of)i(the)f(termcap)g(library)-8 b(.)44 b(This)31
-b(should)f(b)s(e)h(supplied)630 1921 y(if)e(y)m(our)i(system)f(has)g
-(an)h(inadequate)f(or)g(incomplete)g(termcap)g(database.)150
+TeXDict begin 118 123 bop 150 -116 a Ft(118)2527 b(Bash)31
+b(Reference)g(Man)m(ual)275 299 y(Here)21 b(is)g(a)g(complete)h(list)g
+(of)f(the)g(`)p Fs(--enable-)p Ft(')e(and)h(`)p Fs(--with-)p
+Ft(')g(options)h(that)g(the)g(Bash)g Fs(configure)150
+408 y Ft(recognizes.)150 589 y Fs(--with-afs)630 698
+y Ft(De\014ne)31 b(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 872 y Fs(--with-bash-malloc)630
+981 y Ft(Use)40 b(the)f(Bash)h(v)m(ersion)g(of)f Fs(malloc)f
+Ft(in)h(`)p Fs(lib/malloc/malloc.c)p Ft('.)63 b(This)39
+b(is)g(not)h(the)630 1091 y(same)34 b Fs(malloc)f Ft(that)h(app)s(ears)
+f(in)h Fl(gnu)g Ft(lib)s(c,)h(but)e(an)h(older)g(v)m(ersion)g(deriv)m
+(ed)g(from)g(the)630 1200 y(4.2)45 b Fl(bsd)d Fs(malloc)p
+Ft(.)79 b(This)42 b Fs(malloc)g Ft(is)i(v)m(ery)g(fast,)j(but)c(w)m
+(astes)h(some)g(space)g(on)g(eac)m(h)630 1310 y(allo)s(cation.)e(This)
+28 b(option)g(is)h(enabled)f(b)m(y)g(default.)40 b(The)28
+b(`)p Fs(NOTES)p Ft(')f(\014le)i(con)m(tains)g(a)g(list)g(of)630
+1419 y(systems)c(for)h(whic)m(h)f(this)g(should)f(b)s(e)h(turned)f
+(o\013,)j(and)e Fs(configure)e Ft(disables)i(this)g(option)630
+1529 y(automatically)33 b(for)d(a)h(n)m(um)m(b)s(er)e(of)i(systems.)150
+1702 y Fs(--with-curses)630 1812 y Ft(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 1921 y(if)f(y)m(our)h(system)f(has)g
+(an)h(inadequate)g(or)f(incomplete)i(termcap)e(database.)150
 2095 y Fs(--with-gnu-malloc)630 2204 y Ft(A)g(synon)m(ym)g(for)g
 Fs(--with-bash-malloc)p Ft(.)150 2378 y Fs(--with-installed-readlin)o
 (e[=)p Fj(P)o(REFI)o(X)11 b Fs(])630 2487 y Ft(De\014ne)26
-b(this)e(to)i(mak)m(e)h(Bash)f(link)d(with)h(a)i(lo)s(cally-installed)c
-(v)m(ersion)j(of)h(Readline)e(rather)630 2597 y(than)38
-b(the)h(v)m(ersion)f(in)g(`)p Fs(lib/readline)p Ft('.)62
-b(This)37 b(w)m(orks)i(only)e(with)h(Readline)f(4.3)j(and)630
-2706 y(later)28 b(v)m(ersions.)39 b(If)28 b Fq(PREFIX)37
-b Ft(is)27 b Fs(yes)g Ft(or)h(not)g(supplied,)d Fs(configure)h
-Ft(uses)h(the)h(v)-5 b(alues)28 b(of)630 2816 y(the)d(mak)m(e)g(v)-5
-b(ariables)23 b Fs(includedir)f Ft(and)h Fs(libdir)p
-Ft(,)h(whic)m(h)g(are)g(sub)s(directories)e(of)j Fs(prefix)630
-2926 y Ft(b)m(y)32 b(default,)f(to)i(\014nd)d(the)i(installed)e(v)m
-(ersion)h(of)h(Readline)f(if)g(it)g(is)g(not)h(in)f(the)h(standard)630
-3035 y(system)j(include)d(and)i(library)e(directories.)52
-b(If)34 b Fq(PREFIX)43 b Ft(is)34 b Fs(no)p Ft(,)h(Bash)f(links)f(with)
-g(the)630 3145 y(v)m(ersion)k(in)f(`)p Fs(lib/readline)p
-Ft('.)58 b(If)37 b Fq(PREFIX)46 b Ft(is)37 b(set)h(to)g(an)m(y)f(other)
-h(v)-5 b(alue,)38 b Fs(configure)630 3254 y Ft(treats)27
-b(it)f(as)g(a)h(directory)f(pathname)g(and)f(lo)s(oks)h(for)g(the)g
-(installed)e(v)m(ersion)i(of)g(Readline)630 3364 y(in)33
-b(sub)s(directories)e(of)j(that)h(directory)f(\(include)e(\014les)h(in)
+b(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 2597 y(than)38
+b(the)h(v)m(ersion)g(in)g(`)p Fs(lib/readline)p Ft('.)62
+b(This)38 b(w)m(orks)h(only)f(with)h(Readline)g(4.3)h(and)630
+2706 y(later)29 b(v)m(ersions.)40 b(If)28 b Fq(PREFIX)37
+b Ft(is)28 b Fs(yes)f Ft(or)h(not)g(supplied,)f Fs(configure)f
+Ft(uses)h(the)h(v)-5 b(alues)29 b(of)630 2816 y(the)c(mak)m(e)g(v)-5
+b(ariables)25 b Fs(includedir)d Ft(and)h Fs(libdir)p
+Ft(,)h(whic)m(h)h(are)f(sub)s(directories)g(of)h Fs(prefix)630
+2926 y Ft(b)m(y)32 b(default,)g(to)h(\014nd)d(the)i(installed)h(v)m
+(ersion)f(of)g(Readline)h(if)f(it)g(is)g(not)g(in)g(the)g(standard)630
+3035 y(system)j(include)f(and)g(library)g(directories.)54
+b(If)34 b Fq(PREFIX)43 b Ft(is)35 b Fs(no)p Ft(,)g(Bash)f(links)h(with)
+f(the)630 3145 y(v)m(ersion)k(in)f(`)p Fs(lib/readline)p
+Ft('.)58 b(If)37 b Fq(PREFIX)46 b Ft(is)38 b(set)g(to)g(an)m(y)f(other)
+h(v)-5 b(alue,)39 b Fs(configure)630 3254 y Ft(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 3364 y(in)34
+b(sub)s(directories)f(of)h(that)h(directory)g(\(include)f(\014les)g(in)
 g Fq(PREFIX)9 b Ft(/)p Fs(include)32 b Ft(and)i(the)630
-3473 y(library)28 b(in)h Fq(PREFIX)9 b Ft(/)p Fs(lib)p
-Ft(\).)150 3647 y Fs(--with-purify)630 3756 y Ft(De\014ne)23
-b(this)f(to)i(use)f(the)g(Purify)e(memory)i(allo)s(cation)f(c)m(hec)m
-(k)m(er)j(from)e(Rational)g(Soft)m(w)m(are.)150 3930
-y Fs(--enable-minimal-config)630 4039 y Ft(This)f(pro)s(duces)g(a)i
-(shell)e(with)g(minimal)f(features,)k(close)f(to)g(the)g(historical)e
-(Bourne)h(shell.)275 4219 y(There)g(are)i(sev)m(eral)f(`)p
-Fs(--enable-)p Ft(')e(options)i(that)g(alter)g(ho)m(w)h(Bash)f(is)f
-(compiled)g(and)g(link)m(ed,)h(rather)150 4329 y(than)30
-b(c)m(hanging)g(run-time)f(features.)150 4509 y Fs(--enable-largefile)
-630 4619 y Ft(Enable)75 b(supp)s(ort)g(for)h(large)g(\014les)f(\()p
+3473 y(library)c(in)g Fq(PREFIX)9 b Ft(/)p Fs(lib)p Ft(\).)150
+3647 y Fs(--with-purify)630 3756 y Ft(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 3930 y Fs(--enable-minimal-config)630
+4039 y Ft(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
+4219 y(There)g(are)i(sev)m(eral)g(`)p Fs(--enable-)p
+Ft(')d(options)j(that)f(alter)h(ho)m(w)g(Bash)f(is)g(compiled)h(and)e
+(link)m(ed,)j(rather)150 4329 y(than)k(c)m(hanging)h(run-time)f
+(features.)150 4509 y Fs(--enable-largefile)630 4619
+y Ft(Enable)76 b(supp)s(ort)f(for)h(large)h(\014les)f(\()p
 Fs(http://www.sas.com/standar)o(ds/l)o(arge)o(_)630 4728
-y(file/x_open.20Mar96.html)o Ft(\))23 b(if)k(the)h(op)s(erating)g
-(system)g(requires)f(sp)s(ecial)f(compiler)630 4838 y(options)44
-b(to)h(build)c(programs)j(whic)m(h)f(can)h(access)i(large)e(\014les.)81
-b(This)43 b(is)g(enabled)g(b)m(y)630 4948 y(default,)30
-b(if)f(the)i(op)s(erating)f(system)g(pro)m(vides)f(large)i(\014le)e
+y(file/x_open.20Mar96.html)o Ft(\))23 b(if)28 b(the)g(op)s(erating)h
+(system)f(requires)g(sp)s(ecial)g(compiler)630 4838 y(options)45
+b(to)g(build)e(programs)h(whic)m(h)g(can)g(access)i(large)f(\014les.)82
+b(This)44 b(is)g(enabled)g(b)m(y)630 4948 y(default,)31
+b(if)f(the)h(op)s(erating)g(system)f(pro)m(vides)g(large)i(\014le)e
 (supp)s(ort.)150 5121 y Fs(--enable-profiling)630 5230
-y Ft(This)h(builds)e(a)k(Bash)g(binary)e(that)i(pro)s(duces)e
-(pro\014ling)f(information)h(to)j(b)s(e)d(pro)s(cessed)630
-5340 y(b)m(y)g Fs(gprof)f Ft(eac)m(h)j(time)e(it)g(is)f(executed.)p
-eop
+y Ft(This)h(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
+5340 y(b)m(y)g Fs(gprof)f Ft(eac)m(h)j(time)f(it)g(is)f(executed.)p
+eop end
 %%Page: 119 125
-119 124 bop 150 -116 a Ft(Chapter)30 b(10:)41 b(Installing)28
-b(Bash)2356 b(119)150 299 y Fs(--enable-static-link)630
-408 y Ft(This)36 b(causes)i(Bash)f(to)h(b)s(e)f(link)m(ed)f(statically)
--8 b(,)40 b(if)c Fs(gcc)h Ft(is)f(b)s(eing)g(used.)61
-b(This)36 b(could)h(b)s(e)630 518 y(used)30 b(to)h(build)c(a)k(v)m
-(ersion)f(to)h(use)f(as)g(ro)s(ot's)h(shell.)275 663
-y(The)f(`)p Fs(minimal-config)p Ft(')d(option)j(can)h(b)s(e)f(used)f
-(to)j(disable)c(all)i(of)h(the)f(follo)m(wing)f(options,)i(but)e(it)150
-772 y(is)g(pro)s(cessed)h(\014rst,)g(so)h(individual)26
-b(options)j(ma)m(y)i(b)s(e)f(enabled)f(using)g(`)p Fs(enable-)p
-Fj(feature)11 b Ft('.)275 899 y(All)35 b(of)i(the)f(follo)m(wing)f
-(options)h(except)i(for)e(`)p Fs(disabled-builtins)p
-Ft(')d(and)j(`)p Fs(xpg-echo-default)p Ft(')150 1009
-y(are)26 b(enabled)f(b)m(y)h(default,)g(unless)f(the)h(op)s(erating)f
-(system)h(do)s(es)g(not)g(pro)m(vide)f(the)h(necessary)g(supp)s(ort.)
-150 1154 y Fs(--enable-alias)630 1263 y Ft(Allo)m(w)39
-b(alias)g(expansion)g(and)g(include)e(the)j Fs(alias)f
-Ft(and)g Fs(unalias)e Ft(builtins)g(\(see)j(Sec-)630
-1373 y(tion)30 b(6.6)h([Aliases],)g(page)g(71\).)150
-1518 y Fs(--enable-arith-for-comma)o(nd)630 1627 y Ft(Include)20
-b(supp)s(ort)h(for)g(the)i(alternate)f(form)g(of)g(the)g
-Fs(for)f Ft(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)g(the)630
-1737 y(C)30 b(language)h Fs(for)e Ft(statemen)m(t)j(\(see)g(Section)e
-(3.2.4.1)j([Lo)s(oping)c(Constructs],)i(page)g(9\).)150
-1881 y Fs(--enable-array-variables)630 1991 y Ft(Include)g(supp)s(ort)h
-(for)h(one-dimensional)e(arra)m(y)i(shell)f(v)-5 b(ariables)31
-b(\(see)j(Section)f(6.7)i([Ar-)630 2101 y(ra)m(ys],)c(page)g(72\).)150
-2245 y Fs(--enable-bang-history)630 2355 y Ft(Include)k(supp)s(ort)g
-(for)h Fs(csh)p Ft(-lik)m(e)f(history)h(substitution)e(\(see)j(Section)
-f(9.3)i([History)e(In-)630 2464 y(teraction],)c(page)f(111\).)150
-2609 y Fs(--enable-brace-expansion)630 2719 y Ft(Include)39
-b Fs(csh)p Ft(-lik)m(e)g(brace)h(expansion)f(\()i Fs(b{a,b}c)2445
-2715 y Fp(7!)2576 2719 y Fs(bac)30 b(bbc)39 b Ft(\).)71
-b(See)40 b(Section)g(3.5.1)630 2828 y([Brace)32 b(Expansion],)d(page)i
-(17,)h(for)e(a)g(complete)h(description.)150 2973 y Fs
-(--enable-command-timing)630 3082 y Ft(Include)42 b(supp)s(ort)g(for)h
-(recognizing)g Fs(time)g Ft(as)g(a)h(reserv)m(ed)g(w)m(ord)f(and)g(for)
-h(displa)m(ying)630 3192 y(timing)35 b(statistics)h(for)g(the)g(pip)s
-(eline)d(follo)m(wing)i Fs(time)g Ft(\(see)i(Section)f(3.2.2)i([Pip)s
-(elines],)630 3302 y(page)24 b(8\).)39 b(This)22 b(allo)m(ws)g(pip)s
-(elines)e(as)k(w)m(ell)e(as)i(shell)d(builtins)f(and)j(functions)f(to)i
-(b)s(e)e(timed.)150 3446 y Fs(--enable-cond-command)630
-3556 y Ft(Include)32 b(supp)s(ort)g(for)i(the)g Fs([[)f
-Ft(conditional)f(command.)51 b(\(see)34 b(Section)g(3.2.4.2)i([Condi-)
-630 3665 y(tional)30 b(Constructs],)g(page)h(10\).)150
-3810 y Fs(--enable-cond-regexp)630 3920 y Ft(Include)e(supp)s(ort)g
-(for)i(matc)m(hing)g(POSIX)e(regular)h(expressions)g(using)f(the)i(`)p
-Fs(=~)p Ft(')g(binary)630 4029 y(op)s(erator)25 b(in)e(the)i
-Fs([[)f Ft(conditional)e(command.)39 b(\(see)25 b(Section)g(3.2.4.2)i
-([Conditional)22 b(Con-)630 4139 y(structs],)31 b(page)g(10\).)150
-4284 y Fs(--enable-directory-stack)630 4393 y Ft(Include)h(supp)s(ort)h
-(for)h(a)g Fs(csh)p Ft(-lik)m(e)f(directory)g(stac)m(k)j(and)d(the)i
+TeXDict begin 119 124 bop 150 -116 a Ft(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(119)150 299 y Fs(--enable-static-link)630
+408 y Ft(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 Fs(gcc)g Ft(is)g(b)s(eing)g(used.)61
+b(This)37 b(could)h(b)s(e)630 518 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 663
+y(The)f(`)p Fs(minimal-config)p Ft(')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
+772 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 Fs(enable-)p Fj(feature)11
+b Ft('.)275 899 y(All)37 b(of)g(the)f(follo)m(wing)i(options)f(except)h
+(for)e(`)p Fs(disabled-builtins)p Ft(')d(and)j(`)p Fs(xpg-echo-default)
+p Ft(')150 1009 y(are)26 b(enabled)g(b)m(y)g(default,)h(unless)f(the)g
+(op)s(erating)g(system)g(do)s(es)g(not)g(pro)m(vide)g(the)g(necessary)g
+(supp)s(ort.)150 1154 y Fs(--enable-alias)630 1263 y
+Ft(Allo)m(w)41 b(alias)g(expansion)f(and)f(include)g(the)h
+Fs(alias)f Ft(and)g Fs(unalias)e Ft(builtins)j(\(see)g(Sec-)630
+1373 y(tion)31 b(6.6)g([Aliases],)i(page)e(71\).)150
+1518 y Fs(--enable-arith-for-comma)o(nd)630 1627 y Ft(Include)21
+b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g
+Fs(for)f Ft(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630
+1737 y(C)30 b(language)i Fs(for)d Ft(statemen)m(t)j(\(see)g(Section)f
+(3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(9\).)150
+1881 y Fs(--enable-array-variables)630 1991 y Ft(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 2101 y(ra)m(ys],)c(page)g(72\).)150
+2245 y Fs(--enable-bang-history)630 2355 y Ft(Include)36
+b(supp)s(ort)f(for)h Fs(csh)p Ft(-lik)m(e)h(history)g(substitution)f
+(\(see)h(Section)g(9.3)h([History)f(In-)630 2464 y(teraction],)c(page)e
+(111\).)150 2609 y Fs(--enable-brace-expansion)630 2719
+y Ft(Include)40 b Fs(csh)p Ft(-lik)m(e)h(brace)f(expansion)g(\()h
+Fs(b{a,b}c)2445 2715 y Fp(7!)2576 2719 y Fs(bac)30 b(bbc)39
+b Ft(\).)71 b(See)40 b(Section)h(3.5.1)630 2828 y([Brace)32
+b(Expansion],)e(page)h(17,)h(for)e(a)g(complete)i(description.)150
+2973 y Fs(--enable-command-timing)630 3082 y Ft(Include)43
+b(supp)s(ort)f(for)h(recognizing)i Fs(time)e Ft(as)g(a)h(reserv)m(ed)g
+(w)m(ord)f(and)g(for)h(displa)m(ying)630 3192 y(timing)37
+b(statistics)h(for)e(the)g(pip)s(eline)g(follo)m(wing)i
+Fs(time)d Ft(\(see)i(Section)g(3.2.2)h([Pip)s(elines],)630
+3302 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 3446 y Fs(--enable-cond-command)630 3556 y Ft(Include)33
+b(supp)s(ort)f(for)i(the)g Fs([[)f Ft(conditional)i(command.)51
+b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 3665 y(tional)c
+(Constructs],)e(page)h(10\).)150 3810 y Fs(--enable-cond-regexp)630
+3920 y Ft(Include)f(supp)s(ort)f(for)i(matc)m(hing)h(POSIX)d(regular)i
+(expressions)g(using)f(the)h(`)p Fs(=~)p Ft(')g(binary)630
+4029 y(op)s(erator)25 b(in)f(the)h Fs([[)f Ft(conditional)h(command.)39
+b(\(see)25 b(Section)h(3.2.4.2)h([Conditional)e(Con-)630
+4139 y(structs],)31 b(page)g(10\).)150 4284 y Fs
+(--enable-directory-stack)630 4393 y Ft(Include)i(supp)s(ort)g(for)h(a)
+g Fs(csh)p Ft(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i
 Fs(pushd)p Ft(,)f Fs(popd)p Ft(,)g(and)f Fs(dirs)630
-4503 y Ft(builtins)27 b(\(see)k(Section)f(6.8)i([The)e(Directory)h
-(Stac)m(k],)h(page)f(73\).)150 4647 y Fs(--enable-disabled-builti)o(ns)
-630 4757 y Ft(Allo)m(w)38 b(builtin)d(commands)j(to)h(b)s(e)f(in)m(v)m
-(ok)m(ed)h(via)f(`)p Fs(builtin)29 b(xxx)p Ft(')37 b(ev)m(en)j(after)f
-Fs(xxx)e Ft(has)630 4867 y(b)s(een)31 b(disabled)e(using)h(`)p
-Fs(enable)e(-n)i(xxx)p Ft('.)43 b(See)32 b(Section)f(4.2)i([Bash)e
-(Builtins],)f(page)i(39,)630 4976 y(for)e(details)g(of)g(the)h
-Fs(builtin)d Ft(and)i Fs(enable)e Ft(builtin)f(commands.)150
-5121 y Fs(--enable-dparen-arithmet)o(ic)630 5230 y Ft(Include)41
-b(supp)s(ort)g(for)h(the)h Fs(\(\(...)o(\)\))f Ft(command)g(\(see)i
-(Section)e(3.2.4.2)j([Conditional)630 5340 y(Constructs],)30
-b(page)h(10\).)p eop
+4503 y Ft(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m
+(k],)g(page)f(73\).)150 4647 y Fs(--enable-disabled-builti)o(ns)630
+4757 y Ft(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 Fs(builtin)29 b(xxx)p Ft(')37 b(ev)m(en)j(after)f
+Fs(xxx)e Ft(has)630 4867 y(b)s(een)31 b(disabled)g(using)g(`)p
+Fs(enable)d(-n)i(xxx)p Ft('.)43 b(See)32 b(Section)g(4.2)h([Bash)e
+(Builtins],)i(page)f(39,)630 4976 y(for)e(details)i(of)e(the)h
+Fs(builtin)d Ft(and)i Fs(enable)e Ft(builtin)i(commands.)150
+5121 y Fs(--enable-dparen-arithmet)o(ic)630 5230 y Ft(Include)42
+b(supp)s(ort)f(for)h(the)h Fs(\(\(...)o(\)\))f Ft(command)g(\(see)i
+(Section)f(3.2.4.2)i([Conditional)630 5340 y(Constructs],)30
+b(page)h(10\).)p eop end
 %%Page: 120 126
-120 125 bop 150 -116 a Ft(120)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-150 299 y Fs(--enable-extended-glob)630 408 y Ft(Include)39
-b(supp)s(ort)f(for)i(the)h(extended)f(pattern)h(matc)m(hing)f(features)
-h(describ)s(ed)d(ab)s(o)m(v)m(e)630 518 y(under)29 b(Section)h(3.5.8.1)
-j([P)m(attern)e(Matc)m(hing],)h(page)f(23.)150 682 y
-Fs(--enable-help-builtin)630 792 y Ft(Include)23 b(the)i
-Fs(help)f Ft(builtin,)e(whic)m(h)i(displa)m(ys)e(help)i(on)g(shell)f
-(builtins)e(and)k(v)-5 b(ariables)23 b(\(see)630 902
-y(Section)30 b(4.2)i([Bash)e(Builtins],)f(page)i(39\).)150
-1066 y Fs(--enable-history)630 1176 y Ft(Include)d(command)h(history)g
-(and)g(the)h Fs(fc)f Ft(and)g Fs(history)e Ft(builtin)g(commands)i
-(\(see)h(Sec-)630 1285 y(tion)g(9.1)h([Bash)g(History)f(F)-8
-b(acilities],)30 b(page)h(109\).)150 1450 y Fs(--enable-job-control)630
-1559 y Ft(This)d(enables)i(the)g(job)g(con)m(trol)g(features)h(\(see)g
-(Chapter)f(7)g([Job)g(Con)m(trol],)g(page)h(79\),)h(if)630
-1669 y(the)f(op)s(erating)e(system)i(supp)s(orts)d(them.)150
-1833 y Fs(--enable-multibyte)630 1943 y Ft(This)g(enables)i(supp)s(ort)
-e(for)i(m)m(ultib)m(yte)f(c)m(haracters)i(if)e(the)h(op)s(erating)g
-(system)g(pro)m(vides)630 2052 y(the)h(necessary)f(supp)s(ort.)150
-2217 y Fs(--enable-net-redirection)o(s)630 2326 y Ft(This)20
-b(enables)h(the)h(sp)s(ecial)f(handling)e(of)j(\014lenames)f(of)h(the)g
-(form)f Fs(/dev/tcp/)p Fj(host)11 b Fs(/)p Fj(port)630
-2436 y Ft(and)29 b Fs(/dev/udp/)p Fj(host)11 b Fs(/)p
-Fj(port)34 b Ft(when)28 b(used)g(in)g(redirections)g(\(see)i(Section)f
-(3.6)h([Redirec-)630 2545 y(tions],)g(page)h(24\).)150
-2710 y Fs(--enable-process-substit)o(utio)o(n)630 2819
-y Ft(This)48 b(enables)i(pro)s(cess)g(substitution)e(\(see)j(Section)f
-(3.5.6)i([Pro)s(cess)e(Substitution],)630 2929 y(page)31
-b(22\))h(if)d(the)i(op)s(erating)e(system)i(pro)m(vides)e(the)i
-(necessary)g(supp)s(ort.)150 3093 y Fs(--enable-prompt-string-d)o(ecod)
-o(ing)630 3203 y Ft(T)-8 b(urn)46 b(on)h(the)h(in)m(terpretation)e(of)i
-(a)g(n)m(um)m(b)s(er)e(of)h(bac)m(kslash-escap)s(ed)g(c)m(haracters)i
-(in)630 3313 y(the)39 b Fs($PS1)p Ft(,)g Fs($PS2)p Ft(,)h
-Fs($PS3)p Ft(,)f(and)f Fs($PS4)f Ft(prompt)h(strings.)63
-b(See)39 b(Section)f(6.9)i([Prin)m(ting)d(a)630 3422
-y(Prompt],)30 b(page)h(75,)h(for)e(a)h(complete)g(list)e(of)h(prompt)g
-(string)f(escap)s(e)i(sequences.)150 3587 y Fs(--enable-progcomp)630
-3696 y Ft(Enable)c(the)h(programmable)f(completion)h(facilities)e
-(\(see)j(Section)f(8.6)h([Programmable)630 3806 y(Completion],)g(page)j
-(103\).)42 b(If)30 b(Readline)f(is)g(not)i(enabled,)e(this)h(option)g
-(has)g(no)g(e\013ect.)150 3970 y Fs(--enable-readline)630
-4080 y Ft(Include)d(supp)s(ort)g(for)h(command-line)f(editing)g(and)h
-(history)f(with)g(the)i(Bash)g(v)m(ersion)f(of)630 4189
-y(the)j(Readline)e(library)f(\(see)j(Chapter)f(8)g([Command)g(Line)f
-(Editing],)g(page)i(83\).)150 4354 y Fs(--enable-restricted)630
-4463 y Ft(Include)40 b(supp)s(ort)g(for)i(a)g Fq(restricted)f(shell)p
-Ft(.)73 b(If)42 b(this)e(is)h(enabled,)j(Bash,)h(when)c(called)630
-4573 y(as)f Fs(rbash)p Ft(,)h(en)m(ters)f(a)g(restricted)g(mo)s(de.)68
-b(See)40 b(Section)g(6.10)h([The)f(Restricted)g(Shell],)630
-4682 y(page)31 b(76,)h(for)e(a)g(description)f(of)h(restricted)g(mo)s
-(de.)150 4847 y Fs(--enable-select)630 4956 y Ft(Include)k(the)h
-Fs(select)f Ft(builtin,)f(whic)m(h)h(allo)m(ws)h(the)h(generation)f(of)
-h(simple)d(men)m(us)i(\(see)630 5066 y(Section)30 b(3.2.4.2)j
-([Conditional)28 b(Constructs],)j(page)g(10\).)150 5230
+TeXDict begin 120 125 bop 150 -116 a Ft(120)2527 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fs(--enable-extended-glob)630
+408 y Ft(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
+518 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i
+(page)e(23.)150 682 y Fs(--enable-help-builtin)630 792
+y Ft(Include)24 b(the)h Fs(help)f Ft(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 902 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f(39\).)
+150 1066 y Fs(--enable-history)630 1176 y Ft(Include)e(command)g
+(history)h(and)f(the)h Fs(fc)f Ft(and)g Fs(history)e
+Ft(builtin)j(commands)f(\(see)h(Sec-)630 1285 y(tion)h(9.1)g([Bash)g
+(History)g(F)-8 b(acilities],)34 b(page)d(109\).)150
+1450 y Fs(--enable-job-control)630 1559 y Ft(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(79\),)h(if)630 1669 y(the)f(op)s(erating)f(system)h
+(supp)s(orts)d(them.)150 1833 y Fs(--enable-multibyte)630
+1943 y Ft(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
+2052 y(the)h(necessary)f(supp)s(ort.)150 2217 y Fs
+(--enable-net-redirection)o(s)630 2326 y Ft(This)21 b(enables)h(the)g
+(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g(form)f
+Fs(/dev/tcp/)p Fj(host)11 b Fs(/)p Fj(port)630 2436 y
+Ft(and)29 b Fs(/dev/udp/)p Fj(host)11 b Fs(/)p Fj(port)34
+b Ft(when)28 b(used)g(in)h(redirections)h(\(see)g(Section)g(3.6)g
+([Redirec-)630 2545 y(tions],)h(page)g(24\).)150 2710
+y Fs(--enable-process-substit)o(utio)o(n)630 2819 y Ft(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 2929 y(page)31 b(22\))h(if)e(the)h(op)s
+(erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150
+3093 y Fs(--enable-prompt-string-d)o(ecod)o(ing)630 3203
+y Ft(T)-8 b(urn)46 b(on)h(the)h(in)m(terpretation)g(of)g(a)g(n)m(um)m
+(b)s(er)e(of)h(bac)m(kslash-escap)s(ed)h(c)m(haracters)h(in)630
+3313 y(the)39 b Fs($PS1)p Ft(,)g Fs($PS2)p Ft(,)h Fs($PS3)p
+Ft(,)f(and)f Fs($PS4)f Ft(prompt)h(strings.)64 b(See)39
+b(Section)g(6.9)h([Prin)m(ting)f(a)630 3422 y(Prompt],)30
+b(page)h(75,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g
+(escap)s(e)h(sequences.)150 3587 y Fs(--enable-progcomp)630
+3696 y Ft(Enable)d(the)g(programmable)g(completion)i(facilities)g
+(\(see)f(Section)g(8.6)g([Programmable)630 3806 y(Completion],)i(page)h
+(103\).)42 b(If)30 b(Readline)h(is)f(not)h(enabled,)f(this)h(option)g
+(has)f(no)g(e\013ect.)150 3970 y Fs(--enable-readline)630
+4080 y Ft(Include)e(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 4189
+y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g
+(Editing],)h(page)g(83\).)150 4354 y Fs(--enable-restricted)630
+4463 y Ft(Include)41 b(supp)s(ort)f(for)i(a)g Fq(restricted)g(shell)p
+Ft(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630
+4573 y(as)f Fs(rbash)p Ft(,)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
+4682 y(page)31 b(76,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s
+(de.)150 4847 y Fs(--enable-select)630 4956 y Ft(Include)k(the)g
+Fs(select)f Ft(builtin,)i(whic)m(h)f(allo)m(ws)i(the)f(generation)g(of)
+g(simple)f(men)m(us)g(\(see)630 5066 y(Section)c(3.2.4.2)i
+([Conditional)e(Constructs],)g(page)g(10\).)150 5230
 y Fs(--enable-usg-echo-defaul)o(t)630 5340 y Ft(A)f(synon)m(ym)g(for)g
-Fs(--enable-xpg-echo-default)p Ft(.)p eop
+Fs(--enable-xpg-echo-default)p Ft(.)p eop end
 %%Page: 121 127
-121 126 bop 150 -116 a Ft(Chapter)30 b(10:)41 b(Installing)28
-b(Bash)2356 b(121)150 299 y Fs(--enable-xpg-echo-defaul)o(t)630
-408 y Ft(Mak)m(e)26 b(the)f Fs(echo)e Ft(builtin)f(expand)i(bac)m
-(kslash-escap)s(ed)g(c)m(haracters)i(b)m(y)f(default,)g(without)630
-518 y(requiring)39 b(the)i(`)p Fs(-e)p Ft(')g(option.)72
-b(This)40 b(sets)h(the)g(default)g(v)-5 b(alue)40 b(of)i(the)f
-Fs(xpg_echo)e Ft(shell)630 628 y(option)25 b(to)h Fs(on)p
-Ft(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)g Fs(echo)e Ft(b)s(eha)m(v)m(e)
-i(more)g(lik)m(e)f(the)h(v)m(ersion)f(sp)s(eci\014ed)630
-737 y(in)40 b(the)i(Single)e(Unix)g(Sp)s(eci\014cation,)j(v)m(ersion)f
-(2.)74 b(See)42 b(Section)f(4.2)i([Bash)f(Builtins],)630
-847 y(page)31 b(39,)h(for)e(a)g(description)f(of)h(the)h(escap)s(e)g
-(sequences)f(that)h Fs(echo)f Ft(recognizes.)275 1006
-y(The)23 b(\014le)h(`)p Fs(config-top.h)p Ft(')d(con)m(tains)k(C)f
-(Prepro)s(cessor)g(`)p Fs(#define)p Ft(')e(statemen)m(ts)k(for)f
-(options)e(whic)m(h)150 1116 y(are)35 b(not)g(settable)h(from)e
+TeXDict begin 121 126 bop 150 -116 a Ft(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(121)150 299 y Fs
+(--enable-xpg-echo-defaul)o(t)630 408 y Ft(Mak)m(e)26
+b(the)f Fs(echo)e Ft(builtin)i(expand)f(bac)m(kslash-escap)s(ed)h(c)m
+(haracters)h(b)m(y)f(default,)h(without)630 518 y(requiring)41
+b(the)g(`)p Fs(-e)p Ft(')g(option.)73 b(This)41 b(sets)g(the)g(default)
+h(v)-5 b(alue)41 b(of)h(the)f Fs(xpg_echo)e Ft(shell)630
+628 y(option)26 b(to)g Fs(on)p Ft(,)g(whic)m(h)g(mak)m(es)g(the)g(Bash)
+g Fs(echo)e Ft(b)s(eha)m(v)m(e)i(more)g(lik)m(e)h(the)f(v)m(ersion)g
+(sp)s(eci\014ed)630 737 y(in)41 b(the)h(Single)g(Unix)f(Sp)s
+(eci\014cation,)k(v)m(ersion)e(2.)74 b(See)42 b(Section)g(4.2)h([Bash)f
+(Builtins],)630 847 y(page)31 b(39,)h(for)e(a)g(description)h(of)f(the)
+h(escap)s(e)g(sequences)f(that)h Fs(echo)f Ft(recognizes.)275
+1006 y(The)23 b(\014le)i(`)p Fs(config-top.h)p Ft(')c(con)m(tains)26
+b(C)e(Prepro)s(cessor)g(`)p Fs(#define)p Ft(')e(statemen)m(ts)k(for)f
+(options)f(whic)m(h)150 1116 y(are)35 b(not)g(settable)i(from)d
 Fs(configure)p Ft(.)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 1225
-y(the)h(consequences)g(if)e(y)m(ou)i(do.)55 b(Read)36
-b(the)g(commen)m(ts)g(asso)s(ciated)g(with)e(eac)m(h)j(de\014nition)c
-(for)i(more)150 1335 y(information)29 b(ab)s(out)h(its)g(e\013ect.)p
-eop
+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 1335 y(information)c(ab)s(out)f(its)h(e\013ect.)p
+eop end
 %%Page: 122 128
-122 127 bop 150 -116 a Ft(122)2527 b(Bash)31 b(Reference)g(Man)m(ual)p
-eop
+TeXDict begin 122 127 bop 150 -116 a Ft(122)2527 b(Bash)31
+b(Reference)g(Man)m(ual)p eop end
 %%Page: 123 129
-123 128 bop 150 -116 a Ft(App)s(endix)28 b(A:)i(Rep)s(orting)g(Bugs)
-2299 b(123)150 299 y Fo(App)t(endix)53 b(A)121 b(Rep)t(orting)53
-b(Bugs)275 533 y Ft(Please)34 b(rep)s(ort)f(all)g(bugs)h(y)m(ou)g
-(\014nd)f(in)g(Bash.)52 b(But)34 b(\014rst,)h(y)m(ou)f(should)e(mak)m
-(e)j(sure)f(that)g(it)g(really)150 643 y(is)h(a)h(bug,)h(and)e(that)h
-(it)g(app)s(ears)f(in)f(the)i(latest)h(v)m(ersion)e(of)h(Bash.)57
-b(The)35 b(latest)i(v)m(ersion)e(of)h(Bash)g(is)150 752
-y(alw)m(a)m(ys)31 b(a)m(v)-5 b(ailable)30 b(for)g(FTP)g(from)g
-Fs(ftp://ftp.gnu.org/pub/ba)o(sh/)o Ft(.)275 887 y(Once)41
-b(y)m(ou)g(ha)m(v)m(e)h(determined)e(that)i(a)f(bug)g(actually)f
-(exists,)k(use)d(the)g Fs(bashbug)e Ft(command)i(to)150
-996 y(submit)24 b(a)i(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)f(that)h(as)g
-(w)m(ell!)38 b(Suggestions)150 1106 y(and)20 b(`philosophical')f(bug)h
-(rep)s(orts)g(ma)m(y)i(b)s(e)f(mailed)e(to)j Fs(bug-bash@gnu.org)17
-b Ft(or)k(p)s(osted)f(to)i(the)f(Usenet)150 1215 y(newsgroup)29
-b Fs(gnu.bash.bug)p Ft(.)275 1350 y(All)g(bug)g(rep)s(orts)h(should)e
-(include:)225 1484 y Fp(\017)60 b Ft(The)30 b(v)m(ersion)g(n)m(um)m(b)s
-(er)f(of)h(Bash.)225 1619 y Fp(\017)60 b Ft(The)30 b(hardw)m(are)g(and)
-g(op)s(erating)f(system.)225 1753 y Fp(\017)60 b Ft(The)30
-b(compiler)f(used)g(to)i(compile)f(Bash.)225 1888 y Fp(\017)60
-b Ft(A)30 b(description)f(of)h(the)h(bug)f(b)s(eha)m(viour.)225
-2022 y Fp(\017)60 b Ft(A)30 b(short)h(script)e(or)h(`recip)s(e')g(whic)
-m(h)f(exercises)i(the)f(bug)g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(repro)
-s(duce)e(it.)150 2182 y Fs(bashbug)d Ft(inserts)h(the)i(\014rst)f
-(three)g(items)g(automatically)g(in)m(to)h(the)f(template)h(it)f(pro)m
-(vides)f(for)h(\014ling)f(a)150 2291 y(bug)j(rep)s(ort.)275
-2426 y(Please)g(send)g(all)f(rep)s(orts)h(concerning)f(this)h(man)m
-(ual)f(to)i Fs(chet@po.CWRU.Edu)p Ft(.)p eop
+TeXDict begin 123 128 bop 150 -116 a Ft(App)s(endix)29
+b(A:)h(Rep)s(orting)h(Bugs)2299 b(123)150 299 y Fo(App)t(endix)52
+b(A)121 b(Rep)t(orting)52 b(Bugs)275 533 y Ft(Please)35
+b(rep)s(ort)e(all)i(bugs)f(y)m(ou)g(\014nd)f(in)h(Bash.)52
+b(But)34 b(\014rst,)h(y)m(ou)f(should)f(mak)m(e)i(sure)f(that)g(it)h
+(really)150 643 y(is)h(a)g(bug,)h(and)e(that)h(it)h(app)s(ears)e(in)g
+(the)h(latest)i(v)m(ersion)e(of)g(Bash.)57 b(The)35 b(latest)j(v)m
+(ersion)e(of)g(Bash)g(is)150 752 y(alw)m(a)m(ys)c(a)m(v)-5
+b(ailable)33 b(for)d(FTP)g(from)g Fs(ftp://ftp.gnu.org/pub/ba)o(sh/)o
+Ft(.)275 887 y(Once)41 b(y)m(ou)g(ha)m(v)m(e)h(determined)f(that)h(a)f
+(bug)g(actually)h(exists,)j(use)c(the)g Fs(bashbug)e
+Ft(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)20 b(`philosophical')j(bug)d(rep)s(orts)g(ma)m(y)i(b)s(e)f
+(mailed)g(to)h Fs(bug-bash@gnu.org)17 b Ft(or)k(p)s(osted)f(to)i(the)f
+(Usenet)150 1215 y(newsgroup)29 b Fs(gnu.bash.bug)p Ft(.)275
+1350 y(All)i(bug)e(rep)s(orts)h(should)f(include:)225
+1484 y Fp(\017)60 b Ft(The)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h
+(Bash.)225 1619 y Fp(\017)60 b Ft(The)30 b(hardw)m(are)g(and)g(op)s
+(erating)g(system.)225 1753 y Fp(\017)60 b Ft(The)30
+b(compiler)h(used)e(to)i(compile)h(Bash.)225 1888 y Fp(\017)60
+b Ft(A)30 b(description)h(of)f(the)h(bug)f(b)s(eha)m(viour.)225
+2022 y Fp(\017)60 b Ft(A)30 b(short)h(script)f(or)g(`recip)s(e')h(whic)
+m(h)f(exercises)i(the)e(bug)g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(repro)
+s(duce)e(it.)150 2182 y Fs(bashbug)d Ft(inserts)i(the)h(\014rst)f
+(three)g(items)h(automatically)i(in)m(to)f(the)e(template)i(it)f(pro)m
+(vides)f(for)g(\014ling)h(a)150 2291 y(bug)h(rep)s(ort.)275
+2426 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m
+(ual)f(to)h Fs(chet@po.CWRU.Edu)p Ft(.)p eop end
 %%Page: 124 130
-124 129 bop 150 -116 a Ft(124)2527 b(Bash)31 b(Reference)g(Man)m(ual)p
-eop
+TeXDict begin 124 129 bop 150 -116 a Ft(124)2527 b(Bash)31
+b(Reference)g(Man)m(ual)p eop end
 %%Page: 125 131
-125 130 bop 150 -116 a Ft(App)s(endix)28 b(B:)j(Ma)5
-b(jor)31 b(Di\013erences)f(F)-8 b(rom)31 b(The)f(Bourne)g(Shell)1256
-b(125)150 141 y Fo(App)t(endix)53 b(B)128 b(Ma)9 b(jor)54
-b(Di\013erences)e(F)-13 b(rom)53 b(The)g(Bourne)1135
-299 y(Shell)275 524 y Ft(Bash)25 b(implemen)m(ts)e(essen)m(tially)h
-(the)i(same)f(grammar,)i(parameter)e(and)g(v)-5 b(ariable)24
-b(expansion,)h(redi-)150 633 y(rection,)j(and)e(quoting)g(as)h(the)h
-(Bourne)e(Shell.)38 b(Bash)27 b(uses)f(the)h Fl(posix)f
-Ft(1003.2)k(standard)c(as)h(the)g(sp)s(ec-)150 743 y(i\014cation)k(of)g
-(ho)m(w)h(these)g(features)g(are)g(to)g(b)s(e)f(implemen)m(ted.)43
-b(There)31 b(are)h(some)g(di\013erences)f(b)s(et)m(w)m(een)150
-853 y(the)h(traditional)e(Bourne)h(shell)e(and)i(Bash;)i(this)d
-(section)i(quic)m(kly)e(details)h(the)g(di\013erences)g(of)h(signif-)
-150 962 y(icance.)51 b(A)34 b(n)m(um)m(b)s(er)e(of)i(these)h
-(di\013erences)e(are)h(explained)e(in)g(greater)j(depth)e(in)f
-(previous)h(sections.)150 1072 y(This)c(section)h(uses)g(the)h(v)m
-(ersion)e(of)i Fs(sh)f Ft(included)d(in)i(SVR4.2)j(as)e(the)h(baseline)
-e(reference.)225 1204 y Fp(\017)60 b Ft(Bash)32 b(is)g
-Fl(posix)p Ft(-conforman)m(t,)h(ev)m(en)g(where)f(the)g
-Fl(posix)g Ft(sp)s(eci\014cation)f(di\013ers)g(from)h(traditional)330
-1314 y Fs(sh)e Ft(b)s(eha)m(vior)f(\(see)j(Section)e(6.11)i([Bash)e
-(POSIX)g(Mo)s(de],)h(page)g(76\).)225 1447 y Fp(\017)60
-b Ft(Bash)26 b(has)g(m)m(ulti-c)m(haracter)g(in)m(v)m(o)s(cation)g
-(options)g(\(see)g(Section)g(6.1)h([In)m(v)m(oking)f(Bash],)i(page)e
-(63\).)225 1579 y Fp(\017)60 b Ft(Bash)28 b(has)g(command-line)f
-(editing)f(\(see)j(Chapter)f(8)g([Command)f(Line)g(Editing],)h(page)g
-(83\))i(and)330 1689 y(the)h Fs(bind)e Ft(builtin.)225
-1822 y Fp(\017)60 b Ft(Bash)46 b(pro)m(vides)f(a)h(programmable)f(w)m
-(ord)g(completion)g(mec)m(hanism)g(\(see)i(Section)f(8.6)h([Pro-)330
-1931 y(grammable)20 b(Completion],)h(page)g(103\),)k(and)19
-b(t)m(w)m(o)j(builtin)17 b(commands,)22 b Fs(complete)c
-Ft(and)i Fs(compgen)p Ft(,)330 2041 y(to)31 b(manipulate)e(it.)225
-2173 y Fp(\017)60 b Ft(Bash)26 b(has)f(command)h(history)e(\(see)j
-(Section)e(9.1)i([Bash)f(History)g(F)-8 b(acilities],)26
-b(page)g(109\))i(and)d(the)330 2283 y Fs(history)k Ft(and)h
-Fs(fc)g Ft(builtins)d(to)k(manipulate)e(it.)41 b(The)30
-b(Bash)h(history)f(list)f(main)m(tains)g(timestamp)330
-2393 y(information)g(and)g(uses)h(the)h(v)-5 b(alue)30
-b(of)g(the)h Fs(HISTTIMEFORMAT)26 b Ft(v)-5 b(ariable)30
-b(to)h(displa)m(y)d(it.)225 2525 y Fp(\017)60 b Ft(Bash)48
-b(implemen)m(ts)f Fs(csh)p Ft(-lik)m(e)g(history)g(expansion)g(\(see)i
-(Section)f(9.3)i([History)e(In)m(teraction],)330 2635
+TeXDict begin 125 130 bop 150 -116 a Ft(App)s(endix)29
+b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
+b(The)f(Bourne)g(Shell)1258 b(125)150 141 y Fo(App)t(endix)52
+b(B)128 b(Ma)9 b(jor)54 b(Di\013erences)d(F)-13 b(rom)54
+b(The)f(Bourne)1135 299 y(Shell)275 524 y Ft(Bash)25
+b(implemen)m(ts)g(essen)m(tially)i(the)f(same)f(grammar,)i(parameter)e
+(and)g(v)-5 b(ariable)26 b(expansion,)g(redi-)150 633
+y(rection,)j(and)d(quoting)h(as)g(the)h(Bourne)e(Shell.)40
+b(Bash)27 b(uses)f(the)h Fl(posix)f Ft(1003.2)k(standard)c(as)h(the)g
+(sp)s(ec-)150 743 y(i\014cation)33 b(of)e(ho)m(w)h(these)g(features)g
+(are)g(to)g(b)s(e)f(implemen)m(ted.)45 b(There)31 b(are)h(some)g
+(di\013erences)g(b)s(et)m(w)m(een)150 853 y(the)g(traditional)h(Bourne)
+e(shell)g(and)g(Bash;)i(this)e(section)i(quic)m(kly)f(details)h(the)e
+(di\013erences)h(of)g(signif-)150 962 y(icance.)52 b(A)34
+b(n)m(um)m(b)s(er)e(of)i(these)h(di\013erences)f(are)g(explained)g(in)f
+(greater)i(depth)e(in)g(previous)h(sections.)150 1072
+y(This)c(section)h(uses)f(the)h(v)m(ersion)f(of)h Fs(sh)f
+Ft(included)f(in)h(SVR4.2)i(as)e(the)h(baseline)g(reference.)225
+1204 y Fp(\017)60 b Ft(Bash)32 b(is)h Fl(posix)p Ft(-conforman)m(t,)g
+(ev)m(en)g(where)f(the)g Fl(posix)g Ft(sp)s(eci\014cation)h(di\013ers)f
+(from)g(traditional)330 1314 y Fs(sh)e Ft(b)s(eha)m(vior)g(\(see)i
+(Section)f(6.11)h([Bash)e(POSIX)g(Mo)s(de],)h(page)g(76\).)225
+1447 y Fp(\017)60 b Ft(Bash)26 b(has)g(m)m(ulti-c)m(haracter)i(in)m(v)m
+(o)s(cation)g(options)f(\(see)f(Section)h(6.1)g([In)m(v)m(oking)g
+(Bash],)h(page)e(63\).)225 1579 y Fp(\017)60 b Ft(Bash)28
+b(has)g(command-line)h(editing)f(\(see)h(Chapter)f(8)g([Command)f(Line)
+h(Editing],)i(page)e(83\))i(and)330 1689 y(the)h Fs(bind)e
+Ft(builtin.)225 1822 y Fp(\017)60 b Ft(Bash)46 b(pro)m(vides)g(a)g
+(programmable)g(w)m(ord)f(completion)i(mec)m(hanism)f(\(see)h(Section)g
+(8.6)g([Pro-)330 1931 y(grammable)21 b(Completion],)i(page)e(103\),)k
+(and)19 b(t)m(w)m(o)j(builtin)e(commands,)i Fs(complete)c
+Ft(and)i Fs(compgen)p Ft(,)330 2041 y(to)31 b(manipulate)g(it.)225
+2173 y Fp(\017)60 b Ft(Bash)26 b(has)f(command)h(history)f(\(see)i
+(Section)f(9.1)h([Bash)f(History)h(F)-8 b(acilities],)30
+b(page)c(109\))i(and)d(the)330 2283 y Fs(history)k Ft(and)h
+Fs(fc)g Ft(builtins)g(to)h(manipulate)g(it.)42 b(The)30
+b(Bash)h(history)g(list)g(main)m(tains)g(timestamp)330
+2393 y(information)g(and)e(uses)h(the)h(v)-5 b(alue)31
+b(of)f(the)h Fs(HISTTIMEFORMAT)26 b Ft(v)-5 b(ariable)32
+b(to)f(displa)m(y)f(it.)225 2525 y Fp(\017)60 b Ft(Bash)48
+b(implemen)m(ts)h Fs(csh)p Ft(-lik)m(e)g(history)f(expansion)g(\(see)h
+(Section)g(9.3)h([History)f(In)m(teraction],)330 2635
 y(page)31 b(111\).)225 2768 y Fp(\017)60 b Ft(Bash)33
-b(has)g(one-dimensional)e(arra)m(y)i(v)-5 b(ariables)32
-b(\(see)i(Section)f(6.7)h([Arra)m(ys],)g(page)g(72\),)h(and)e(the)330
-2877 y(appropriate)38 b(v)-5 b(ariable)38 b(expansions)g(and)h
-(assignmen)m(t)g(syn)m(tax)h(to)g(use)f(them.)67 b(Sev)m(eral)39
-b(of)h(the)330 2987 y(Bash)32 b(builtins)c(tak)m(e)34
-b(options)d(to)i(act)g(on)e(arra)m(ys.)46 b(Bash)32 b(pro)m(vides)f(a)h
-(n)m(um)m(b)s(er)f(of)h(built-in)c(arra)m(y)330 3096
-y(v)-5 b(ariables.)225 3229 y Fp(\017)60 b Ft(The)37
-b Fs($'...)n(')g Ft(quoting)f(syn)m(tax,)k(whic)m(h)c(expands)g(ANSI-C)
-h(bac)m(kslash-escap)s(ed)g(c)m(haracters)h(in)330 3339
-y(the)26 b(text)h(b)s(et)m(w)m(een)g(the)g(single)d(quotes,)k(is)d
-(supp)s(orted)g(\(see)i(Section)f(3.1.2.4)i([ANSI-C)e(Quoting],)330
-3448 y(page)31 b(6\).)225 3581 y Fp(\017)60 b Ft(Bash)69
-b(supp)s(orts)e(the)i Fs($"...)n(")g Ft(quoting)f(syn)m(tax)h(to)h(do)e
-(lo)s(cale-sp)s(eci\014c)g(translation)g(of)330 3690
-y(the)d(c)m(haracters)i(b)s(et)m(w)m(een)f(the)f(double)f(quotes.)145
-b(The)65 b(`)p Fs(-D)p Ft(',)74 b(`)p Fs(--dump-strings)p
-Ft(',)d(and)330 3800 y(`)p Fs(--dump-po-strings)p Ft(')27
-b(in)m(v)m(o)s(cation)k(options)f(list)g(the)h(translatable)f(strings)g
-(found)g(in)g(a)h(script)330 3910 y(\(see)g(Section)g(3.1.2.5)h([Lo)s
-(cale)f(T)-8 b(ranslation],)30 b(page)h(7\).)225 4042
-y Fp(\017)60 b Ft(Bash)44 b(implemen)m(ts)e(the)h Fs(!)h
-Ft(k)m(eyw)m(ord)g(to)g(negate)h(the)f(return)e(v)-5
-b(alue)43 b(of)h(a)g(pip)s(eline)c(\(see)k(Sec-)330 4152
-y(tion)32 b(3.2.2)j([Pip)s(elines],)c(page)j(8\).)49
-b(V)-8 b(ery)33 b(useful)e(when)h(an)h Fs(if)f Ft(statemen)m(t)j(needs)
-d(to)i(act)g(only)e(if)330 4261 y(a)f(test)g(fails.)225
+b(has)g(one-dimensional)h(arra)m(y)f(v)-5 b(ariables)34
+b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(72\),)h(and)e(the)330
+2877 y(appropriate)39 b(v)-5 b(ariable)40 b(expansions)f(and)g
+(assignmen)m(t)h(syn)m(tax)g(to)g(use)f(them.)67 b(Sev)m(eral)40
+b(of)g(the)330 2987 y(Bash)32 b(builtins)f(tak)m(e)j(options)e(to)h
+(act)g(on)e(arra)m(ys.)46 b(Bash)32 b(pro)m(vides)g(a)g(n)m(um)m(b)s
+(er)f(of)h(built-in)f(arra)m(y)330 3096 y(v)-5 b(ariables.)225
+3229 y Fp(\017)60 b Ft(The)37 b Fs($'...)n(')g Ft(quoting)g(syn)m(tax,)
+j(whic)m(h)d(expands)f(ANSI-C)h(bac)m(kslash-escap)s(ed)h(c)m
+(haracters)g(in)330 3339 y(the)26 b(text)h(b)s(et)m(w)m(een)g(the)g
+(single)f(quotes,)i(is)e(supp)s(orted)f(\(see)i(Section)g(3.1.2.4)h
+([ANSI-C)e(Quoting],)330 3448 y(page)31 b(6\).)225 3581
+y Fp(\017)60 b Ft(Bash)69 b(supp)s(orts)e(the)i Fs($"...)n(")g
+Ft(quoting)g(syn)m(tax)g(to)h(do)e(lo)s(cale-sp)s(eci\014c)j
+(translation)f(of)330 3690 y(the)65 b(c)m(haracters)i(b)s(et)m(w)m(een)
+f(the)f(double)g(quotes.)145 b(The)65 b(`)p Fs(-D)p Ft(',)74
+b(`)p Fs(--dump-strings)p Ft(',)d(and)330 3800 y(`)p
+Fs(--dump-po-strings)p Ft(')27 b(in)m(v)m(o)s(cation)33
+b(options)e(list)h(the)f(translatable)h(strings)f(found)f(in)h(a)g
+(script)330 3910 y(\(see)g(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8
+b(ranslation],)32 b(page)f(7\).)225 4042 y Fp(\017)60
+b Ft(Bash)44 b(implemen)m(ts)g(the)f Fs(!)h Ft(k)m(eyw)m(ord)g(to)g
+(negate)h(the)f(return)e(v)-5 b(alue)44 b(of)g(a)g(pip)s(eline)f(\(see)
+h(Sec-)330 4152 y(tion)33 b(3.2.2)i([Pip)s(elines],)f(page)g(8\).)49
+b(V)-8 b(ery)33 b(useful)f(when)g(an)h Fs(if)f Ft(statemen)m(t)j(needs)
+d(to)i(act)g(only)f(if)330 4261 y(a)e(test)g(fails.)225
 4394 y Fp(\017)60 b Ft(Bash)34 b(has)g(the)g Fs(time)f
-Ft(reserv)m(ed)h(w)m(ord)g(and)f(command)h(timing)f(\(see)i(Section)f
-(3.2.2)h([Pip)s(elines],)330 4504 y(page)g(8\).)52 b(The)33
-b(displa)m(y)g(of)h(the)g(timing)e(statistics)i(ma)m(y)h(b)s(e)e(con)m
-(trolled)h(with)f(the)h Fs(TIMEFORMAT)330 4613 y Ft(v)-5
-b(ariable.)225 4746 y Fp(\017)60 b Ft(Bash)23 b(implemen)m(ts)e(the)j
+Ft(reserv)m(ed)h(w)m(ord)g(and)f(command)h(timing)h(\(see)g(Section)g
+(3.2.2)g([Pip)s(elines],)330 4504 y(page)g(8\).)52 b(The)33
+b(displa)m(y)i(of)f(the)g(timing)g(statistics)i(ma)m(y)f(b)s(e)e(con)m
+(trolled)j(with)e(the)g Fs(TIMEFORMAT)330 4613 y Ft(v)-5
+b(ariable.)225 4746 y Fp(\017)60 b Ft(Bash)23 b(implemen)m(ts)g(the)h
 Fs(for)29 b(\(\()h Fj(expr1)39 b Fs(;)30 b Fj(expr2)40
-b Fs(;)30 b Fj(expr3)39 b Fs(\)\))23 b Ft(arithmetic)f(for)g(command,)j
-(sim-)330 4855 y(ilar)k(to)i(the)g(C)f(language)g(\(see)i(Section)e
-(3.2.4.1)j([Lo)s(oping)c(Constructs],)i(page)g(9\).)225
-4988 y Fp(\017)60 b Ft(Bash)31 b(includes)d(the)i Fs(select)f
-Ft(comp)s(ound)g(command,)i(whic)m(h)e(allo)m(ws)h(the)h(generation)f
-(of)h(simple)330 5098 y(men)m(us)f(\(see)h(Section)f(3.2.4.2)j
-([Conditional)28 b(Constructs],)j(page)g(10\).)225 5230
-y Fp(\017)60 b Ft(Bash)26 b(includes)e(the)j Fs([[)f
-Ft(comp)s(ound)f(command,)i(whic)m(h)e(mak)m(es)i(conditional)e
-(testing)h(part)g(of)h(the)330 5340 y(shell)i(grammar)h(\(see)h
-(Section)f(3.2.4.2)j([Conditional)c(Constructs],)h(page)h(10\).)p
-eop
+b Fs(;)30 b Fj(expr3)39 b Fs(\)\))23 b Ft(arithmetic)h(for)e(command,)j
+(sim-)330 4855 y(ilar)31 b(to)g(the)g(C)f(language)h(\(see)h(Section)f
+(3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(9\).)225
+4988 y Fp(\017)60 b Ft(Bash)31 b(includes)f(the)g Fs(select)f
+Ft(comp)s(ound)g(command,)i(whic)m(h)f(allo)m(ws)i(the)f(generation)g
+(of)g(simple)330 5098 y(men)m(us)f(\(see)h(Section)g(3.2.4.2)i
+([Conditional)e(Constructs],)g(page)g(10\).)225 5230
+y Fp(\017)60 b Ft(Bash)26 b(includes)g(the)h Fs([[)f
+Ft(comp)s(ound)f(command,)i(whic)m(h)f(mak)m(es)h(conditional)h
+(testing)f(part)f(of)h(the)330 5340 y(shell)k(grammar)f(\(see)h
+(Section)g(3.2.4.2)i([Conditional)f(Constructs],)e(page)h(10\).)p
+eop end
 %%Page: 126 132
-126 131 bop 150 -116 a Ft(126)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-225 299 y Fp(\017)60 b Ft(Bash)27 b(includes)e(brace)j(expansion)e
-(\(see)i(Section)f(3.5.1)j([Brace)e(Expansion],)f(page)h(17\))h(and)d
-(tilde)330 408 y(expansion)j(\(see)j(Section)e(3.5.2)i([Tilde)d
-(Expansion],)g(page)i(18\).)225 537 y Fp(\017)60 b Ft(Bash)24
-b(implemen)m(ts)f(command)g(aliases)h(and)f(the)i Fs(alias)d
-Ft(and)i Fs(unalias)e Ft(builtins)e(\(see)25 b(Section)f(6.6)330
-647 y([Aliases],)30 b(page)h(71\).)225 776 y Fp(\017)60
-b Ft(Bash)32 b(pro)m(vides)f(shell)f(arithmetic,)i(the)g
-Fs(\(\()g Ft(comp)s(ound)e(command)i(\(see)h(Section)e(3.2.4.2)k([Con-)
-330 886 y(ditional)29 b(Constructs],)h(page)i(10\),)g(and)e(arithmetic)
-g(expansion)f(\(see)j(Section)e(6.5)i([Shell)d(Arith-)330
-995 y(metic],)i(page)g(70\).)225 1124 y Fp(\017)60 b
-Ft(V)-8 b(ariables)29 b(presen)m(t)g(in)f(the)h(shell's)f(initial)e(en)
-m(vironmen)m(t)j(are)h(automatically)f(exp)s(orted)g(to)h(c)m(hild)330
-1234 y(pro)s(cesses.)38 b(The)23 b(Bourne)g(shell)e(do)s(es)i(not)g
-(normally)e(do)i(this)f(unless)g(the)h(v)-5 b(ariables)22
-b(are)h(explicitly)330 1343 y(mark)m(ed)30 b(using)f(the)i
+TeXDict begin 126 131 bop 150 -116 a Ft(126)2527 b(Bash)31
+b(Reference)g(Man)m(ual)225 299 y Fp(\017)60 b Ft(Bash)27
+b(includes)g(brace)h(expansion)f(\(see)h(Section)g(3.5.1)i([Brace)e
+(Expansion],)g(page)g(17\))h(and)d(tilde)330 408 y(expansion)k(\(see)i
+(Section)f(3.5.2)h([Tilde)f(Expansion],)f(page)h(18\).)225
+537 y Fp(\017)60 b Ft(Bash)24 b(implemen)m(ts)h(command)e(aliases)j
+(and)d(the)i Fs(alias)d Ft(and)i Fs(unalias)e Ft(builtins)h(\(see)i
+(Section)g(6.6)330 647 y([Aliases],)32 b(page)f(71\).)225
+776 y Fp(\017)60 b Ft(Bash)32 b(pro)m(vides)g(shell)g(arithmetic,)i
+(the)e Fs(\(\()g Ft(comp)s(ound)e(command)i(\(see)h(Section)f(3.2.4.2)j
+([Con-)330 886 y(ditional)d(Constructs],)e(page)i(10\),)g(and)e
+(arithmetic)i(expansion)e(\(see)i(Section)f(6.5)h([Shell)f(Arith-)330
+995 y(metic],)h(page)f(70\).)225 1124 y Fp(\017)60 b
+Ft(V)-8 b(ariables)31 b(presen)m(t)e(in)g(the)g(shell's)h(initial)g(en)
+m(vironmen)m(t)g(are)g(automatically)i(exp)s(orted)d(to)h(c)m(hild)330
+1234 y(pro)s(cesses.)38 b(The)23 b(Bourne)g(shell)g(do)s(es)g(not)g
+(normally)g(do)g(this)g(unless)g(the)g(v)-5 b(ariables)24
+b(are)f(explicitly)330 1343 y(mark)m(ed)30 b(using)g(the)h
 Fs(export)e Ft(command.)225 1472 y Fp(\017)60 b Ft(Bash)36
-b(includes)e(the)i Fl(posix)f Ft(pattern)h(remo)m(v)-5
-b(al)36 b(`)p Fs(\045)p Ft(',)i(`)p Fs(#)p Ft(',)g(`)p
-Fs(\045\045)p Ft(')e(and)f(`)p Fs(##)p Ft(')h(expansions)f(to)h(remo)m
-(v)m(e)330 1582 y(leading)d(or)h(trailing)e(substrings)g(from)h(v)-5
-b(ariable)33 b(v)-5 b(alues)34 b(\(see)h(Section)f(3.5.3)h([Shell)e(P)m
-(arameter)330 1691 y(Expansion],)c(page)i(18\).)225 1820
-y Fp(\017)60 b Ft(The)46 b(expansion)f Fs(${#xx})p Ft(,)k(whic)m(h)c
-(returns)g(the)i(length)e(of)i Fs(${xx})p Ft(,)i(is)d(supp)s(orted)e
-(\(see)j(Sec-)330 1930 y(tion)30 b(3.5.3)i([Shell)d(P)m(arameter)i
-(Expansion],)e(page)j(18\).)225 2059 y Fp(\017)60 b Ft(The)30
-b(expansion)f Fs(${var:)p Fq(o\013set)r Fs([:)p Fq(length)p
-Fs(]})p Ft(,)g(whic)m(h)g(expands)h(to)h(the)g(substring)d(of)j
-Fs(var)p Ft('s)e(v)-5 b(alue)330 2168 y(of)43 b(length)f
-Fq(length)p Ft(,)k(b)s(eginning)40 b(at)k Fq(o\013set)p
-Ft(,)j(is)42 b(presen)m(t)h(\(see)g(Section)g(3.5.3)i([Shell)c(P)m
-(arameter)330 2278 y(Expansion],)29 b(page)i(18\).)225
-2407 y Fp(\017)60 b Ft(The)21 b(expansion)e Fs(${var/[/])p
+b(includes)g(the)g Fl(posix)f Ft(pattern)h(remo)m(v)-5
+b(al)37 b(`)p Fs(\045)p Ft(',)h(`)p Fs(#)p Ft(',)g(`)p
+Fs(\045\045)p Ft(')e(and)f(`)p Fs(##)p Ft(')h(expansions)g(to)g(remo)m
+(v)m(e)330 1582 y(leading)f(or)f(trailing)h(substrings)e(from)g(v)-5
+b(ariable)35 b(v)-5 b(alues)35 b(\(see)g(Section)g(3.5.3)g([Shell)g(P)m
+(arameter)330 1691 y(Expansion],)30 b(page)h(18\).)225
+1820 y Fp(\017)60 b Ft(The)46 b(expansion)g Fs(${#xx})p
+Ft(,)j(whic)m(h)d(returns)f(the)i(length)f(of)h Fs(${xx})p
+Ft(,)i(is)e(supp)s(orted)d(\(see)j(Sec-)330 1930 y(tion)31
+b(3.5.3)h([Shell)f(P)m(arameter)g(Expansion],)f(page)i(18\).)225
+2059 y Fp(\017)60 b Ft(The)30 b(expansion)g Fs(${var:)p
+Fq(o\013set)r Fs([:)p Fq(length)p Fs(]})p Ft(,)g(whic)m(h)g(expands)g
+(to)h(the)g(substring)e(of)i Fs(var)p Ft('s)e(v)-5 b(alue)330
+2168 y(of)43 b(length)g Fq(length)p Ft(,)k(b)s(eginning)42
+b(at)i Fq(o\013set)p Ft(,)j(is)c(presen)m(t)g(\(see)g(Section)h(3.5.3)h
+([Shell)e(P)m(arameter)330 2278 y(Expansion],)30 b(page)h(18\).)225
+2407 y Fp(\017)60 b Ft(The)21 b(expansion)f Fs(${var/[/])p
 Fq(pattern)p Fs([/)p Fq(replacemen)m(t)r Fs(]})p Ft(,)i(whic)m(h)e
-(matc)m(hes)k Fq(pattern)e Ft(and)f(replaces)330 2516
-y(it)28 b(with)e Fq(replacemen)m(t)31 b Ft(in)c(the)h(v)-5
-b(alue)28 b(of)g Fs(var)p Ft(,)g(is)f(a)m(v)-5 b(ailable)28
-b(\(see)h(Section)e(3.5.3)j([Shell)d(P)m(arameter)330
-2626 y(Expansion],)i(page)i(18\).)225 2755 y Fp(\017)60
-b Ft(The)32 b(expansion)f Fs(${!)p Fj(prefix)p Fs(})p
-Fj(*)40 b Ft(expansion,)31 b(whic)m(h)g(expands)h(to)h(the)f(names)g
-(of)h(all)e(shell)f(v)-5 b(ari-)330 2865 y(ables)35 b(whose)h(names)g
-(b)s(egin)f(with)g Fq(pre\014x)p Ft(,)h(is)f(a)m(v)-5
-b(ailable)36 b(\(see)h(Section)f(3.5.3)h([Shell)e(P)m(arameter)330
-2974 y(Expansion],)29 b(page)i(18\).)225 3103 y Fp(\017)60
-b Ft(Bash)22 b(has)f Fq(indirect)h Ft(v)-5 b(ariable)20
-b(expansion)h(using)f Fs(${!word})f Ft(\(see)k(Section)e(3.5.3)j
-([Shell)c(P)m(arameter)330 3213 y(Expansion],)29 b(page)i(18\).)225
-3342 y Fp(\017)60 b Ft(Bash)31 b(can)f(expand)g(p)s(ositional)e
-(parameters)j(b)s(ey)m(ond)e Fs($9)h Ft(using)f Fs(${)p
+(matc)m(hes)j Fq(pattern)e Ft(and)f(replaces)330 2516
+y(it)29 b(with)e Fq(replacemen)m(t)32 b Ft(in)c(the)g(v)-5
+b(alue)29 b(of)f Fs(var)p Ft(,)g(is)g(a)m(v)-5 b(ailable)31
+b(\(see)e(Section)f(3.5.3)i([Shell)f(P)m(arameter)330
+2626 y(Expansion],)h(page)h(18\).)225 2755 y Fp(\017)60
+b Ft(The)32 b(expansion)g Fs(${!)p Fj(prefix)p Fs(})p
+Fj(*)40 b Ft(expansion,)32 b(whic)m(h)g(expands)g(to)h(the)f(names)g
+(of)h(all)g(shell)f(v)-5 b(ari-)330 2865 y(ables)36 b(whose)g(names)g
+(b)s(egin)g(with)g Fq(pre\014x)p Ft(,)g(is)g(a)m(v)-5
+b(ailable)39 b(\(see)e(Section)g(3.5.3)g([Shell)g(P)m(arameter)330
+2974 y(Expansion],)30 b(page)h(18\).)225 3103 y Fp(\017)60
+b Ft(Bash)22 b(has)f Fq(indirect)j Ft(v)-5 b(ariable)22
+b(expansion)g(using)f Fs(${!word})e Ft(\(see)k(Section)f(3.5.3)i
+([Shell)e(P)m(arameter)330 3213 y(Expansion],)30 b(page)h(18\).)225
+3342 y Fp(\017)60 b Ft(Bash)31 b(can)f(expand)g(p)s(ositional)h
+(parameters)g(b)s(ey)m(ond)e Fs($9)h Ft(using)g Fs(${)p
 Fj(num)11 b Fs(})p Ft(.)225 3471 y Fp(\017)60 b Ft(The)27
-b Fl(posix)g Fs($\(\))g Ft(form)g(of)h(command)g(substitution)d(is)i
-(implemen)m(ted)f(\(see)j(Section)e(3.5.4)j([Com-)330
-3580 y(mand)38 b(Substitution],)i(page)g(21\),)j(and)38
-b(preferred)g(to)i(the)g(Bourne)f(shell's)f Fs(``)g Ft(\(whic)m(h)h(is)
-f(also)330 3690 y(implemen)m(ted)29 b(for)h(bac)m(kw)m(ards)h
+b Fl(posix)g Fs($\(\))g Ft(form)g(of)h(command)g(substitution)f(is)h
+(implemen)m(ted)g(\(see)h(Section)f(3.5.4)i([Com-)330
+3580 y(mand)38 b(Substitution],)k(page)e(21\),)j(and)38
+b(preferred)g(to)i(the)g(Bourne)f(shell's)h Fs(``)e Ft(\(whic)m(h)i(is)
+f(also)330 3690 y(implemen)m(ted)31 b(for)f(bac)m(kw)m(ards)h
 (compatibilit)m(y\).)225 3819 y Fp(\017)60 b Ft(Bash)31
-b(has)f(pro)s(cess)g(substitution)e(\(see)j(Section)f(3.5.6)i([Pro)s
-(cess)f(Substitution],)d(page)j(22\).)225 3948 y Fp(\017)60
-b Ft(Bash)55 b(automatically)g(assigns)g(v)-5 b(ariables)53
-b(that)j(pro)m(vide)e(information)g(ab)s(out)h(the)g(curren)m(t)330
+b(has)f(pro)s(cess)g(substitution)g(\(see)h(Section)g(3.5.6)h([Pro)s
+(cess)f(Substitution],)f(page)h(22\).)225 3948 y Fp(\017)60
+b Ft(Bash)55 b(automatically)j(assigns)e(v)-5 b(ariables)55
+b(that)h(pro)m(vide)f(information)h(ab)s(out)f(the)g(curren)m(t)330
 4057 y(user)40 b(\()p Fs(UID)p Ft(,)i Fs(EUID)p Ft(,)g(and)e
 Fs(GROUPS)p Ft(\),)h(the)g(curren)m(t)f(host)g(\()p Fs(HOSTTYPE)p
 Ft(,)h Fs(OSTYPE)p Ft(,)h Fs(MACHTYPE)p Ft(,)f(and)330
-4167 y Fs(HOSTNAME)p Ft(\),)55 b(and)c(the)g(instance)g(of)h(Bash)f
-(that)h(is)e(running)f(\()p Fs(BASH)p Ft(,)56 b Fs(BASH_VERSION)p
+4167 y Fs(HOSTNAME)p Ft(\),)55 b(and)c(the)g(instance)h(of)g(Bash)f
+(that)h(is)f(running)f(\()p Fs(BASH)p Ft(,)56 b Fs(BASH_VERSION)p
 Ft(,)e(and)330 4276 y Fs(BASH_VERSINFO)p Ft(\).)37 b(See)31
-b(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)31 b(page)g(55,)g(for)f
+b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(55,)g(for)f
 (details.)225 4405 y Fp(\017)60 b Ft(The)44 b Fs(IFS)f
-Ft(v)-5 b(ariable)43 b(is)g(used)g(to)i(split)d(only)h(the)h(results)f
-(of)i(expansion,)h(not)e(all)f(w)m(ords)h(\(see)330 4515
-y(Section)28 b(3.5.7)i([W)-8 b(ord)29 b(Splitting],)e(page)i(22\).)41
-b(This)27 b(closes)h(a)h(longstanding)e(shell)f(securit)m(y)i(hole.)225
-4644 y Fp(\017)60 b Ft(Bash)33 b(implemen)m(ts)f(the)h(full)e(set)j(of)
-f Fl(posix)f Ft(1003.2)k(\014lename)c(expansion)g(op)s(erators,)i
+Ft(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f(only)g(the)g(results)g
+(of)h(expansion,)i(not)d(all)h(w)m(ords)f(\(see)330 4515
+y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(22\).)41
+b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h(hole.)225
+4644 y Fp(\017)60 b Ft(Bash)33 b(implemen)m(ts)h(the)f(full)g(set)h(of)
+f Fl(posix)f Ft(1003.2)k(\014lename)d(expansion)g(op)s(erators,)h
 (including)330 4753 y Fq(c)m(haracter)23 b(classes)p
-Ft(,)g Fq(equiv)-5 b(alence)21 b(classes)p Ft(,)i(and)e
-Fq(collating)f(sym)m(b)s(ols)k Ft(\(see)e(Section)f(3.5.8)i([Filename)
-330 4863 y(Expansion],)29 b(page)i(22\).)225 4992 y Fp(\017)60
-b Ft(Bash)35 b(implemen)m(ts)e(extended)i(pattern)g(matc)m(hing)g
-(features)g(when)f(the)h Fs(extglob)d Ft(shell)h(option)330
-5101 y(is)c(enabled)h(\(see)h(Section)f(3.5.8.1)j([P)m(attern)f(Matc)m
-(hing],)f(page)g(23\).)225 5230 y Fp(\017)60 b Ft(It)22
-b(is)f(p)s(ossible)f(to)j(ha)m(v)m(e)g(a)f(v)-5 b(ariable)21
-b(and)h(a)g(function)f(with)g(the)h(same)g(name;)j Fs(sh)d
-Ft(do)s(es)g(not)g(separate)330 5340 y(the)31 b(t)m(w)m(o)g(name)g
-(spaces.)p eop
+Ft(,)h Fq(equiv)-5 b(alence)23 b(classes)p Ft(,)h(and)d
+Fq(collating)i(sym)m(b)s(ols)i Ft(\(see)d(Section)g(3.5.8)h([Filename)
+330 4863 y(Expansion],)30 b(page)h(22\).)225 4992 y Fp(\017)60
+b Ft(Bash)35 b(implemen)m(ts)g(extended)g(pattern)g(matc)m(hing)h
+(features)f(when)f(the)h Fs(extglob)d Ft(shell)j(option)330
+5101 y(is)30 b(enabled)h(\(see)g(Section)g(3.5.8.1)i([P)m(attern)f
+(Matc)m(hing],)g(page)f(23\).)225 5230 y Fp(\017)60 b
+Ft(It)22 b(is)g(p)s(ossible)g(to)h(ha)m(v)m(e)g(a)f(v)-5
+b(ariable)23 b(and)f(a)g(function)g(with)g(the)g(same)g(name;)j
+Fs(sh)d Ft(do)s(es)g(not)g(separate)330 5340 y(the)31
+b(t)m(w)m(o)g(name)g(spaces.)p eop end
 %%Page: 127 133
-127 132 bop 150 -116 a Ft(App)s(endix)28 b(B:)j(Ma)5
-b(jor)31 b(Di\013erences)f(F)-8 b(rom)31 b(The)f(Bourne)g(Shell)1256
-b(127)225 299 y Fp(\017)60 b Ft(Bash)30 b(functions)d(are)j(p)s
-(ermitted)e(to)i(ha)m(v)m(e)h(lo)s(cal)e(v)-5 b(ariables)28
-b(using)g(the)h Fs(local)f Ft(builtin,)f(and)h(th)m(us)330
-408 y(useful)h(recursiv)m(e)g(functions)g(ma)m(y)i(b)s(e)f(written)f
-(\(see)j(Section)e(4.2)h([Bash)g(Builtins],)d(page)k(39\).)225
-537 y Fp(\017)60 b Ft(V)-8 b(ariable)23 b(assignmen)m(ts)h(preceding)e
-(commands)i(a\013ect)h(only)e(that)h(command,)h(ev)m(en)f(builtins)d
-(and)330 647 y(functions)35 b(\(see)i(Section)f(3.7.4)i([En)m(vironmen)
-m(t],)g(page)f(30\).)60 b(In)35 b Fs(sh)p Ft(,)j(all)d(v)-5
-b(ariable)35 b(assignmen)m(ts)330 757 y(preceding)29
-b(commands)h(are)h(global)f(unless)e(the)j(command)f(is)g(executed)h
-(from)f(the)g(\014le)g(system.)225 886 y Fp(\017)60 b
-Ft(Bash)44 b(p)s(erforms)e(\014lename)h(expansion)f(on)i(\014lenames)f
-(sp)s(eci\014ed)f(as)i(op)s(erands)e(to)j(input)d(and)330
-995 y(output)30 b(redirection)f(op)s(erators)i(\(see)g(Section)f(3.6)i
-([Redirections],)e(page)h(24\).)225 1124 y Fp(\017)60
-b Ft(Bash)29 b(con)m(tains)g(the)g(`)p Fs(<>)p Ft(')f(redirection)g(op)
-s(erator,)h(allo)m(wing)f(a)h(\014le)f(to)h(b)s(e)f(op)s(ened)g(for)h
-(b)s(oth)f(read-)330 1234 y(ing)34 b(and)g(writing,)g(and)g(the)h(`)p
-Fs(&>)p Ft(')g(redirection)e(op)s(erator,)j(for)f(directing)e(standard)
-h(output)h(and)330 1343 y(standard)30 b(error)g(to)h(the)f(same)h
-(\014le)e(\(see)j(Section)e(3.6)h([Redirections],)f(page)i(24\).)225
-1472 y Fp(\017)60 b Ft(Bash)25 b(treats)h(a)f(n)m(um)m(b)s(er)e(of)i
-(\014lenames)f(sp)s(ecially)e(when)i(they)h(are)g(used)f(in)f
-(redirection)h(op)s(erators)330 1582 y(\(see)31 b(Section)g(3.6)g
-([Redirections],)f(page)h(24\).)225 1711 y Fp(\017)60
-b Ft(Bash)33 b(can)f(op)s(en)g(net)m(w)m(ork)i(connections)e(to)i
-(arbitrary)d(mac)m(hines)h(and)g(services)g(with)f(the)i(redi-)330
-1820 y(rection)d(op)s(erators)h(\(see)g(Section)f(3.6)i
-([Redirections],)e(page)h(24\).)225 1949 y Fp(\017)60
-b Ft(The)29 b Fs(noclobber)e Ft(option)i(is)g(a)m(v)-5
-b(ailable)29 b(to)h(a)m(v)m(oid)g(o)m(v)m(erwriting)f(existing)g
-(\014les)f(with)h(output)g(redi-)330 2059 y(rection)g(\(see)i(Section)e
-(4.3)h([The)g(Set)f(Builtin],)f(page)i(50\).)41 b(The)29
-b(`)p Fs(>|)p Ft(')h(redirection)e(op)s(erator)h(ma)m(y)330
-2168 y(b)s(e)h(used)f(to)i(o)m(v)m(erride)g Fs(noclobber)p
+TeXDict begin 127 132 bop 150 -116 a Ft(App)s(endix)29
+b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
+b(The)f(Bourne)g(Shell)1258 b(127)225 299 y Fp(\017)60
+b Ft(Bash)30 b(functions)e(are)i(p)s(ermitted)f(to)h(ha)m(v)m(e)h(lo)s
+(cal)g(v)-5 b(ariables)30 b(using)f(the)g Fs(local)f
+Ft(builtin,)i(and)e(th)m(us)330 408 y(useful)i(recursiv)m(e)g
+(functions)g(ma)m(y)h(b)s(e)f(written)g(\(see)i(Section)f(4.2)g([Bash)g
+(Builtins],)g(page)h(39\).)225 537 y Fp(\017)60 b Ft(V)-8
+b(ariable)25 b(assignmen)m(ts)g(preceding)e(commands)h(a\013ect)h(only)
+f(that)g(command,)h(ev)m(en)f(builtins)g(and)330 647
+y(functions)36 b(\(see)h(Section)g(3.7.4)h([En)m(vironmen)m(t],)h(page)
+e(30\).)60 b(In)35 b Fs(sh)p Ft(,)j(all)f(v)-5 b(ariable)37
+b(assignmen)m(ts)330 757 y(preceding)30 b(commands)g(are)h(global)h
+(unless)d(the)i(command)f(is)h(executed)g(from)f(the)g(\014le)h
+(system.)225 886 y Fp(\017)60 b Ft(Bash)44 b(p)s(erforms)e(\014lename)i
+(expansion)f(on)h(\014lenames)g(sp)s(eci\014ed)f(as)h(op)s(erands)e(to)
+j(input)e(and)330 995 y(output)30 b(redirection)h(op)s(erators)g(\(see)
+g(Section)g(3.6)h([Redirections],)g(page)f(24\).)225
+1124 y Fp(\017)60 b Ft(Bash)29 b(con)m(tains)h(the)f(`)p
+Fs(<>)p Ft(')f(redirection)i(op)s(erator,)f(allo)m(wing)i(a)e(\014le)g
+(to)g(b)s(e)f(op)s(ened)g(for)h(b)s(oth)f(read-)330 1234
+y(ing)35 b(and)f(writing,)i(and)e(the)h(`)p Fs(&>)p Ft(')g(redirection)
+g(op)s(erator,)h(for)f(directing)g(standard)f(output)h(and)330
+1343 y(standard)30 b(error)g(to)h(the)f(same)h(\014le)f(\(see)i
+(Section)f(3.6)g([Redirections],)h(page)g(24\).)225 1472
+y Fp(\017)60 b Ft(Bash)25 b(treats)h(a)f(n)m(um)m(b)s(er)e(of)i
+(\014lenames)g(sp)s(ecially)g(when)f(they)h(are)g(used)f(in)g
+(redirection)i(op)s(erators)330 1582 y(\(see)31 b(Section)h(3.6)f
+([Redirections],)h(page)f(24\).)225 1711 y Fp(\017)60
+b Ft(Bash)33 b(can)f(op)s(en)g(net)m(w)m(ork)i(connections)f(to)h
+(arbitrary)e(mac)m(hines)h(and)f(services)h(with)f(the)h(redi-)330
+1820 y(rection)e(op)s(erators)g(\(see)g(Section)g(3.6)h
+([Redirections],)g(page)f(24\).)225 1949 y Fp(\017)60
+b Ft(The)29 b Fs(noclobber)e Ft(option)j(is)g(a)m(v)-5
+b(ailable)32 b(to)e(a)m(v)m(oid)h(o)m(v)m(erwriting)g(existing)g
+(\014les)e(with)h(output)f(redi-)330 2059 y(rection)h(\(see)h(Section)f
+(4.3)g([The)g(Set)f(Builtin],)i(page)f(50\).)41 b(The)29
+b(`)p Fs(>|)p Ft(')h(redirection)g(op)s(erator)f(ma)m(y)330
+2168 y(b)s(e)h(used)f(to)i(o)m(v)m(erride)h Fs(noclobber)p
 Ft(.)225 2297 y Fp(\017)60 b Ft(The)34 b(Bash)g Fs(cd)g
-Ft(and)f Fs(pwd)g Ft(builtins)e(\(see)k(Section)f(4.1)h([Bourne)g
-(Shell)d(Builtins],)g(page)j(33\))h(eac)m(h)330 2407
-y(tak)m(e)c(`)p Fs(-L)p Ft(')e(and)g(`)p Fs(-P)p Ft(')g(options)g(to)h
-(switc)m(h)f(b)s(et)m(w)m(een)h(logical)f(and)f(ph)m(ysical)g(mo)s
-(des.)225 2536 y Fp(\017)60 b Ft(Bash)25 b(allo)m(ws)f(a)i(function)d
-(to)j(o)m(v)m(erride)f(a)h(builtin)21 b(with)j(the)h(same)g(name,)i
-(and)d(pro)m(vides)g(access)i(to)330 2645 y(that)34 b(builtin's)c
-(functionalit)m(y)h(within)g(the)i(function)f(via)h(the)g
+Ft(and)f Fs(pwd)g Ft(builtins)h(\(see)h(Section)g(4.1)g([Bourne)g
+(Shell)f(Builtins],)h(page)g(33\))h(eac)m(h)330 2407
+y(tak)m(e)c(`)p Fs(-L)p Ft(')e(and)g(`)p Fs(-P)p Ft(')g(options)h(to)g
+(switc)m(h)g(b)s(et)m(w)m(een)g(logical)i(and)c(ph)m(ysical)i(mo)s
+(des.)225 2536 y Fp(\017)60 b Ft(Bash)25 b(allo)m(ws)h(a)g(function)e
+(to)i(o)m(v)m(erride)g(a)g(builtin)e(with)h(the)g(same)g(name,)i(and)d
+(pro)m(vides)h(access)h(to)330 2645 y(that)34 b(builtin's)f
+(functionalit)m(y)h(within)f(the)g(function)g(via)h(the)f
 Fs(builtin)f Ft(and)g Fs(command)g Ft(builtins)330 2755
-y(\(see)f(Section)g(4.2)g([Bash)g(Builtins],)d(page)j(39\).)225
-2884 y Fp(\017)60 b Ft(The)35 b Fs(command)e Ft(builtin)f(allo)m(ws)j
-(selectiv)m(e)h(disabling)d(of)i(functions)f(when)h(command)g(lo)s
-(okup)f(is)330 2993 y(p)s(erformed)29 b(\(see)i(Section)f(4.2)i([Bash)f
-(Builtins],)d(page)j(39\).)225 3122 y Fp(\017)60 b Ft(Individual)20
-b(builtins)g(ma)m(y)25 b(b)s(e)e(enabled)g(or)h(disabled)e(using)g(the)
-i Fs(enable)f Ft(builtin)d(\(see)25 b(Section)f(4.2)330
-3232 y([Bash)31 b(Builtins],)d(page)j(39\).)225 3361
-y Fp(\017)60 b Ft(The)26 b(Bash)h Fs(exec)e Ft(builtin)e(tak)m(es)28
-b(additional)c(options)i(that)h(allo)m(w)f(users)f(to)j(con)m(trol)f
-(the)f(con)m(ten)m(ts)330 3471 y(of)35 b(the)f(en)m(vironmen)m(t)g
-(passed)g(to)h(the)g(executed)g(command,)h(and)d(what)i(the)f(zeroth)h
-(argumen)m(t)330 3580 y(to)c(the)g(command)f(is)f(to)i(b)s(e)f(\(see)h
-(Section)g(4.1)g([Bourne)f(Shell)f(Builtins],)f(page)j(33\).)225
-3709 y Fp(\017)60 b Ft(Shell)27 b(functions)h(ma)m(y)i(b)s(e)f(exp)s
-(orted)g(to)h(c)m(hildren)d(via)i(the)h(en)m(vironmen)m(t)f(using)f
-Fs(export)g(-f)h Ft(\(see)330 3819 y(Section)h(3.3)i([Shell)c(F)-8
-b(unctions],)31 b(page)g(13\).)225 3948 y Fp(\017)60
+y(\(see)f(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(39\).)225
+2884 y Fp(\017)60 b Ft(The)35 b Fs(command)e Ft(builtin)i(allo)m(ws)i
+(selectiv)m(e)h(disabling)e(of)f(functions)g(when)g(command)g(lo)s
+(okup)g(is)330 2993 y(p)s(erformed)29 b(\(see)i(Section)g(4.2)h([Bash)f
+(Builtins],)g(page)g(39\).)225 3122 y Fp(\017)60 b Ft(Individual)23
+b(builtins)g(ma)m(y)i(b)s(e)e(enabled)h(or)g(disabled)g(using)f(the)h
+Fs(enable)f Ft(builtin)g(\(see)i(Section)g(4.2)330 3232
+y([Bash)31 b(Builtins],)g(page)g(39\).)225 3361 y Fp(\017)60
+b Ft(The)26 b(Bash)h Fs(exec)e Ft(builtin)h(tak)m(es)i(additional)f
+(options)g(that)g(allo)m(w)h(users)d(to)j(con)m(trol)g(the)e(con)m(ten)
+m(ts)330 3471 y(of)35 b(the)f(en)m(vironmen)m(t)h(passed)f(to)h(the)g
+(executed)g(command,)h(and)d(what)i(the)f(zeroth)h(argumen)m(t)330
+3580 y(to)c(the)g(command)f(is)g(to)h(b)s(e)f(\(see)h(Section)h(4.1)f
+([Bourne)f(Shell)h(Builtins],)g(page)g(33\).)225 3709
+y Fp(\017)60 b Ft(Shell)29 b(functions)g(ma)m(y)h(b)s(e)f(exp)s(orted)g
+(to)h(c)m(hildren)f(via)h(the)g(en)m(vironmen)m(t)g(using)f
+Fs(export)f(-f)h Ft(\(see)330 3819 y(Section)i(3.3)h([Shell)e(F)-8
+b(unctions],)32 b(page)f(13\).)225 3948 y Fp(\017)60
 b Ft(The)37 b(Bash)g Fs(export)p Ft(,)h Fs(readonly)p
-Ft(,)f(and)f Fs(declare)g Ft(builtins)e(can)j(tak)m(e)i(a)f(`)p
-Fs(-f)p Ft(')f(option)g(to)h(act)g(on)330 4057 y(shell)24
-b(functions,)h(a)i(`)p Fs(-p)p Ft(')e(option)g(to)i(displa)m(y)d(v)-5
-b(ariables)24 b(with)h(v)-5 b(arious)24 b(attributes)i(set)g(in)e(a)j
-(format)330 4167 y(that)g(can)f(b)s(e)f(used)h(as)g(shell)e(input,)i(a)
-g(`)p Fs(-n)p Ft(')g(option)f(to)i(remo)m(v)m(e)h(v)-5
-b(arious)25 b(v)-5 b(ariable)25 b(attributes,)i(and)330
-4276 y(`)p Fs(name=value)p Ft(')h(argumen)m(ts)j(to)g(set)g(v)-5
-b(ariable)29 b(attributes)h(and)g(v)-5 b(alues)29 b(sim)m(ultaneously)
+Ft(,)f(and)f Fs(declare)g Ft(builtins)h(can)g(tak)m(e)i(a)f(`)p
+Fs(-f)p Ft(')f(option)h(to)g(act)g(on)330 4057 y(shell)26
+b(functions,)g(a)h(`)p Fs(-p)p Ft(')e(option)h(to)h(displa)m(y)f(v)-5
+b(ariables)26 b(with)g(v)-5 b(arious)25 b(attributes)i(set)f(in)f(a)i
+(format)330 4167 y(that)g(can)f(b)s(e)f(used)h(as)g(shell)g(input,)h(a)
+f(`)p Fs(-n)p Ft(')g(option)g(to)h(remo)m(v)m(e)h(v)-5
+b(arious)26 b(v)-5 b(ariable)27 b(attributes,)h(and)330
+4276 y(`)p Fs(name=value)p Ft(')g(argumen)m(ts)j(to)g(set)g(v)-5
+b(ariable)31 b(attributes)g(and)f(v)-5 b(alues)30 b(sim)m(ultaneously)
 -8 b(.)225 4405 y Fp(\017)60 b Ft(The)42 b(Bash)h Fs(hash)f
-Ft(builtin)d(allo)m(ws)k(a)g(name)g(to)g(b)s(e)f(asso)s(ciated)i(with)d
-(an)i(arbitrary)e(\014lename,)330 4515 y(ev)m(en)30 b(when)e(that)h
-(\014lename)f(cannot)i(b)s(e)e(found)g(b)m(y)h(searc)m(hing)f(the)h
-Fs($PATH)p Ft(,)g(using)e(`)p Fs(hash)i(-p)p Ft(')g(\(see)330
-4624 y(Section)h(4.1)i([Bourne)e(Shell)e(Builtins],)g(page)k(33\).)225
-4753 y Fp(\017)60 b Ft(Bash)27 b(includes)d(a)k Fs(help)d
-Ft(builtin)f(for)i(quic)m(k)g(reference)i(to)f(shell)e(facilities)g
-(\(see)j(Section)f(4.2)h([Bash)330 4863 y(Builtins],)g(page)j(39\).)225
-4992 y Fp(\017)60 b Ft(The)42 b Fs(printf)g Ft(builtin)d(is)j(a)m(v)-5
-b(ailable)42 b(to)i(displa)m(y)d(formatted)i(output)g(\(see)h(Section)f
-(4.2)h([Bash)330 5101 y(Builtins],)28 b(page)j(39\).)225
-5230 y Fp(\017)60 b Ft(The)26 b(Bash)h Fs(read)f Ft(builtin)d(\(see)28
-b(Section)f(4.2)h([Bash)f(Builtins],)e(page)j(39\))g(will)c(read)j(a)g
-(line)e(ending)330 5340 y(in)g(`)p Fs(\\)p Ft(')i(with)e(the)h(`)p
-Fs(-r)p Ft(')h(option,)g(and)e(will)f(use)i(the)h Fs(REPLY)e
-Ft(v)-5 b(ariable)25 b(as)i(a)f(default)g(if)f(no)i(non-option)p
-eop
+Ft(builtin)g(allo)m(ws)j(a)e(name)g(to)g(b)s(e)f(asso)s(ciated)j(with)d
+(an)h(arbitrary)f(\014lename,)330 4515 y(ev)m(en)30 b(when)e(that)h
+(\014lename)g(cannot)h(b)s(e)e(found)g(b)m(y)h(searc)m(hing)g(the)g
+Fs($PATH)p Ft(,)g(using)f(`)p Fs(hash)h(-p)p Ft(')g(\(see)330
+4624 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(33\).)225
+4753 y Fp(\017)60 b Ft(Bash)27 b(includes)f(a)i Fs(help)d
+Ft(builtin)i(for)f(quic)m(k)h(reference)h(to)f(shell)g(facilities)i
+(\(see)f(Section)g(4.2)g([Bash)330 4863 y(Builtins],)j(page)g(39\).)225
+4992 y Fp(\017)60 b Ft(The)42 b Fs(printf)g Ft(builtin)g(is)h(a)m(v)-5
+b(ailable)45 b(to)f(displa)m(y)f(formatted)g(output)g(\(see)h(Section)g
+(4.2)g([Bash)330 5101 y(Builtins],)31 b(page)g(39\).)225
+5230 y Fp(\017)60 b Ft(The)26 b(Bash)h Fs(read)f Ft(builtin)g(\(see)i
+(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(39\))g(will)f(read)g(a)g
+(line)g(ending)330 5340 y(in)f(`)p Fs(\\)p Ft(')h(with)f(the)g(`)p
+Fs(-r)p Ft(')h(option,)h(and)d(will)i(use)f(the)h Fs(REPLY)e
+Ft(v)-5 b(ariable)27 b(as)g(a)f(default)h(if)f(no)h(non-option)p
+eop end
 %%Page: 128 134
-128 133 bop 150 -116 a Ft(128)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-330 299 y(argumen)m(ts)g(are)h(supplied.)40 b(The)30
-b(Bash)i Fs(read)e Ft(builtin)d(also)32 b(accepts)g(a)g(prompt)e
-(string)g(with)g(the)330 408 y(`)p Fs(-p)p Ft(')35 b(option)f(and)g
-(will)e(use)j(Readline)e(to)j(obtain)e(the)h(line)e(when)h(giv)m(en)h
-(the)g(`)p Fs(-e)p Ft(')g(option.)53 b(The)330 518 y
-Fs(read)31 b Ft(builtin)e(also)k(has)f(additional)e(options)i(to)h(con)
-m(trol)g(input:)43 b(the)32 b(`)p Fs(-s)p Ft(')h(option)e(will)f(turn)i
-(o\013)330 628 y(ec)m(hoing)37 b(of)f(input)e(c)m(haracters)k(as)e
-(they)h(are)f(read,)i(the)e(`)p Fs(-t)p Ft(')g(option)g(will)e(allo)m
-(w)h Fs(read)g Ft(to)i(time)330 737 y(out)c(if)f(input)f(do)s(es)h(not)
-h(arriv)m(e)f(within)f(a)i(sp)s(eci\014ed)e(n)m(um)m(b)s(er)g(of)i
-(seconds,)h(the)f(`)p Fs(-n)p Ft(')f(option)h(will)330
-847 y(allo)m(w)27 b(reading)f(only)h(a)h(sp)s(eci\014ed)d(n)m(um)m(b)s
-(er)h(of)i(c)m(haracters)h(rather)e(than)g(a)h(full)d(line,)i(and)f
-(the)i(`)p Fs(-d)p Ft(')330 956 y(option)i(will)e(read)i(un)m(til)e(a)j
-(particular)e(c)m(haracter)j(rather)e(than)g(newline.)225
-1096 y Fp(\017)60 b Ft(The)33 b Fs(return)e Ft(builtin)f(ma)m(y)j(b)s
-(e)g(used)f(to)i(ab)s(ort)f(execution)g(of)g(scripts)f(executed)i(with)
-e(the)h Fs(.)g Ft(or)330 1205 y Fs(source)c Ft(builtins)d(\(see)32
-b(Section)e(4.1)h([Bourne)g(Shell)d(Builtins],)g(page)j(33\).)225
-1345 y Fp(\017)60 b Ft(Bash)43 b(includes)e(the)i Fs(shopt)f
-Ft(builtin,)h(for)g(\014ner)f(con)m(trol)i(of)f(shell)f(optional)g
-(capabilities)f(\(see)330 1455 y(Section)33 b(4.2)h([Bash)f(Builtins],)
-f(page)h(39\),)i(and)e(allo)m(ws)f(these)h(options)g(to)g(b)s(e)g(set)g
-(and)g(unset)f(at)330 1564 y(shell)d(in)m(v)m(o)s(cation)h(\(see)h
-(Section)f(6.1)i([In)m(v)m(oking)e(Bash],)h(page)h(63\).)225
-1704 y Fp(\017)60 b Ft(Bash)23 b(has)f(m)m(uc)m(h)g(more)h(optional)f
-(b)s(eha)m(vior)f(con)m(trollable)h(with)f(the)i Fs(set)e
-Ft(builtin)e(\(see)24 b(Section)e(4.3)330 1813 y([The)30
-b(Set)h(Builtin],)d(page)j(50\).)225 1953 y Fp(\017)60
-b Ft(The)31 b(`)p Fs(-x)p Ft(')g(\()p Fs(xtrace)p Ft(\))g(option)g
-(displa)m(ys)e(commands)j(other)f(than)h(simple)d(commands)i(when)g(p)s
-(er-)330 2062 y(forming)e(an)h(execution)h(trace)g(\(see)h(Section)e
-(4.3)h([The)g(Set)f(Builtin],)e(page)k(50\).)225 2202
-y Fp(\017)60 b Ft(The)28 b Fs(test)g Ft(builtin)e(\(see)k(Section)e
-(4.1)i([Bourne)f(Shell)e(Builtins],)g(page)j(33\))g(is)e(sligh)m(tly)f
-(di\013eren)m(t,)330 2311 y(as)c(it)f(implemen)m(ts)e(the)j
-Fl(posix)f Ft(algorithm,)h(whic)m(h)e(sp)s(eci\014es)g(the)i(b)s(eha)m
-(vior)e(based)h(on)h(the)f(n)m(um)m(b)s(er)330 2421 y(of)31
-b(argumen)m(ts.)225 2560 y Fp(\017)60 b Ft(Bash)31 b(includes)e(the)j
-Fs(caller)d Ft(builtin,)g(whic)m(h)h(displa)m(ys)f(the)i(con)m(text)i
-(of)f(an)m(y)g(activ)m(e)g(subroutine)330 2670 y(call)26
-b(\(a)h(shell)d(function)i(or)g(a)h(script)e(executed)i(with)e(the)i
-Fs(.)f Ft(or)g Fs(source)f Ft(builtins\).)36 b(This)25
+TeXDict begin 128 133 bop 150 -116 a Ft(128)2527 b(Bash)31
+b(Reference)g(Man)m(ual)330 299 y(argumen)m(ts)g(are)h(supplied.)42
+b(The)30 b(Bash)i Fs(read)e Ft(builtin)g(also)j(accepts)f(a)g(prompt)e
+(string)h(with)g(the)330 408 y(`)p Fs(-p)p Ft(')k(option)g(and)f(will)h
+(use)g(Readline)g(to)h(obtain)f(the)g(line)g(when)f(giv)m(en)i(the)f(`)
+p Fs(-e)p Ft(')g(option.)54 b(The)330 518 y Fs(read)31
+b Ft(builtin)h(also)i(has)e(additional)h(options)g(to)g(con)m(trol)h
+(input:)44 b(the)32 b(`)p Fs(-s)p Ft(')h(option)f(will)h(turn)f(o\013)
+330 628 y(ec)m(hoing)38 b(of)e(input)f(c)m(haracters)j(as)e(they)h(are)
+f(read,)i(the)e(`)p Fs(-t)p Ft(')g(option)h(will)g(allo)m(w)g
+Fs(read)e Ft(to)i(time)330 737 y(out)c(if)g(input)f(do)s(es)g(not)h
+(arriv)m(e)g(within)g(a)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)f(of)i
+(seconds,)h(the)f(`)p Fs(-n)p Ft(')f(option)i(will)330
+847 y(allo)m(w)29 b(reading)e(only)h(a)g(sp)s(eci\014ed)e(n)m(um)m(b)s
+(er)g(of)i(c)m(haracters)h(rather)e(than)g(a)h(full)f(line,)i(and)d
+(the)i(`)p Fs(-d)p Ft(')330 956 y(option)j(will)g(read)f(un)m(til)g(a)h
+(particular)g(c)m(haracter)h(rather)e(than)g(newline.)225
+1096 y Fp(\017)60 b Ft(The)33 b Fs(return)e Ft(builtin)i(ma)m(y)g(b)s
+(e)g(used)f(to)i(ab)s(ort)f(execution)h(of)f(scripts)g(executed)h(with)
+f(the)g Fs(.)g Ft(or)330 1205 y Fs(source)c Ft(builtins)g(\(see)j
+(Section)f(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(33\).)225
+1345 y Fp(\017)60 b Ft(Bash)43 b(includes)g(the)g Fs(shopt)f
+Ft(builtin,)k(for)d(\014ner)f(con)m(trol)j(of)e(shell)h(optional)g
+(capabilities)h(\(see)330 1455 y(Section)34 b(4.2)g([Bash)f(Builtins],)
+i(page)e(39\),)i(and)e(allo)m(ws)h(these)f(options)h(to)f(b)s(e)g(set)g
+(and)g(unset)f(at)330 1564 y(shell)f(in)m(v)m(o)s(cation)h(\(see)f
+(Section)g(6.1)h([In)m(v)m(oking)f(Bash],)g(page)h(63\).)225
+1704 y Fp(\017)60 b Ft(Bash)23 b(has)f(m)m(uc)m(h)g(more)h(optional)h
+(b)s(eha)m(vior)e(con)m(trollable)j(with)d(the)h Fs(set)e
+Ft(builtin)h(\(see)i(Section)f(4.3)330 1813 y([The)30
+b(Set)h(Builtin],)g(page)g(50\).)225 1953 y Fp(\017)60
+b Ft(The)31 b(`)p Fs(-x)p Ft(')g(\()p Fs(xtrace)p Ft(\))g(option)h
+(displa)m(ys)f(commands)h(other)f(than)h(simple)f(commands)g(when)g(p)s
+(er-)330 2062 y(forming)f(an)g(execution)i(trace)f(\(see)h(Section)f
+(4.3)g([The)g(Set)f(Builtin],)h(page)h(50\).)225 2202
+y Fp(\017)60 b Ft(The)28 b Fs(test)g Ft(builtin)h(\(see)h(Section)f
+(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(33\))g(is)f(sligh)m(tly)h
+(di\013eren)m(t,)330 2311 y(as)23 b(it)g(implemen)m(ts)f(the)h
+Fl(posix)f Ft(algorithm,)j(whic)m(h)d(sp)s(eci\014es)g(the)h(b)s(eha)m
+(vior)f(based)g(on)h(the)f(n)m(um)m(b)s(er)330 2421 y(of)31
+b(argumen)m(ts.)225 2560 y Fp(\017)60 b Ft(Bash)31 b(includes)g(the)h
+Fs(caller)d Ft(builtin,)j(whic)m(h)f(displa)m(ys)g(the)g(con)m(text)i
+(of)f(an)m(y)g(activ)m(e)h(subroutine)330 2670 y(call)28
+b(\(a)f(shell)f(function)h(or)f(a)h(script)f(executed)h(with)f(the)h
+Fs(.)f Ft(or)g Fs(source)f Ft(builtins\).)39 b(This)26
 b(supp)s(orts)330 2780 y(the)31 b(bash)e(debugger.)225
-2919 y Fp(\017)60 b Ft(The)42 b Fs(trap)f Ft(builtin)e(\(see)44
-b(Section)e(4.1)i([Bourne)e(Shell)e(Builtins],)k(page)f(33\))h(allo)m
-(ws)e(a)g Fs(DEBUG)330 3029 y Ft(pseudo-signal)36 b(sp)s
-(eci\014cation,)i(similar)d(to)j Fs(EXIT)p Ft(.)62 b(Commands)36
-b(sp)s(eci\014ed)g(with)g(a)i Fs(DEBUG)e Ft(trap)330
-3138 y(are)k(executed)g(b)s(efore)f(ev)m(ery)h(simple)d(command,)42
-b Fs(for)c Ft(command,)k Fs(case)c Ft(command,)k Fs(select)330
-3248 y Ft(command,)35 b(ev)m(ery)g(arithmetic)e Fs(for)g
-Ft(command,)i(and)f(b)s(efore)g(the)g(\014rst)f(command)h(executes)h
-(in)330 3357 y(a)29 b(shell)e(function.)39 b(The)28 b
-Fs(DEBUG)g Ft(trap)g(is)g(not)h(inherited)d(b)m(y)j(shell)e(functions)g
-(unless)g(the)i(function)330 3467 y(has)35 b(b)s(een)g(giv)m(en)h(the)g
-Fs(trace)e Ft(attribute)h(or)h(the)g Fs(functrace)d Ft(option)i(has)g
-(b)s(een)g(enabled)f(using)330 3577 y(the)28 b Fs(shopt)e
-Ft(builtin.)36 b(The)27 b Fs(extdebug)f Ft(shell)g(option)h(has)g
-(additional)e(e\013ects)k(on)f(the)g Fs(DEBUG)e Ft(trap.)330
-3716 y(The)21 b Fs(trap)e Ft(builtin)f(\(see)k(Section)f(4.1)h([Bourne)
-f(Shell)e(Builtins],)i(page)h(33\))g(allo)m(ws)e(an)h
-Fs(ERR)f Ft(pseudo-)330 3826 y(signal)28 b(sp)s(eci\014cation,)h
-(similar)e(to)j Fs(EXIT)f Ft(and)g Fs(DEBUG)p Ft(.)39
-b(Commands)28 b(sp)s(eci\014ed)g(with)g(an)h Fs(ERR)g
-Ft(trap)330 3935 y(are)40 b(executed)g(after)g(a)f(simple)f(command)h
-(fails,)h(with)e(a)i(few)f(exceptions.)67 b(The)39 b
-Fs(ERR)g Ft(trap)g(is)330 4045 y(not)g(inherited)d(b)m(y)j(shell)e
-(functions)g(unless)g(the)i Fs(-o)29 b(errtrace)37 b
-Ft(option)h(to)h(the)g Fs(set)f Ft(builtin)d(is)330 4154
-y(enabled.)330 4294 y(The)j Fs(trap)g Ft(builtin)e(\(see)j(Section)g
-(4.1)h([Bourne)f(Shell)e(Builtins],)h(page)i(33\))g(allo)m(ws)e(a)i
-Fs(RETURN)330 4403 y Ft(pseudo-signal)33 b(sp)s(eci\014cation,)j
-(similar)c(to)k Fs(EXIT)e Ft(and)g Fs(DEBUG)p Ft(.)54
-b(Commands)34 b(sp)s(eci\014ed)f(with)h(an)330 4513 y
-Fs(RETURN)39 b Ft(trap)i(are)g(executed)h(b)s(efore)e(execution)h
-(resumes)f(after)h(a)g(shell)e(function)h(or)h(a)g(shell)330
-4623 y(script)35 b(executed)h(with)f Fs(.)g Ft(or)h Fs(source)e
-Ft(returns.)56 b(The)35 b Fs(RETURN)f Ft(trap)i(is)f(not)h(inherited)d
-(b)m(y)j(shell)330 4732 y(functions.)225 4872 y Fp(\017)60
-b Ft(The)30 b(Bash)g Fs(type)f Ft(builtin)e(is)i(more)h(extensiv)m(e)h
-(and)e(giv)m(es)i(more)f(information)f(ab)s(out)h(the)g(names)330
-4981 y(it)g(\014nds)f(\(see)i(Section)f(4.2)i([Bash)e(Builtins],)f
-(page)i(39\).)225 5121 y Fp(\017)60 b Ft(The)34 b(Bash)h
-Fs(umask)e Ft(builtin)e(p)s(ermits)i(a)h(`)p Fs(-p)p
-Ft(')h(option)f(to)h(cause)g(the)g(output)f(to)h(b)s(e)f(displa)m(y)m
-(ed)f(in)330 5230 y(the)i(form)g(of)g(a)h Fs(umask)e
-Ft(command)h(that)g(ma)m(y)h(b)s(e)f(reused)f(as)h(input)f(\(see)i
-(Section)f(4.1)h([Bourne)330 5340 y(Shell)28 b(Builtins],)g(page)k
-(33\).)p eop
+2919 y Fp(\017)60 b Ft(The)42 b Fs(trap)f Ft(builtin)h(\(see)i(Section)
+f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(33\))h(allo)m(ws)g(a)e
+Fs(DEBUG)330 3029 y Ft(pseudo-signal)c(sp)s(eci\014cation,)i(similar)e
+(to)g Fs(EXIT)p Ft(.)62 b(Commands)36 b(sp)s(eci\014ed)h(with)g(a)h
+Fs(DEBUG)e Ft(trap)330 3138 y(are)k(executed)g(b)s(efore)f(ev)m(ery)h
+(simple)f(command,)j Fs(for)c Ft(command,)k Fs(case)c
+Ft(command,)k Fs(select)330 3248 y Ft(command,)35 b(ev)m(ery)g
+(arithmetic)g Fs(for)e Ft(command,)i(and)f(b)s(efore)g(the)g(\014rst)f
+(command)h(executes)h(in)330 3357 y(a)29 b(shell)g(function.)40
+b(The)28 b Fs(DEBUG)g Ft(trap)g(is)h(not)g(inherited)f(b)m(y)h(shell)g
+(functions)f(unless)g(the)h(function)330 3467 y(has)35
+b(b)s(een)g(giv)m(en)i(the)f Fs(trace)e Ft(attribute)i(or)g(the)g
+Fs(functrace)d Ft(option)j(has)f(b)s(een)g(enabled)g(using)330
+3577 y(the)28 b Fs(shopt)e Ft(builtin.)39 b(The)27 b
+Fs(extdebug)f Ft(shell)i(option)g(has)f(additional)h(e\013ects)h(on)f
+(the)g Fs(DEBUG)e Ft(trap.)330 3716 y(The)21 b Fs(trap)e
+Ft(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j
+(page)e(33\))g(allo)m(ws)g(an)f Fs(ERR)f Ft(pseudo-)330
+3826 y(signal)30 b(sp)s(eci\014cation,)h(similar)f(to)g
+Fs(EXIT)f Ft(and)g Fs(DEBUG)p Ft(.)39 b(Commands)28 b(sp)s(eci\014ed)h
+(with)g(an)g Fs(ERR)g Ft(trap)330 3935 y(are)40 b(executed)g(after)g(a)
+f(simple)h(command)f(fails,)j(with)d(a)h(few)f(exceptions.)68
+b(The)39 b Fs(ERR)g Ft(trap)g(is)330 4045 y(not)g(inherited)f(b)m(y)h
+(shell)g(functions)f(unless)g(the)h Fs(-o)29 b(errtrace)37
+b Ft(option)i(to)g(the)g Fs(set)f Ft(builtin)g(is)330
+4154 y(enabled.)330 4294 y(The)g Fs(trap)g Ft(builtin)h(\(see)g
+(Section)h(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(33\))g(allo)m
+(ws)g(a)g Fs(RETURN)330 4403 y Ft(pseudo-signal)35 b(sp)s
+(eci\014cation,)j(similar)d(to)h Fs(EXIT)e Ft(and)g Fs(DEBUG)p
+Ft(.)54 b(Commands)34 b(sp)s(eci\014ed)g(with)h(an)330
+4513 y Fs(RETURN)k Ft(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
+4623 y(script)36 b(executed)g(with)g Fs(.)f Ft(or)h Fs(source)e
+Ft(returns.)56 b(The)35 b Fs(RETURN)f Ft(trap)i(is)g(not)g(inherited)f
+(b)m(y)h(shell)330 4732 y(functions.)225 4872 y Fp(\017)60
+b Ft(The)30 b(Bash)g Fs(type)f Ft(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
+4981 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i
+(page)f(39\).)225 5121 y Fp(\017)60 b Ft(The)34 b(Bash)h
+Fs(umask)e Ft(builtin)h(p)s(ermits)g(a)g(`)p Fs(-p)p
+Ft(')h(option)g(to)g(cause)g(the)g(output)f(to)h(b)s(e)f(displa)m(y)m
+(ed)h(in)330 5230 y(the)g(form)g(of)g(a)h Fs(umask)e
+Ft(command)h(that)g(ma)m(y)h(b)s(e)f(reused)f(as)h(input)g(\(see)h
+(Section)g(4.1)g([Bourne)330 5340 y(Shell)30 b(Builtins],)h(page)h
+(33\).)p eop end
 %%Page: 129 135
-129 134 bop 150 -116 a Ft(App)s(endix)28 b(B:)j(Ma)5
-b(jor)31 b(Di\013erences)f(F)-8 b(rom)31 b(The)f(Bourne)g(Shell)1256
-b(129)225 299 y Fp(\017)60 b Ft(Bash)34 b(implemen)m(ts)f(a)i
-Fs(csh)p Ft(-lik)m(e)e(directory)g(stac)m(k,)k(and)d(pro)m(vides)f(the)
-h Fs(pushd)p Ft(,)g Fs(popd)p Ft(,)g(and)g Fs(dirs)330
-408 y Ft(builtins)d(to)36 b(manipulate)d(it)i(\(see)g(Section)g(6.8)h
-([The)f(Directory)g(Stac)m(k],)j(page)d(73\).)56 b(Bash)35
-b(also)330 518 y(mak)m(es)c(the)g(directory)f(stac)m(k)h(visible)d(as)j
-(the)f(v)-5 b(alue)30 b(of)h(the)f Fs(DIRSTACK)f Ft(shell)f(v)-5
-b(ariable.)225 646 y Fp(\017)60 b Ft(Bash)28 b(in)m(terprets)g(sp)s
-(ecial)f(bac)m(kslash-escap)s(ed)h(c)m(haracters)h(in)e(the)i(prompt)e
-(strings)g(when)g(in)m(ter-)330 756 y(activ)m(e)32 b(\(see)f(Section)f
-(6.9)i([Prin)m(ting)c(a)j(Prompt],)g(page)g(75\).)225
-885 y Fp(\017)60 b Ft(The)46 b(Bash)h(restricted)f(mo)s(de)g(is)g(more)
-g(useful)f(\(see)i(Section)g(6.10)h([The)e(Restricted)h(Shell],)330
-994 y(page)31 b(76\);)h(the)f(SVR4.2)g(shell)d(restricted)i(mo)s(de)g
-(is)g(to)s(o)h(limited.)225 1123 y Fp(\017)60 b Ft(The)30
-b Fs(disown)f Ft(builtin)e(can)k(remo)m(v)m(e)h(a)f(job)f(from)g(the)h
-(in)m(ternal)e(shell)g(job)h(table)h(\(see)g(Section)g(7.2)330
-1232 y([Job)i(Con)m(trol)g(Builtins],)e(page)j(80\))h(or)e(suppress)e
-(the)i(sending)f(of)h Fs(SIGHUP)e Ft(to)j(a)g(job)f(when)f(the)330
-1342 y(shell)d(exits)h(as)g(the)h(result)e(of)i(a)f Fs(SIGHUP)p
-Ft(.)225 1470 y Fp(\017)60 b Ft(The)28 b(SVR4.2)h(shell)d(has)i(t)m(w)m
-(o)i(privilege-related)c(builtins)f(\()p Fs(mldmode)h
+TeXDict begin 129 134 bop 150 -116 a Ft(App)s(endix)29
+b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
+b(The)f(Bourne)g(Shell)1258 b(129)225 299 y Fp(\017)60
+b Ft(Bash)34 b(implemen)m(ts)h(a)g Fs(csh)p Ft(-lik)m(e)g(directory)f
+(stac)m(k,)j(and)d(pro)m(vides)g(the)g Fs(pushd)p Ft(,)g
+Fs(popd)p Ft(,)g(and)g Fs(dirs)330 408 y Ft(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
+(73\).)56 b(Bash)35 b(also)330 518 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
+Fs(DIRSTACK)f Ft(shell)h(v)-5 b(ariable.)225 646 y Fp(\017)60
+b Ft(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
+756 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h([Prin)m(ting)e(a)h
+(Prompt],)g(page)g(75\).)225 885 y Fp(\017)60 b Ft(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 994 y(page)31
+b(76\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s(de)f(is)h(to)s(o)g
+(limited.)225 1123 y Fp(\017)60 b Ft(The)30 b Fs(disown)f
+Ft(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 1232
+y([Job)h(Con)m(trol)h(Builtins],)g(page)g(80\))h(or)e(suppress)e(the)i
+(sending)g(of)g Fs(SIGHUP)e Ft(to)j(a)g(job)f(when)f(the)330
+1342 y(shell)f(exits)g(as)f(the)h(result)f(of)h(a)f Fs(SIGHUP)p
+Ft(.)225 1470 y Fp(\017)60 b Ft(The)28 b(SVR4.2)h(shell)f(has)g(t)m(w)m
+(o)i(privilege-related)g(builtins)e(\()p Fs(mldmode)e
 Ft(and)i Fs(priv)p Ft(\))f(not)i(presen)m(t)f(in)330
 1580 y(Bash.)225 1708 y Fp(\017)60 b Ft(Bash)31 b(do)s(es)f(not)g(ha)m
 (v)m(e)i(the)e Fs(stop)g Ft(or)g Fs(newgrp)f Ft(builtins.)225
 1837 y Fp(\017)60 b Ft(Bash)31 b(do)s(es)f(not)g(use)g(the)h
-Fs(SHACCT)d Ft(v)-5 b(ariable)30 b(or)g(p)s(erform)f(shell)g(accoun)m
+Fs(SHACCT)d Ft(v)-5 b(ariable)32 b(or)e(p)s(erform)f(shell)i(accoun)m
 (ting.)225 1965 y Fp(\017)60 b Ft(The)30 b(SVR4.2)h Fs(sh)f
-Ft(uses)g(a)g Fs(TIMEOUT)f Ft(v)-5 b(ariable)29 b(lik)m(e)h(Bash)g
-(uses)g Fs(TMOUT)p Ft(.)150 2112 y(More)h(features)g(unique)d(to)j
-(Bash)g(ma)m(y)g(b)s(e)f(found)f(in)g(Chapter)g(6)i([Bash)g(F)-8
+Ft(uses)g(a)g Fs(TIMEOUT)f Ft(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e
+(uses)g Fs(TMOUT)p Ft(.)150 2112 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(63.)150 2351 y Fr(B.1)67 b(Implemen)l(tation)48
 b(Di\013erences)e(F)-11 b(rom)44 b(The)h(SVR4.2)g(Shell)275
-2589 y Ft(Since)38 b(Bash)i(is)e(a)i(completely)g(new)f(implemen)m
-(tation,)h(it)f(do)s(es)h(not)f(su\013er)g(from)g(man)m(y)h(of)g(the)
-150 2699 y(limitations)28 b(of)j(the)f(SVR4.2)h(shell.)39
+2589 y Ft(Since)39 b(Bash)h(is)f(a)h(completely)i(new)d(implemen)m
+(tation,)k(it)d(do)s(es)g(not)f(su\013er)g(from)g(man)m(y)h(of)g(the)
+150 2699 y(limitations)32 b(of)f(the)f(SVR4.2)h(shell.)41
 b(F)-8 b(or)31 b(instance:)225 2827 y Fp(\017)60 b Ft(Bash)32
-b(do)s(es)f(not)h(fork)f(a)h(subshell)c(when)j(redirecting)f(in)m(to)i
-(or)f(out)h(of)g(a)g(shell)d(con)m(trol)j(structure)330
-2937 y(suc)m(h)e(as)h(an)f Fs(if)g Ft(or)g Fs(while)f
+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
+2937 y(suc)m(h)d(as)h(an)f Fs(if)g Ft(or)g Fs(while)f
 Ft(statemen)m(t.)225 3065 y Fp(\017)60 b Ft(Bash)29 b(do)s(es)f(not)h
-(allo)m(w)f(un)m(balanced)g(quotes.)41 b(The)28 b(SVR4.2)h(shell)e
-(will)f(silen)m(tly)h(insert)h(a)h(needed)330 3175 y(closing)e(quote)i
-(at)f Fs(EOF)f Ft(under)g(certain)g(circumstances.)40
-b(This)26 b(can)i(b)s(e)g(the)g(cause)g(of)g(some)h(hard-)330
+(allo)m(w)h(un)m(balanced)f(quotes.)41 b(The)28 b(SVR4.2)h(shell)g
+(will)g(silen)m(tly)h(insert)f(a)g(needed)330 3175 y(closing)g(quote)g
+(at)f Fs(EOF)f Ft(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
 3285 y(to-\014nd)h(errors.)225 3413 y Fp(\017)60 b Ft(The)45
-b(SVR4.2)h(shell)d(uses)i(a)g(baro)s(que)g(memory)g(managemen)m(t)i(sc)
+b(SVR4.2)h(shell)f(uses)g(a)g(baro)s(que)g(memory)g(managemen)m(t)i(sc)
 m(heme)e(based)g(on)g(trapping)330 3523 y Fs(SIGSEGV)p
-Ft(.)57 b(If)35 b(the)i(shell)d(is)i(started)h(from)e(a)i(pro)s(cess)f
-(with)f Fs(SIGSEGV)f Ft(blo)s(c)m(k)m(ed)j(\(e.g.,)i(b)m(y)d(using)330
-3632 y(the)31 b Fs(system\(\))d Ft(C)i(library)e(function)h(call\),)h
-(it)g(misb)s(eha)m(v)m(es)g(badly)-8 b(.)225 3761 y Fp(\017)60
-b Ft(In)26 b(a)i(questionable)e(attempt)j(at)f(securit)m(y)-8
-b(,)28 b(the)f(SVR4.2)h(shell,)e(when)h(in)m(v)m(ok)m(ed)g(without)g
-(the)g(`)p Fs(-p)p Ft(')330 3870 y(option,)38 b(will)33
-b(alter)k(its)e(real)h(and)g(e\013ectiv)m(e)i Fl(uid)e
-Ft(and)g Fl(gid)h Ft(if)e(they)i(are)f(less)g(than)g(some)h(magic)330
-3980 y(threshold)29 b(v)-5 b(alue,)30 b(commonly)g(100.)42
-b(This)28 b(can)j(lead)f(to)h(unexp)s(ected)f(results.)225
-4108 y Fp(\017)60 b Ft(The)30 b(SVR4.2)h(shell)e(do)s(es)h(not)g(allo)m
-(w)g(users)g(to)h(trap)f Fs(SIGSEGV)p Ft(,)f Fs(SIGALRM)p
+Ft(.)57 b(If)35 b(the)i(shell)f(is)h(started)g(from)e(a)i(pro)s(cess)f
+(with)g Fs(SIGSEGV)e Ft(blo)s(c)m(k)m(ed)k(\(e.g.,)h(b)m(y)d(using)330
+3632 y(the)31 b Fs(system\(\))d Ft(C)i(library)g(function)g(call\),)i
+(it)f(misb)s(eha)m(v)m(es)g(badly)-8 b(.)225 3761 y Fp(\017)60
+b Ft(In)26 b(a)i(questionable)g(attempt)h(at)f(securit)m(y)-8
+b(,)29 b(the)e(SVR4.2)h(shell,)g(when)f(in)m(v)m(ok)m(ed)h(without)g
+(the)f(`)p Fs(-p)p Ft(')330 3870 y(option,)39 b(will)d(alter)i(its)e
+(real)h(and)f(e\013ectiv)m(e)j Fl(uid)d Ft(and)g Fl(gid)h
+Ft(if)f(they)h(are)f(less)h(than)f(some)h(magic)330 3980
+y(threshold)30 b(v)-5 b(alue,)31 b(commonly)g(100.)42
+b(This)29 b(can)i(lead)g(to)g(unexp)s(ected)f(results.)225
+4108 y Fp(\017)60 b Ft(The)30 b(SVR4.2)h(shell)g(do)s(es)f(not)g(allo)m
+(w)i(users)e(to)h(trap)f Fs(SIGSEGV)p Ft(,)f Fs(SIGALRM)p
 Ft(,)f(or)j Fs(SIGCHLD)p Ft(.)225 4237 y Fp(\017)60 b
-Ft(The)34 b(SVR4.2)h(shell)e(do)s(es)i(not)f(allo)m(w)h(the)f
+Ft(The)34 b(SVR4.2)h(shell)g(do)s(es)g(not)f(allo)m(w)j(the)d
 Fs(IFS)p Ft(,)h Fs(MAILCHECK)p Ft(,)f Fs(PATH)p Ft(,)h
-Fs(PS1)p Ft(,)g(or)f Fs(PS2)g Ft(v)-5 b(ariables)33 b(to)330
-4346 y(b)s(e)d(unset.)225 4475 y Fp(\017)60 b Ft(The)30
-b(SVR4.2)h(shell)e(treats)i(`)p Fs(^)p Ft(')f(as)h(the)g(undo)s(cumen)m
-(ted)e(equiv)-5 b(alen)m(t)29 b(of)i(`)p Fs(|)p Ft('.)225
-4603 y Fp(\017)60 b Ft(Bash)37 b(allo)m(ws)f(m)m(ultiple)e(option)i
-(argumen)m(ts)h(when)e(it)h(is)g(in)m(v)m(ok)m(ed)h(\()p
+Fs(PS1)p Ft(,)g(or)f Fs(PS2)g Ft(v)-5 b(ariables)35 b(to)330
+4346 y(b)s(e)30 b(unset.)225 4475 y Fp(\017)60 b Ft(The)30
+b(SVR4.2)h(shell)g(treats)g(`)p Fs(^)p Ft(')f(as)h(the)g(undo)s(cumen)m
+(ted)e(equiv)-5 b(alen)m(t)31 b(of)g(`)p Fs(|)p Ft('.)225
+4603 y Fp(\017)60 b Ft(Bash)37 b(allo)m(ws)h(m)m(ultiple)f(option)g
+(argumen)m(ts)g(when)e(it)i(is)g(in)m(v)m(ok)m(ed)h(\()p
 Fs(-x)30 b(-v)p Ft(\);)40 b(the)c(SVR4.2)i(shell)330
-4713 y(allo)m(ws)32 b(only)g(one)h(option)f(argumen)m(t)h(\()p
-Fs(-xv)p Ft(\).)47 b(In)32 b(fact,)i(some)f(v)m(ersions)f(of)h(the)g
-(shell)d(dump)h(core)330 4822 y(if)e(the)i(second)f(argumen)m(t)h(b)s
-(egins)e(with)g(a)i(`)p Fs(-)p Ft('.)225 4951 y Fp(\017)60
-b Ft(The)35 b(SVR4.2)i(shell)c(exits)j(a)g(script)f(if)f(an)m(y)i
-(builtin)c(fails;)37 b(Bash)f(exits)g(a)g(script)e(only)h(if)g(one)h
-(of)330 5060 y(the)d Fl(posix)g Ft(1003.2)i(sp)s(ecial)d(builtins)d
-(fails,)k(and)f(only)h(for)f(certain)h(failures,)g(as)g(en)m(umerated)g
-(in)330 5170 y(the)e Fl(posix)e Ft(1003.2)k(standard.)225
-5298 y Fp(\017)60 b Ft(The)30 b(SVR4.2)h(shell)e(b)s(eha)m(v)m(es)h
-(di\013eren)m(tly)f(when)h(in)m(v)m(ok)m(ed)h(as)f Fs(jsh)g
-Ft(\(it)g(turns)f(on)h(job)g(con)m(trol\).)p eop
+4713 y(allo)m(ws)c(only)f(one)g(option)g(argumen)m(t)g(\()p
+Fs(-xv)p Ft(\).)47 b(In)32 b(fact,)i(some)f(v)m(ersions)g(of)g(the)g
+(shell)f(dump)f(core)330 4822 y(if)f(the)h(second)f(argumen)m(t)h(b)s
+(egins)f(with)g(a)h(`)p Fs(-)p Ft('.)225 4951 y Fp(\017)60
+b Ft(The)35 b(SVR4.2)i(shell)e(exits)i(a)f(script)g(if)f(an)m(y)h
+(builtin)f(fails;)k(Bash)d(exits)h(a)f(script)f(only)h(if)g(one)g(of)
+330 5060 y(the)d Fl(posix)g Ft(1003.2)i(sp)s(ecial)f(builtins)e(fails,)
+j(and)d(only)i(for)e(certain)i(failures,)h(as)e(en)m(umerated)g(in)330
+5170 y(the)e Fl(posix)e Ft(1003.2)k(standard.)225 5298
+y Fp(\017)60 b Ft(The)30 b(SVR4.2)h(shell)g(b)s(eha)m(v)m(es)f
+(di\013eren)m(tly)h(when)f(in)m(v)m(ok)m(ed)i(as)e Fs(jsh)g
+Ft(\(it)h(turns)e(on)h(job)g(con)m(trol\).)p eop end
 %%Page: 130 136
-130 135 bop 150 -116 a Ft(130)2527 b(Bash)31 b(Reference)g(Man)m(ual)p
-eop
+TeXDict begin 130 135 bop 150 -116 a Ft(130)2527 b(Bash)31
+b(Reference)g(Man)m(ual)p eop end
 %%Page: 131 137
-131 136 bop 150 -116 a Ft(App)s(endix)28 b(C:)i(Cop)m(ying)f(This)g
-(Man)m(ual)2062 b(131)150 299 y Fo(App)t(endix)53 b(C)126
-b(Cop)l(ying)52 b(This)i(Man)l(ual)150 690 y Fr(C.1)68
-b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h(License)1396
-909 y Ft(V)-8 b(ersion)30 b(1.2,)i(No)m(v)m(em)m(b)s(er)g(2002)390
-1052 y(Cop)m(yrigh)m(t)842 1049 y(c)817 1052 y Fp(\015)e
-Ft(2000,2001,2002)36 b(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8
-b(oundation,)31 b(Inc.)390 1161 y(59)g(T)-8 b(emple)30
-b(Place,)h(Suite)e(330,)j(Boston,)g(MA)61 b(02111-1307,)35
-b(USA)390 1380 y(Ev)m(ery)m(one)c(is)f(p)s(ermitted)f(to)i(cop)m(y)g
-(and)f(distribute)e(v)m(erbatim)i(copies)390 1490 y(of)h(this)e
-(license)g(do)s(cumen)m(t,)i(but)e(c)m(hanging)i(it)f(is)f(not)i(allo)m
+TeXDict begin 131 136 bop 150 -116 a Ft(App)s(endix)29
+b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(131)150 299
+y Fo(App)t(endix)52 b(C)126 b(Cop)l(ying)51 b(This)i(Man)l(ual)150
+690 y Fr(C.1)68 b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h
+(License)1396 909 y Ft(V)-8 b(ersion)31 b(1.2,)h(No)m(v)m(em)m(b)s(er)g
+(2002)390 1052 y(Cop)m(yrigh)m(t)842 1049 y(c)817 1052
+y Fp(\015)e Ft(2000,2001,2002)36 b(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)
+-8 b(oundation,)32 b(Inc.)390 1161 y(59)f(T)-8 b(emple)31
+b(Place,)h(Suite)e(330,)i(Boston,)g(MA)61 b(02111-1307,)35
+b(USA)390 1380 y(Ev)m(ery)m(one)c(is)g(p)s(ermitted)f(to)h(cop)m(y)g
+(and)f(distribute)g(v)m(erbatim)h(copies)390 1490 y(of)g(this)f
+(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f(is)f(not)h(allo)m
 (w)m(ed.)199 1632 y(0.)61 b(PREAMBLE)330 1770 y(The)37
-b(purp)s(ose)e(of)i(this)f(License)h(is)f(to)i(mak)m(e)g(a)g(man)m
-(ual,)g(textb)s(o)s(ok,)i(or)d(other)g(functional)f(and)330
-1880 y(useful)28 b(do)s(cumen)m(t)i Fq(free)36 b Ft(in)28
-b(the)j(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j
-(the)e(e\013ectiv)m(e)i(freedom)330 1990 y(to)g(cop)m(y)g(and)f
-(redistribute)e(it,)i(with)g(or)g(without)f(mo)s(difying)f(it,)j
-(either)f(commercially)f(or)h(non-)330 2099 y(commercially)-8
-b(.)53 b(Secondarily)-8 b(,)34 b(this)g(License)g(preserv)m(es)h(for)f
-(the)h(author)f(and)g(publisher)d(a)k(w)m(a)m(y)330 2209
-y(to)i(get)g(credit)f(for)g(their)f(w)m(ork,)j(while)c(not)i(b)s(eing)f
-(considered)g(resp)s(onsible)e(for)j(mo)s(di\014cations)330
-2318 y(made)30 b(b)m(y)h(others.)330 2457 y(This)21 b(License)i(is)f(a)
-i(kind)d(of)j(\\cop)m(yleft",)i(whic)m(h)c(means)h(that)h(deriv)-5
-b(ativ)m(e)22 b(w)m(orks)h(of)h(the)f(do)s(cumen)m(t)330
-2566 y(m)m(ust)34 b(themselv)m(es)g(b)s(e)f(free)h(in)f(the)h(same)g
-(sense.)51 b(It)34 b(complemen)m(ts)g(the)g(GNU)g(General)g(Public)330
-2676 y(License,)c(whic)m(h)f(is)h(a)g(cop)m(yleft)h(license)f(designed)
-f(for)h(free)h(soft)m(w)m(are.)330 2814 y(W)-8 b(e)31
-b(ha)m(v)m(e)f(designed)f(this)f(License)h(in)f(order)h(to)i(use)e(it)g
-(for)g(man)m(uals)g(for)g(free)h(soft)m(w)m(are,)h(b)s(ecause)330
+b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g(a)g(man)m
+(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330
+1880 y(useful)29 b(do)s(cumen)m(t)h Fq(free)36 b Ft(in)29
+b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j
+(the)e(e\013ectiv)m(e)j(freedom)330 1990 y(to)f(cop)m(y)g(and)f
+(redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i
+(either)f(commercially)h(or)e(non-)330 2099 y(commercially)-8
+b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f
+(the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 2209
+y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g
+(considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330
+2318 y(made)30 b(b)m(y)h(others.)330 2457 y(This)22 b(License)i(is)f(a)
+h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5
+b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330
+2566 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g
+(sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330
+2676 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed)
+e(for)g(free)h(soft)m(w)m(are.)330 2814 y(W)-8 b(e)31
+b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h
+(for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330
 2924 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:)
-64 b(a)42 b(free)h(program)f(should)e(come)j(with)e(man)m(uals)330
-3033 y(pro)m(viding)27 b(the)i(same)g(freedoms)f(that)i(the)f(soft)m(w)
-m(are)h(do)s(es.)40 b(But)29 b(this)e(License)i(is)f(not)h(limited)d
-(to)330 3143 y(soft)m(w)m(are)32 b(man)m(uals;)e(it)g(can)h(b)s(e)f
-(used)g(for)g(an)m(y)h(textual)g(w)m(ork,)g(regardless)f(of)h(sub)5
-b(ject)30 b(matter)i(or)330 3252 y(whether)f(it)g(is)f(published)e(as)k
-(a)f(prin)m(ted)f(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)g
-(License)g(principally)c(for)330 3362 y(w)m(orks)j(whose)h(purp)s(ose)d
-(is)i(instruction)e(or)i(reference.)199 3500 y(1.)61
-b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3639 y(This)38
-b(License)i(applies)e(to)i(an)m(y)h(man)m(ual)e(or)h(other)g(w)m(ork,)i
-(in)d(an)m(y)h(medium,)h(that)f(con)m(tains)h(a)330 3748
-y(notice)h(placed)f(b)m(y)g(the)h(cop)m(yrigh)m(t)g(holder)e(sa)m(ying)
-h(it)g(can)h(b)s(e)f(distributed)d(under)i(the)i(terms)330
-3858 y(of)c(this)e(License.)61 b(Suc)m(h)37 b(a)h(notice)g(gran)m(ts)g
-(a)g(w)m(orld-wide,)f(ro)m(y)m(alt)m(y-free)j(license,)e(unlimited)c
-(in)330 3967 y(duration,)48 b(to)e(use)f(that)g(w)m(ork)h(under)d(the)j
-(conditions)d(stated)j(herein.)84 b(The)45 b(\\Do)s(cumen)m(t",)330
-4077 y(b)s(elo)m(w,)28 b(refers)g(to)h(an)m(y)g(suc)m(h)f(man)m(ual)g
-(or)g(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)e(is)h
-(a)i(licensee,)g(and)330 4187 y(is)24 b(addressed)g(as)h(\\y)m(ou".)40
-b(Y)-8 b(ou)26 b(accept)g(the)f(license)f(if)g(y)m(ou)i(cop)m(y)-8
-b(,)27 b(mo)s(dify)c(or)i(distribute)e(the)i(w)m(ork)330
-4296 y(in)k(a)i(w)m(a)m(y)g(requiring)d(p)s(ermission)f(under)i(cop)m
-(yrigh)m(t)i(la)m(w.)330 4435 y(A)j(\\Mo)s(di\014ed)e(V)-8
-b(ersion")34 b(of)g(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f
-(con)m(taining)h(the)g(Do)s(cumen)m(t)g(or)330 4544 y(a)k(p)s(ortion)e
-(of)i(it,)h(either)e(copied)g(v)m(erbatim,)i(or)e(with)g(mo)s
-(di\014cations)e(and/or)j(translated)f(in)m(to)330 4654
-y(another)31 b(language.)330 4792 y(A)26 b(\\Secondary)g(Section")g(is)
-f(a)i(named)e(app)s(endix)e(or)j(a)h(fron)m(t-matter)g(section)f(of)g
-(the)g(Do)s(cumen)m(t)330 4902 y(that)c(deals)f(exclusiv)m(ely)f(with)g
-(the)h(relationship)e(of)i(the)h(publishers)17 b(or)k(authors)g(of)h
-(the)f(Do)s(cumen)m(t)330 5011 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m
-(v)m(erall)e(sub)5 b(ject)37 b(\(or)h(to)g(related)f(matters\))h(and)f
-(con)m(tains)g(nothing)f(that)330 5121 y(could)j(fall)g(directly)g
-(within)f(that)j(o)m(v)m(erall)g(sub)5 b(ject.)70 b(\(Th)m(us,)42
-b(if)d(the)i(Do)s(cumen)m(t)g(is)e(in)g(part)i(a)330
-5230 y(textb)s(o)s(ok)24 b(of)g(mathematics,)i(a)e(Secondary)f(Section)
-g(ma)m(y)h(not)g(explain)e(an)m(y)i(mathematics.\))39
-b(The)330 5340 y(relationship)25 b(could)h(b)s(e)h(a)g(matter)i(of)e
-(historical)f(connection)h(with)f(the)i(sub)5 b(ject)27
-b(or)g(with)f(related)p eop
+65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330
+3033 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w)
+m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g
+(to)330 3143 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g
+(for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5
+b(ject)30 b(matter)i(or)330 3252 y(whether)f(it)h(is)f(published)f(as)i
+(a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h
+(License)g(principally)f(for)330 3362 y(w)m(orks)f(whose)h(purp)s(ose)d
+(is)j(instruction)f(or)g(reference.)199 3500 y(1.)61
+b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3639 y(This)39
+b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i
+(in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3748
+y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying)
+h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330
+3858 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f
+(a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d
+(in)330 3967 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j
+(conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330
+4077 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h
+(or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g
+(a)h(licensee,)i(and)330 4187 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40
+b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8
+b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330
+4296 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop)
+m(yrigh)m(t)j(la)m(w.)330 4435 y(A)i(\\Mo)s(di\014ed)f(V)-8
+b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f
+(con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4544 y(a)k(p)s(ortion)f
+(of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s
+(di\014cations)f(and/or)h(translated)g(in)m(to)330 4654
+y(another)31 b(language.)330 4792 y(A)26 b(\\Secondary)g(Section")h(is)
+f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f
+(the)g(Do)s(cumen)m(t)330 4902 y(that)c(deals)g(exclusiv)m(ely)h(with)e
+(the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f
+(Do)s(cumen)m(t)330 5011 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m
+(erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con)
+m(tains)h(nothing)f(that)330 5121 y(could)j(fall)h(directly)g(within)f
+(that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42
+b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330
+5230 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section)
+h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40
+b(The)330 5340 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e
+(historical)i(connection)f(with)f(the)h(sub)5 b(ject)27
+b(or)g(with)g(related)p eop end
 %%Page: 132 138
-132 137 bop 150 -116 a Ft(132)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-330 299 y(matters,)38 b(or)d(of)h(legal,)g(commercial,)h
-(philosophical,)d(ethical)h(or)g(p)s(olitical)e(p)s(osition)h
-(regarding)330 408 y(them.)330 549 y(The)25 b(\\In)m(v)-5
-b(arian)m(t)26 b(Sections")g(are)g(certain)f(Secondary)h(Sections)f
-(whose)g(titles)g(are)h(designated,)h(as)330 659 y(b)s(eing)e(those)i
-(of)g(In)m(v)-5 b(arian)m(t)26 b(Sections,)i(in)d(the)i(notice)g(that)g
-(sa)m(ys)g(that)g(the)g(Do)s(cumen)m(t)g(is)f(released)330
-769 y(under)g(this)h(License.)39 b(If)27 b(a)h(section)g(do)s(es)g(not)
-f(\014t)h(the)g(ab)s(o)m(v)m(e)h(de\014nition)c(of)j(Secondary)f(then)h
-(it)f(is)330 878 y(not)32 b(allo)m(w)m(ed)g(to)g(b)s(e)g(designated)f
-(as)h(In)m(v)-5 b(arian)m(t.)45 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f
-(con)m(tain)h(zero)f(In)m(v)-5 b(arian)m(t)330 988 y(Sections.)38
-b(If)25 b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)e(an)m(y)i
-(In)m(v)-5 b(arian)m(t)24 b(Sections)h(then)f(there)h(are)g(none.)330
-1129 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)f
-(short)h(passages)g(of)g(text)g(that)h(are)f(listed,)g(as)f(F)-8
+TeXDict begin 132 137 bop 150 -116 a Ft(132)2527 b(Bash)31
+b(Reference)g(Man)m(ual)330 299 y(matters,)38 b(or)d(of)h(legal,)i
+(commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s
+(osition)f(regarding)330 408 y(them.)330 549 y(The)25
+b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g
+(Sections)g(whose)f(titles)i(are)f(designated,)i(as)330
+659 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27
+b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s
+(cumen)m(t)g(is)g(released)330 769 y(under)f(this)i(License.)40
+b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h
+(de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 878
+y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5
+b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero)
+e(In)m(v)-5 b(arian)m(t)330 988 y(Sections.)39 b(If)25
+b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v)
+-5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330
+1129 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g
+(short)g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8
 b(ron)m(t-Co)m(v)m(er)330 1238 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m
-(er)j(T)-8 b(exts,)27 b(in)c(the)i(notice)h(that)f(sa)m(ys)h(that)g
-(the)f(Do)s(cumen)m(t)h(is)e(released)g(under)330 1348
-y(this)h(License.)39 b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29
+(er)j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g
+(the)f(Do)s(cumen)m(t)h(is)f(released)g(under)330 1348
+y(this)h(License.)40 b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29
 b(T)-8 b(ext)26 b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)
 g(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 1457
 y(b)s(e)k(at)h(most)g(25)g(w)m(ords.)330 1598 y(A)36
 b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g(the)f(Do)s(cumen)m(t)h
-(means)g(a)g(mac)m(hine-readable)f(cop)m(y)-8 b(,)38
-b(represen)m(ted)330 1708 y(in)c(a)i(format)g(whose)g(sp)s
-(eci\014cation)e(is)h(a)m(v)-5 b(ailable)35 b(to)i(the)f(general)f
-(public,)g(that)h(is)f(suitable)f(for)330 1817 y(revising)c(the)i(do)s
-(cumen)m(t)f(straigh)m(tforw)m(ardly)g(with)f(generic)i(text)h(editors)
-e(or)g(\(for)h(images)g(com-)330 1927 y(p)s(osed)23 b(of)h(pixels\))e
-(generic)i(pain)m(t)f(programs)h(or)f(\(for)h(dra)m(wings\))f(some)h
-(widely)e(a)m(v)-5 b(ailable)23 b(dra)m(wing)330 2037
-y(editor,)29 b(and)g(that)g(is)f(suitable)g(for)h(input)e(to)j(text)g
-(formatters)f(or)g(for)g(automatic)h(translation)e(to)330
-2146 y(a)f(v)-5 b(ariet)m(y)27 b(of)g(formats)g(suitable)f(for)g(input)
-f(to)j(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)f(an)h
-(otherwise)330 2256 y(T)-8 b(ransparen)m(t)37 b(\014le)g(format)h
+(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8 b(,)38
+b(represen)m(ted)330 1708 y(in)d(a)h(format)g(whose)g(sp)s
+(eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g
+(public,)h(that)f(is)g(suitable)g(for)330 1817 y(revising)c(the)g(do)s
+(cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors)
+f(or)f(\(for)h(images)h(com-)330 1927 y(p)s(osed)23 b(of)h(pixels\))g
+(generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g
+(widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 2037
+y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g
+(formatters)f(or)g(for)g(automatic)i(translation)f(to)330
+2146 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input)
+g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g
+(otherwise)330 2256 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g
 (whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f
-(arranged)g(to)330 2365 y(th)m(w)m(art)27 b(or)g(discourage)f
-(subsequen)m(t)g(mo)s(di\014cation)f(b)m(y)i(readers)f(is)f(not)i(T)-8
+(arranged)g(to)330 2365 y(th)m(w)m(art)27 b(or)g(discourage)g
+(subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8
 b(ransparen)m(t.)39 b(An)27 b(image)330 2475 y(format)35
-b(is)e(not)i(T)-8 b(ransparen)m(t)34 b(if)f(used)h(for)g(an)m(y)g
-(substan)m(tial)f(amoun)m(t)i(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g
-(is)330 2585 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)e(called)h
-(\\Opaque".)330 2725 y(Examples)52 b(of)h(suitable)f(formats)h(for)g(T)
--8 b(ransparen)m(t)53 b(copies)g(include)e(plain)g Fl(asci)r(i)i
-Ft(without)330 2835 y(markup,)41 b(T)-8 b(exinfo)39 b(input)f(format,)k
-(LaT)1775 2855 y(E)1826 2835 y(X)d(input)f(format,)43
-b Fl(sgml)c Ft(or)g Fl(xml)g Ft(using)f(a)i(publicly)330
-2945 y(a)m(v)-5 b(ailable)31 b Fl(dtd)p Ft(,)g(and)g
-(standard-conforming)f(simple)g Fl(html)p Ft(,)h(P)m(ostScript)g(or)g
-Fl(pdf)g Ft(designed)f(for)330 3054 y(h)m(uman)37 b(mo)s(di\014cation.)
-63 b(Examples)37 b(of)h(transparen)m(t)g(image)h(formats)f(include)e
-Fl(png)p Ft(,)k Fl(x)n(cf)e Ft(and)330 3164 y Fl(jpg)p
-Ft(.)63 b(Opaque)38 b(formats)g(include)e(proprietary)h(formats)h(that)
-h(can)f(b)s(e)g(read)g(and)f(edited)h(only)330 3273 y(b)m(y)h
-(proprietary)f(w)m(ord)h(pro)s(cessors,)j Fl(sgml)c Ft(or)i
-Fl(xml)e Ft(for)i(whic)m(h)e(the)h Fl(dtd)g Ft(and/or)g(pro)s(cessing)
-330 3383 y(to)s(ols)31 b(are)g(not)g(generally)f(a)m(v)-5
-b(ailable,)31 b(and)f(the)h(mac)m(hine-generated)h Fl(html)p
-Ft(,)e(P)m(ostScript)h(or)g Fl(pdf)330 3493 y Ft(pro)s(duced)e(b)m(y)h
+b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g
+(substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g
+(is)330 2585 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i
+(\\Opaque".)330 2725 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T)
+-8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fl(asci)r(i)g
+Ft(without)330 2835 y(markup,)41 b(T)-8 b(exinfo)40 b(input)f(format,)j
+(LaT)1775 2855 y(E)1826 2835 y(X)d(input)g(format,)k
+Fl(sgml)c Ft(or)g Fl(xml)g Ft(using)g(a)h(publicly)330
+2945 y(a)m(v)-5 b(ailable)34 b Fl(dtd)p Ft(,)d(and)g
+(standard-conforming)g(simple)h Fl(html)p Ft(,)f(P)m(ostScript)h(or)f
+Fl(pdf)g Ft(designed)g(for)330 3054 y(h)m(uman)37 b(mo)s(di\014cation.)
+65 b(Examples)38 b(of)g(transparen)m(t)g(image)i(formats)e(include)g
+Fl(png)p Ft(,)i Fl(x)n(cf)e Ft(and)330 3164 y Fl(jpg)p
+Ft(.)63 b(Opaque)38 b(formats)g(include)g(proprietary)g(formats)g(that)
+h(can)f(b)s(e)g(read)g(and)f(edited)i(only)330 3273 y(b)m(y)g
+(proprietary)g(w)m(ord)g(pro)s(cessors,)j Fl(sgml)c Ft(or)i
+Fl(xml)e Ft(for)i(whic)m(h)f(the)g Fl(dtd)g Ft(and/or)g(pro)s(cessing)
+330 3383 y(to)s(ols)32 b(are)f(not)g(generally)h(a)m(v)-5
+b(ailable,)34 b(and)c(the)h(mac)m(hine-generated)i Fl(html)p
+Ft(,)d(P)m(ostScript)i(or)f Fl(pdf)330 3493 y Ft(pro)s(duced)e(b)m(y)h
 (some)h(w)m(ord)f(pro)s(cessors)g(for)g(output)g(purp)s(oses)e(only)-8
-b(.)330 3634 y(The)34 b(\\Title)f(P)m(age")k(means,)e(for)f(a)h(prin)m
-(ted)e(b)s(o)s(ok,)i(the)f(title)g(page)h(itself,)f(plus)f(suc)m(h)g
-(follo)m(wing)330 3743 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)f
-(legibly)-8 b(,)27 b(the)h(material)f(this)g(License)g(requires)f(to)i
-(app)s(ear)f(in)g(the)330 3853 y(title)f(page.)40 b(F)-8
-b(or)28 b(w)m(orks)e(in)f(formats)i(whic)m(h)f(do)g(not)h(ha)m(v)m(e)h
-(an)m(y)e(title)h(page)g(as)g(suc)m(h,)g(\\Title)f(P)m(age")330
-3962 y(means)31 b(the)f(text)i(near)e(the)h(most)g(prominen)m(t)f(app)s
-(earance)g(of)h(the)g(w)m(ork's)g(title,)f(preceding)g(the)330
-4072 y(b)s(eginning)e(of)i(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330
-4213 y(A)f(section)g(\\En)m(titled)f(XYZ")h(means)f(a)h(named)g
-(subunit)d(of)i(the)h(Do)s(cumen)m(t)h(whose)e(title)g(either)330
-4322 y(is)e(precisely)f(XYZ)i(or)f(con)m(tains)h(XYZ)g(in)e(paren)m
-(theses)j(follo)m(wing)d(text)j(that)f(translates)g(XYZ)f(in)330
-4432 y(another)e(language.)39 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g
-(sp)s(eci\014c)f(section)h(name)g(men)m(tioned)g(b)s(elo)m(w,)g(suc)m
-(h)330 4542 y(as)j(\\Ac)m(kno)m(wledgemen)m(ts",)k(\\Dedications",)d
-(\\Endorsemen)m(ts",)g(or)f(\\History".\))41 b(T)-8 b(o)29
-b(\\Preserv)m(e)330 4651 y(the)34 b(Title")f(of)g(suc)m(h)h(a)g
-(section)f(when)g(y)m(ou)h(mo)s(dify)d(the)j(Do)s(cumen)m(t)h(means)e
-(that)h(it)f(remains)g(a)330 4761 y(section)e(\\En)m(titled)e(XYZ")i
-(according)f(to)h(this)f(de\014nition.)330 4902 y(The)d(Do)s(cumen)m(t)
-i(ma)m(y)f(include)d(W)-8 b(arran)m(t)m(y)30 b(Disclaimers)c(next)i(to)
-g(the)g(notice)g(whic)m(h)e(states)j(that)330 5011 y(this)k(License)g
-(applies)f(to)j(the)f(Do)s(cumen)m(t.)52 b(These)33 b(W)-8
-b(arran)m(t)m(y)36 b(Disclaimers)c(are)j(considered)d(to)330
-5121 y(b)s(e)37 b(included)e(b)m(y)i(reference)h(in)f(this)f(License,)j
-(but)e(only)g(as)h(regards)f(disclaiming)e(w)m(arran)m(ties:)330
-5230 y(an)m(y)i(other)g(implication)e(that)i(these)g(W)-8
-b(arran)m(t)m(y)39 b(Disclaimers)c(ma)m(y)j(ha)m(v)m(e)g(is)e(v)m(oid)g
-(and)g(has)h(no)330 5340 y(e\013ect)32 b(on)e(the)h(meaning)e(of)i
-(this)e(License.)p eop
+b(.)330 3634 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m
+(ted)f(b)s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f
+(follo)m(wing)330 3743 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g
+(legibly)-8 b(,)30 b(the)e(material)h(this)f(License)g(requires)f(to)h
+(app)s(ear)f(in)h(the)330 3853 y(title)g(page.)40 b(F)-8
+b(or)28 b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h
+(an)m(y)e(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330
+3962 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s
+(earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330
+4072 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330
+4213 y(A)f(section)h(\\En)m(titled)g(XYZ")f(means)f(a)h(named)g
+(subunit)e(of)h(the)h(Do)s(cumen)m(t)h(whose)e(title)i(either)330
+4322 y(is)d(precisely)g(XYZ)g(or)f(con)m(tains)i(XYZ)f(in)f(paren)m
+(theses)i(follo)m(wing)g(text)g(that)f(translates)h(XYZ)e(in)330
+4432 y(another)e(language.)40 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g
+(sp)s(eci\014c)g(section)h(name)f(men)m(tioned)h(b)s(elo)m(w,)g(suc)m
+(h)330 4542 y(as)i(\\Ac)m(kno)m(wledgemen)m(ts",)33 b(\\Dedications",)e
+(\\Endorsemen)m(ts",)e(or)f(\\History".\))42 b(T)-8 b(o)29
+b(\\Preserv)m(e)330 4651 y(the)34 b(Title")h(of)e(suc)m(h)h(a)g
+(section)g(when)f(y)m(ou)h(mo)s(dify)e(the)i(Do)s(cumen)m(t)h(means)e
+(that)h(it)g(remains)g(a)330 4761 y(section)e(\\En)m(titled)f(XYZ")g
+(according)g(to)g(this)g(de\014nition.)330 4902 y(The)c(Do)s(cumen)m(t)
+i(ma)m(y)f(include)f(W)-8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)
+g(the)g(notice)h(whic)m(h)e(states)i(that)330 5011 y(this)34
+b(License)g(applies)g(to)h(the)f(Do)s(cumen)m(t.)52 b(These)33
+b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330
+5121 y(b)s(e)k(included)g(b)m(y)g(reference)h(in)g(this)f(License,)j
+(but)d(only)h(as)g(regards)f(disclaiming)i(w)m(arran)m(ties:)330
+5230 y(an)m(y)e(other)g(implication)i(that)e(these)g(W)-8
+b(arran)m(t)m(y)39 b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g
+(and)f(has)h(no)330 5340 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h
+(this)f(License.)p eop end
 %%Page: 133 139
-133 138 bop 150 -116 a Ft(App)s(endix)28 b(C:)i(Cop)m(ying)f(This)g
-(Man)m(ual)2062 b(133)199 299 y(2.)61 b(VERBA)-8 b(TIM)31
-b(COPYING)330 445 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)
-f(the)i(Do)s(cumen)m(t)h(in)e(an)m(y)h(medium,)g(either)g(commercially)
-f(or)330 555 y(noncommercially)-8 b(,)45 b(pro)m(vided)c(that)i(this)e
-(License,)46 b(the)c(cop)m(yrigh)m(t)h(notices,)j(and)c(the)h(license)
-330 664 y(notice)36 b(sa)m(ying)g(this)e(License)i(applies)d(to)k(the)f
-(Do)s(cumen)m(t)g(are)g(repro)s(duced)e(in)h(all)f(copies,)k(and)330
-774 y(that)27 b(y)m(ou)g(add)f(no)h(other)f(conditions)f(whatso)s(ev)m
-(er)j(to)f(those)g(of)g(this)e(License.)39 b(Y)-8 b(ou)27
-b(ma)m(y)g(not)g(use)330 883 y(tec)m(hnical)33 b(measures)f(to)i
-(obstruct)f(or)g(con)m(trol)g(the)g(reading)f(or)h(further)e(cop)m
-(ying)i(of)g(the)g(copies)330 993 y(y)m(ou)25 b(mak)m(e)g(or)g
-(distribute.)36 b(Ho)m(w)m(ev)m(er,)28 b(y)m(ou)d(ma)m(y)g(accept)h
-(comp)s(ensation)e(in)f(exc)m(hange)k(for)d(copies.)330
-1103 y(If)32 b(y)m(ou)g(distribute)e(a)j(large)f(enough)g(n)m(um)m(b)s
-(er)f(of)h(copies)g(y)m(ou)g(m)m(ust)h(also)f(follo)m(w)f(the)h
-(conditions)330 1212 y(in)d(section)i(3.)330 1358 y(Y)-8
-b(ou)21 b(ma)m(y)h(also)e(lend)g(copies,)i(under)e(the)h(same)g
-(conditions)e(stated)j(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g
-(publicly)330 1468 y(displa)m(y)29 b(copies.)199 1614
+TeXDict begin 133 138 bop 150 -116 a Ft(App)s(endix)29
+b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(133)199 299
+y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)330 445 y(Y)-8
+b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h(the)g(Do)s(cumen)m(t)h
+(in)f(an)m(y)g(medium,)h(either)g(commercially)h(or)330
+555 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 b(that)h(this)f
+(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j(and)42
+b(the)h(license)330 664 y(notice)37 b(sa)m(ying)g(this)e(License)i
+(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e(in)i(all)g
+(copies,)j(and)330 774 y(that)27 b(y)m(ou)g(add)f(no)h(other)f
+(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f(License.)40
+b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330 883 y(tec)m(hnical)35
+b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h(the)f(reading)g(or)g
+(further)e(cop)m(ying)j(of)f(the)g(copies)330 993 y(y)m(ou)25
+b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28
+b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d
+(copies.)330 1103 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f
+(n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g
+(the)f(conditions)330 1212 y(in)e(section)i(3.)330 1358
+y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g
+(conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g
+(publicly)330 1468 y(displa)m(y)31 b(copies.)199 1614
 y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1760 y(If)25
-b(y)m(ou)g(publish)d(prin)m(ted)h(copies)i(\(or)h(copies)f(in)f(media)g
-(that)i(commonly)f(ha)m(v)m(e)h(prin)m(ted)e(co)m(v)m(ers\))j(of)330
-1870 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)d(more)i(than)f
-(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)d(notice)i(requires)330
-1979 y(Co)m(v)m(er)j(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)h
-(the)f(copies)g(in)f(co)m(v)m(ers)j(that)f(carry)-8 b(,)36
-b(clearly)d(and)h(legibly)-8 b(,)34 b(all)330 2089 y(these)40
-b(Co)m(v)m(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41
+b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g
+(that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330
+1870 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f
+(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330
+1979 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i
+(the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36
+b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 2089 y(these)j(Co)m(v)m
+(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41
 b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44
 b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330
 2198 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m)
-m(ust)e(also)g(clearly)f(and)h(legibly)e(iden)m(tify)g(y)m(ou)j(as)f
-(the)h(publisher)330 2308 y(of)k(these)h(copies.)52 b(The)34
-b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)d(title)i
-(with)e(all)i(w)m(ords)f(of)i(the)f(title)330 2418 y(equally)c
-(prominen)m(t)f(and)h(visible.)40 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g
-(other)g(material)f(on)h(the)g(co)m(v)m(ers)h(in)d(addition.)330
-2527 y(Cop)m(ying)35 b(with)g(c)m(hanges)i(limited)d(to)j(the)g(co)m(v)
-m(ers,)i(as)d(long)g(as)h(they)f(preserv)m(e)g(the)h(title)e(of)i(the)
-330 2637 y(Do)s(cumen)m(t)h(and)e(satisfy)h(these)g(conditions,)h(can)f
-(b)s(e)g(treated)h(as)f(v)m(erbatim)g(cop)m(ying)g(in)f(other)330
-2746 y(resp)s(ects.)330 2892 y(If)c(the)h(required)e(texts)j(for)e
-(either)g(co)m(v)m(er)j(are)e(to)s(o)g(v)m(oluminous)e(to)i(\014t)g
-(legibly)-8 b(,)32 b(y)m(ou)h(should)e(put)330 3002 y(the)i(\014rst)f
-(ones)h(listed)e(\(as)j(man)m(y)f(as)g(\014t)g(reasonably\))f(on)h(the)
-g(actual)g(co)m(v)m(er,)i(and)e(con)m(tin)m(ue)g(the)330
-3112 y(rest)e(on)m(to)g(adjacen)m(t)h(pages.)330 3258
-y(If)27 b(y)m(ou)g(publish)c(or)k(distribute)e(Opaque)h(copies)h(of)g
-(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)e(more)j(than)e(100,)330
-3367 y(y)m(ou)i(m)m(ust)g(either)g(include)d(a)k(mac)m(hine-readable)e
-(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)f(with)e(eac)m(h)j(Opaque)
-330 3477 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)e(or)h(with)f(eac)m(h)i
-(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)f(from)f
-(whic)m(h)330 3587 y(the)24 b(general)h(net)m(w)m(ork-using)f(public)d
-(has)j(access)i(to)f(do)m(wnload)e(using)g(public-standard)e(net)m(w)m
-(ork)330 3696 y(proto)s(cols)39 b(a)g(complete)g(T)-8
+m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f
+(the)h(publisher)330 2308 y(of)k(these)h(copies.)53 b(The)34
+b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i
+(with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2418 y(equally)e
+(prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g
+(other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330
+2527 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v)
+m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the)
+330 2637 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d
+(b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330
+2746 y(resp)s(ects.)330 2892 y(If)32 b(the)h(required)f(texts)i(for)e
+(either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g
+(legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 3002 y(the)h(\014rst)f
+(ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the)
+g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330
+3112 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3258
+y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f
+(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330
+3367 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g
+(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque)
+330 3477 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h
+(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d
+(whic)m(h)330 3587 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e
+(has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m
+(ork)330 3696 y(proto)s(cols)40 b(a)f(complete)h(T)-8
 b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g
-(added)f(material.)65 b(If)330 3806 y(y)m(ou)39 b(use)g(the)g(latter)g
-(option,)h(y)m(ou)g(m)m(ust)e(tak)m(e)j(reasonably)d(pruden)m(t)f
-(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3915 y(distribution)c(of)j
-(Opaque)g(copies)g(in)e(quan)m(tit)m(y)-8 b(,)42 b(to)c(ensure)g(that)h
-(this)e(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330
-4025 y(remain)29 b(th)m(us)h(accessible)g(at)h(the)f(stated)h(lo)s
-(cation)f(un)m(til)e(at)j(least)g(one)f(y)m(ear)h(after)g(the)f(last)g
-(time)330 4134 y(y)m(ou)37 b(distribute)d(an)j(Opaque)f(cop)m(y)i
-(\(directly)e(or)g(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))f
-(of)h(that)330 4244 y(edition)29 b(to)i(the)g(public.)330
-4390 y(It)k(is)e(requested,)j(but)e(not)h(required,)f(that)h(y)m(ou)g
+(added)f(material.)67 b(If)330 3806 y(y)m(ou)39 b(use)g(the)g(latter)h
+(option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e
+(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3915 y(distribution)f(of)g
+(Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38
+b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330
+4025 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s
+(cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h
+(time)330 4134 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i
+(\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h
+(of)f(that)330 4244 y(edition)31 b(to)g(the)g(public.)330
+4390 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g
 (con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330
-4500 y(b)s(efore)28 b(redistributing)d(an)m(y)k(large)g(n)m(um)m(b)s
-(er)e(of)i(copies,)g(to)g(giv)m(e)g(them)g(a)g(c)m(hance)h(to)f(pro)m
-(vide)f(y)m(ou)330 4609 y(with)h(an)h(up)s(dated)f(v)m(ersion)h(of)h
+4500 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s
+(er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m
+(vide)g(y)m(ou)330 4609 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g
 (the)f(Do)s(cumen)m(t.)199 4755 y(4.)61 b(MODIFICA)-8
-b(TIONS)330 4902 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)e(a)
-j(Mo)s(di\014ed)e(V)-8 b(ersion)25 b(of)h(the)g(Do)s(cumen)m(t)g(under)
-e(the)h(conditions)330 5011 y(of)c(sections)g(2)h(and)e(3)h(ab)s(o)m(v)
-m(e,)k(pro)m(vided)19 b(that)j(y)m(ou)f(release)h(the)f(Mo)s(di\014ed)e
-(V)-8 b(ersion)21 b(under)e(precisely)330 5121 y(this)28
-b(License,)h(with)f(the)h(Mo)s(di\014ed)e(V)-8 b(ersion)29
-b(\014lling)d(the)j(role)g(of)g(the)g(Do)s(cumen)m(t,)h(th)m(us)f
-(licensing)330 5230 y(distribution)h(and)k(mo)s(di\014cation)e(of)j
-(the)f(Mo)s(di\014ed)e(V)-8 b(ersion)34 b(to)h(who)s(ev)m(er)f(p)s
-(ossesses)f(a)i(cop)m(y)g(of)330 5340 y(it.)40 b(In)30
-b(addition,)f(y)m(ou)h(m)m(ust)h(do)f(these)h(things)e(in)g(the)i(Mo)s
-(di\014ed)d(V)-8 b(ersion:)p eop
+b(TIONS)330 4902 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a)
+h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under)
+e(the)h(conditions)330 5011 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v)
+m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f
+(V)-8 b(ersion)22 b(under)d(precisely)330 5121 y(this)29
+b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30
+b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f
+(licensing)330 5230 y(distribution)k(and)h(mo)s(di\014cation)g(of)h
+(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s
+(ossesses)f(a)i(cop)m(y)g(of)330 5340 y(it.)41 b(In)30
+b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s
+(di\014ed)e(V)-8 b(ersion:)p eop end
 %%Page: 134 140
-134 139 bop 150 -116 a Ft(134)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-357 299 y(A.)60 b(Use)33 b(in)e(the)i(Title)f(P)m(age)i(\(and)f(on)f
-(the)h(co)m(v)m(ers,)i(if)d(an)m(y\))h(a)g(title)f(distinct)f(from)i
-(that)g(of)g(the)510 408 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f
-(previous)e(v)m(ersions)h(\(whic)m(h)g(should,)g(if)g(there)h(w)m(ere)g
-(an)m(y)-8 b(,)510 518 y(b)s(e)31 b(listed)f(in)g(the)h(History)g
-(section)g(of)h(the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32
-b(ma)m(y)g(use)f(the)g(same)h(title)f(as)510 628 y(a)g(previous)e(v)m
-(ersion)g(if)h(the)g(original)f(publisher)e(of)j(that)h(v)m(ersion)f
-(giv)m(es)h(p)s(ermission.)360 758 y(B.)61 b(List)30
-b(on)g(the)h(Title)e(P)m(age,)k(as)d(authors,)h(one)g(or)f(more)h(p)s
-(ersons)e(or)h(en)m(tities)h(resp)s(onsible)c(for)510
-867 y(authorship)d(of)i(the)h(mo)s(di\014cations)d(in)h(the)h(Mo)s
-(di\014ed)e(V)-8 b(ersion,)27 b(together)h(with)c(at)j(least)g(\014v)m
-(e)510 977 y(of)d(the)g(principal)d(authors)i(of)i(the)f(Do)s(cumen)m
-(t)g(\(all)f(of)i(its)e(principal)e(authors,)k(if)e(it)g(has)h(few)m
-(er)510 1087 y(than)30 b(\014v)m(e\),)h(unless)e(they)i(release)f(y)m
-(ou)h(from)f(this)f(requiremen)m(t.)359 1217 y(C.)60
-b(State)32 b(on)e(the)h(Title)f(page)h(the)g(name)g(of)g(the)g
-(publisher)c(of)k(the)g(Mo)s(di\014ed)e(V)-8 b(ersion,)31
-b(as)g(the)510 1326 y(publisher.)355 1456 y(D.)61 b(Preserv)m(e)31
-b(all)e(the)i(cop)m(yrigh)m(t)g(notices)f(of)h(the)f(Do)s(cumen)m(t.)
-363 1587 y(E.)60 b(Add)30 b(an)i(appropriate)e(cop)m(yrigh)m(t)i
-(notice)f(for)h(y)m(our)f(mo)s(di\014cations)e(adjacen)m(t)k(to)f(the)g
-(other)510 1696 y(cop)m(yrigh)m(t)f(notices.)365 1826
-y(F.)61 b(Include,)27 b(immediately)f(after)i(the)h(cop)m(yrigh)m(t)f
-(notices,)h(a)f(license)f(notice)h(giving)f(the)h(public)510
-1936 y(p)s(ermission)21 b(to)26 b(use)e(the)g(Mo)s(di\014ed)f(V)-8
-b(ersion)24 b(under)f(the)i(terms)f(of)h(this)e(License,)j(in)d(the)h
-(form)510 2045 y(sho)m(wn)30 b(in)f(the)h(Addendum)f(b)s(elo)m(w.)353
-2176 y(G.)61 b(Preserv)m(e)23 b(in)f(that)h(license)f(notice)h(the)g
-(full)e(lists)g(of)i(In)m(v)-5 b(arian)m(t)22 b(Sections)h(and)f
-(required)f(Co)m(v)m(er)510 2285 y(T)-8 b(exts)31 b(giv)m(en)f(in)f
-(the)i(Do)s(cumen)m(t's)g(license)f(notice.)357 2415
-y(H.)60 b(Include)29 b(an)h(unaltered)f(cop)m(y)i(of)g(this)e(License.)
-392 2545 y(I.)60 b(Preserv)m(e)33 b(the)f(section)g(En)m(titled)f
-(\\History",)i(Preserv)m(e)g(its)e(Title,)h(and)f(add)h(to)h(it)e(an)h
-(item)510 2655 y(stating)c(at)h(least)f(the)h(title,)f(y)m(ear,)i(new)d
-(authors,)i(and)e(publisher)d(of)29 b(the)f(Mo)s(di\014ed)e(V)-8
-b(ersion)510 2765 y(as)32 b(giv)m(en)f(on)g(the)h(Title)e(P)m(age.)45
-b(If)31 b(there)h(is)e(no)h(section)h(En)m(titled)e(\\History")i(in)e
-(the)h(Do)s(cu-)510 2874 y(men)m(t,)37 b(create)f(one)f(stating)g(the)g
-(title,)g(y)m(ear,)i(authors,)f(and)e(publisher)d(of)k(the)g(Do)s
-(cumen)m(t)510 2984 y(as)h(giv)m(en)g(on)g(its)g(Title)f(P)m(age,)k
-(then)d(add)g(an)g(item)f(describing)f(the)i(Mo)s(di\014ed)f(V)-8
-b(ersion)36 b(as)510 3093 y(stated)31 b(in)e(the)i(previous)e(sen)m
+TeXDict begin 134 139 bop 150 -116 a Ft(134)2527 b(Bash)31
+b(Reference)g(Man)m(ual)357 299 y(A.)60 b(Use)33 b(in)f(the)h(Title)h
+(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e(an)m(y\))g(a)g
+(title)h(distinct)f(from)g(that)g(of)g(the)510 408 y(Do)s(cumen)m(t,)j
+(and)d(from)g(those)i(of)f(previous)f(v)m(ersions)h(\(whic)m(h)g
+(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)510 518
+y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g(the)f(Do)s
+(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same)h(title)h
+(as)510 628 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original)i
+(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360
+758 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h
+(one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c
+(for)510 867 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g
+(Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h
+(\014v)m(e)510 977 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s
+(cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g
+(few)m(er)510 1087 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g
+(y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1217 y(C.)60
+b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g
+(publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32
+b(as)f(the)510 1326 y(publisher.)355 1456 y(D.)61 b(Preserv)m(e)31
+b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.)
+363 1587 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i
+(notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g
+(other)510 1696 y(cop)m(yrigh)m(t)g(notices.)365 1826
+y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g
+(notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510
+1936 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8
+b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g
+(form)510 2045 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353
+2176 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f
+(full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e
+(required)g(Co)m(v)m(er)510 2285 y(T)-8 b(exts)31 b(giv)m(en)g(in)f
+(the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2415
+y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.)
+392 2545 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g
+(\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g
+(item)510 2655 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d
+(authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8
+b(ersion)510 2765 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45
+b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e
+(the)g(Do)s(cu-)510 2874 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f
+(title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s
+(cumen)m(t)510 2984 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i
+(then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8
+b(ersion)37 b(as)510 3093 y(stated)31 b(in)f(the)h(previous)f(sen)m
 (tence.)378 3224 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s
-(cation,)g(if)e(an)m(y)-8 b(,)34 b(giv)m(en)e(in)g(the)g(Do)s(cumen)m
-(t)h(for)g(public)c(access)34 b(to)510 3333 y(a)e(T)-8
-b(ransparen)m(t)30 b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m
-(ewise)e(the)j(net)m(w)m(ork)g(lo)s(cations)e(giv)m(en)h(in)510
-3443 y(the)h(Do)s(cumen)m(t)g(for)g(previous)e(v)m(ersions)h(it)g(w)m
-(as)h(based)f(on.)45 b(These)31 b(ma)m(y)h(b)s(e)f(placed)g(in)g(the)
-510 3552 y(\\History")26 b(section.)39 b(Y)-8 b(ou)25
-b(ma)m(y)h(omit)f(a)g(net)m(w)m(ork)h(lo)s(cation)e(for)h(a)h(w)m(ork)f
-(that)g(w)m(as)h(published)510 3662 y(at)36 b(least)g(four)f(y)m(ears)i
-(b)s(efore)e(the)h(Do)s(cumen)m(t)h(itself,)f(or)f(if)g(the)h(original)
-e(publisher)e(of)k(the)510 3771 y(v)m(ersion)30 b(it)g(refers)g(to)h
-(giv)m(es)g(p)s(ermission.)354 3902 y(K.)60 b(F)-8 b(or)24
-b(an)m(y)h(section)e(En)m(titled)g(\\Ac)m(kno)m(wledgemen)m(ts")j(or)e
-(\\Dedications",)i(Preserv)m(e)e(the)g(Title)510 4011
-y(of)j(the)f(section,)i(and)e(preserv)m(e)h(in)e(the)i(section)f(all)g
-(the)g(substance)h(and)f(tone)h(of)f(eac)m(h)i(of)f(the)510
-4121 y(con)m(tributor)j(ac)m(kno)m(wledgemen)m(ts)i(and/or)e
-(dedications)f(giv)m(en)i(therein.)368 4251 y(L.)60 b(Preserv)m(e)36
-b(all)e(the)i(In)m(v)-5 b(arian)m(t)35 b(Sections)g(of)g(the)h(Do)s
-(cumen)m(t,)h(unaltered)e(in)f(their)g(text)j(and)510
-4361 y(in)e(their)g(titles.)56 b(Section)36 b(n)m(um)m(b)s(ers)e(or)i
-(the)g(equiv)-5 b(alen)m(t)36 b(are)g(not)g(considered)f(part)h(of)g
-(the)510 4470 y(section)31 b(titles.)341 4600 y(M.)61
-b(Delete)32 b(an)m(y)f(section)g(En)m(titled)e(\\Endorsemen)m(ts".)42
-b(Suc)m(h)30 b(a)i(section)e(ma)m(y)i(not)f(b)s(e)f(included)510
-4710 y(in)f(the)i(Mo)s(di\014ed)d(V)-8 b(ersion.)357
-4840 y(N.)60 b(Do)29 b(not)g(retitle)f(an)m(y)g(existing)g(section)g
-(to)h(b)s(e)f(En)m(titled)f(\\Endorsemen)m(ts")i(or)f(to)h(con\015ict)f
-(in)510 4950 y(title)i(with)f(an)m(y)i(In)m(v)-5 b(arian)m(t)30
+(cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m
+(t)h(for)g(public)e(access)j(to)510 3333 y(a)e(T)-8 b(ransparen)m(t)30
+b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net)
+m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3443 y(the)g(Do)s(cumen)m
+(t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45
+b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3552
+y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net)
+m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h
+(published)510 3662 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e
+(the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher)
+d(of)i(the)510 3771 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s
+(ermission.)354 3902 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m
+(titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k
+(Preserv)m(e)c(the)g(Title)510 4011 y(of)j(the)f(section,)j(and)d
+(preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone)
+h(of)f(eac)m(h)i(of)f(the)510 4121 y(con)m(tributor)k(ac)m(kno)m
+(wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368
+4251 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5
+b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f
+(in)f(their)g(text)i(and)510 4361 y(in)f(their)g(titles.)58
+b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5
+b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510
+4470 y(section)c(titles.)341 4600 y(M.)61 b(Delete)33
+b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42
+b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510
+4710 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357
+4840 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f
+(to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g
+(in)510 4950 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31
 b(Section.)354 5080 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8
-b(arran)m(t)m(y)32 b(Disclaimers.)330 5230 y(If)h(the)g(Mo)s(di\014ed)f
-(V)-8 b(ersion)33 b(includes)e(new)i(fron)m(t-matter)i(sections)e(or)g
-(app)s(endices)f(that)i(qualify)330 5340 y(as)28 b(Secondary)g
-(Sections)f(and)g(con)m(tain)i(no)e(material)h(copied)f(from)g(the)h
-(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)p eop
+b(arran)m(t)m(y)32 b(Disclaimers.)330 5230 y(If)h(the)g(Mo)s(di\014ed)g
+(V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f
+(app)s(endices)g(that)h(qualify)330 5340 y(as)28 b(Secondary)g
+(Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h
+(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)p eop end
 %%Page: 135 141
-135 140 bop 150 -116 a Ft(App)s(endix)28 b(C:)i(Cop)m(ying)f(This)g
-(Man)m(ual)2062 b(135)330 299 y(y)m(our)32 b(option)g(designate)h(some)
-f(or)h(all)e(of)h(these)h(sections)g(as)f(in)m(v)-5 b(arian)m(t.)46
-b(T)-8 b(o)33 b(do)f(this,)g(add)g(their)330 408 y(titles)j(to)h(the)f
-(list)f(of)i(In)m(v)-5 b(arian)m(t)35 b(Sections)g(in)f(the)i(Mo)s
-(di\014ed)e(V)-8 b(ersion's)35 b(license)f(notice.)56
-b(These)330 518 y(titles)30 b(m)m(ust)g(b)s(e)g(distinct)f(from)g(an)m
-(y)i(other)g(section)f(titles.)330 650 y(Y)-8 b(ou)43
-b(ma)m(y)g(add)f(a)g(section)h(En)m(titled)e(\\Endorsemen)m(ts",)46
-b(pro)m(vided)41 b(it)h(con)m(tains)g(nothing)g(but)330
-759 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s(di\014ed)f(V)-8
-b(ersion)30 b(b)m(y)f(v)-5 b(arious)29 b(parties|for)g(example,)g
-(statemen)m(ts)j(of)330 869 y(p)s(eer)27 b(review)f(or)h(that)h(the)f
-(text)i(has)d(b)s(een)h(appro)m(v)m(ed)g(b)m(y)g(an)h(organization)f
-(as)g(the)h(authoritativ)m(e)330 978 y(de\014nition)g(of)j(a)f
-(standard.)330 1110 y(Y)-8 b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g
-(up)e(to)i(\014v)m(e)g(w)m(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)
-30 b(T)-8 b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330
-1219 y(to)g(25)g(w)m(ords)e(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8
-b(ext,)29 b(to)f(the)f(end)f(of)i(the)f(list)f(of)h(Co)m(v)m(er)h(T)-8
-b(exts)27 b(in)f(the)i(Mo)s(di\014ed)330 1329 y(V)-8
-b(ersion.)57 b(Only)34 b(one)i(passage)h(of)f(F)-8 b(ron)m(t-Co)m(v)m
-(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m(k-Co)m(v)m(er)j(T)-8
-b(ext)36 b(ma)m(y)h(b)s(e)330 1439 y(added)27 b(b)m(y)g(\(or)h(through)
-f(arrangemen)m(ts)h(made)g(b)m(y\))g(an)m(y)g(one)f(en)m(tit)m(y)-8
-b(.)41 b(If)27 b(the)h(Do)s(cumen)m(t)g(already)330 1548
-y(includes)k(a)i(co)m(v)m(er)h(text)g(for)f(the)g(same)h(co)m(v)m(er,)h
-(previously)c(added)h(b)m(y)h(y)m(ou)g(or)g(b)m(y)g(arrangemen)m(t)330
-1658 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m(y)h(y)m(ou)g(are)f
-(acting)h(on)f(b)s(ehalf)e(of,)k(y)m(ou)f(ma)m(y)g(not)f(add)g
-(another;)j(but)330 1767 y(y)m(ou)c(ma)m(y)h(replace)f(the)g(old)f
-(one,)j(on)e(explicit)e(p)s(ermission)f(from)i(the)i(previous)d
-(publisher)e(that)330 1877 y(added)g(the)g(old)g(one.)330
-2008 y(The)25 b(author\(s\))h(and)f(publisher\(s\))d(of)k(the)f(Do)s
-(cumen)m(t)h(do)g(not)f(b)m(y)h(this)e(License)h(giv)m(e)h(p)s
-(ermission)330 2118 y(to)31 b(use)f(their)f(names)i(for)f(publicit)m(y)
-d(for)k(or)f(to)h(assert)g(or)f(imply)e(endorsemen)m(t)i(of)h(an)m(y)g
+TeXDict begin 135 140 bop 150 -116 a Ft(App)s(endix)29
+b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(135)330 299
+y(y)m(our)32 b(option)h(designate)h(some)e(or)h(all)g(of)f(these)h
+(sections)h(as)e(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33
+b(do)f(this,)h(add)f(their)330 408 y(titles)37 b(to)f(the)f(list)h(of)g
+(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8
+b(ersion's)36 b(license)g(notice.)57 b(These)330 518
+y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g
+(section)g(titles.)330 650 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section)
+i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g
+(nothing)g(but)330 759 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s
+(di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30
+b(parties|for)g(example,)g(statemen)m(ts)i(of)330 869
+y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro)
+m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330
+978 y(de\014nition)i(of)h(a)f(standard.)330 1110 y(Y)-8
+b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m
+(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8
+b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1219 y(to)g(25)g(w)m(ords)e
+(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i
+(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s
+(di\014ed)330 1329 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f
+(F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m
+(k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1439
+y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\))
+g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t)
+g(already)330 1548 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g
+(same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m
+(y)g(arrangemen)m(t)330 1658 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m
+(y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g
+(not)f(add)g(another;)j(but)330 1767 y(y)m(ou)c(ma)m(y)h(replace)g(the)
+f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e
+(publisher)f(that)330 1877 y(added)e(the)g(old)h(one.)330
+2008 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s
+(cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s
+(ermission)330 2118 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g
+(for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g
 (Mo)s(di\014ed)330 2228 y(V)-8 b(ersion.)199 2359 y(5.)61
 b(COMBINING)31 b(DOCUMENTS)330 2491 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m
-(bine)g(the)g(Do)s(cumen)m(t)g(with)f(other)g(do)s(cumen)m(ts)h
-(released)f(under)g(this)f(License,)330 2600 y(under)g(the)h(terms)g
-(de\014ned)f(in)g(section)h(4)h(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)e
-(v)m(ersions,)k(pro)m(vided)d(that)i(y)m(ou)330 2710
-y(include)23 b(in)h(the)h(com)m(bination)g(all)f(of)i(the)f(In)m(v)-5
-b(arian)m(t)25 b(Sections)g(of)h(all)e(of)h(the)h(original)d(do)s
-(cumen)m(ts,)330 2819 y(unmo)s(di\014ed,)i(and)h(list)f(them)i(all)e
-(as)i(In)m(v)-5 b(arian)m(t)27 b(Sections)f(of)h(y)m(our)g(com)m(bined)
-f(w)m(ork)g(in)g(its)g(license)330 2929 y(notice,)31
-b(and)f(that)h(y)m(ou)f(preserv)m(e)h(all)e(their)h(W)-8
-b(arran)m(t)m(y)32 b(Disclaimers.)330 3061 y(The)e(com)m(bined)f(w)m
-(ork)i(need)e(only)h(con)m(tain)g(one)h(cop)m(y)g(of)f(this)f(License,)
-i(and)e(m)m(ultiple)f(iden)m(tical)330 3170 y(In)m(v)-5
-b(arian)m(t)32 b(Sections)g(ma)m(y)h(b)s(e)f(replaced)g(with)f(a)i
-(single)e(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)d(In)m
-(v)-5 b(arian)m(t)330 3280 y(Sections)26 b(with)g(the)h(same)g(name)g
-(but)f(di\013eren)m(t)g(con)m(ten)m(ts,)j(mak)m(e)f(the)f(title)f(of)h
-(eac)m(h)h(suc)m(h)f(section)330 3389 y(unique)32 b(b)m(y)i(adding)e
-(at)j(the)f(end)g(of)g(it,)g(in)f(paren)m(theses,)j(the)e(name)g(of)g
-(the)g(original)e(author)i(or)330 3499 y(publisher)21
-b(of)k(that)h(section)f(if)f(kno)m(wn,)i(or)f(else)g(a)g(unique)e(n)m
+(bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h
+(released)g(under)f(this)g(License,)330 2600 y(under)f(the)h(terms)g
+(de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f
+(v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2710
+y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5
+b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s
+(cumen)m(ts,)330 2819 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g
+(as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined)
+g(w)m(ork)f(in)h(its)g(license)330 2929 y(notice,)32
+b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8
+b(arran)m(t)m(y)32 b(Disclaimers.)330 3061 y(The)e(com)m(bined)g(w)m
+(ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,)
+i(and)d(m)m(ultiple)i(iden)m(tical)330 3170 y(In)m(v)-5
+b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h
+(single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m
+(v)-5 b(arian)m(t)330 3280 y(Sections)27 b(with)g(the)g(same)g(name)g
+(but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f
+(eac)m(h)h(suc)m(h)f(section)330 3389 y(unique)33 b(b)m(y)h(adding)f
+(at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g
+(the)g(original)h(author)f(or)330 3499 y(publisher)23
+b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m
 (um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330
-3608 y(to)g(the)g(section)f(titles)g(in)f(the)i(list)e(of)h(In)m(v)-5
-b(arian)m(t)25 b(Sections)f(in)f(the)h(license)g(notice)h(of)f(the)h
+3608 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5
+b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h
 (com)m(bined)330 3718 y(w)m(ork.)330 3850 y(In)41 b(the)g(com)m
-(bination,)j(y)m(ou)d(m)m(ust)g(com)m(bine)g(an)m(y)h(sections)f(En)m
-(titled)f(\\History")i(in)e(the)h(v)-5 b(ari-)330 3959
-y(ous)32 b(original)e(do)s(cumen)m(ts,)j(forming)e(one)h(section)g(En)m
-(titled)f(\\History";)j(lik)m(ewise)d(com)m(bine)h(an)m(y)330
-4069 y(sections)g(En)m(titled)e(\\Ac)m(kno)m(wledgemen)m(ts",)35
-b(and)c(an)m(y)h(sections)g(En)m(titled)f(\\Dedications".)45
-b(Y)-8 b(ou)330 4178 y(m)m(ust)30 b(delete)h(all)e(sections)i(En)m
-(titled)e(\\Endorsemen)m(ts.")199 4310 y(6.)61 b(COLLECTIONS)28
+(bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g
+(En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330
+3959 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h
+(En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330
+4069 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31
+b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47
+b(Y)-8 b(ou)330 4178 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m
+(titled)f(\\Endorsemen)m(ts.")199 4310 y(6.)61 b(COLLECTIONS)28
 b(OF)i(DOCUMENTS)330 4441 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f
-(collection)f(consisting)g(of)h(the)g(Do)s(cumen)m(t)g(and)g(other)g
-(do)s(cumen)m(ts)f(released)330 4551 y(under)41 b(this)g(License,)k
-(and)d(replace)g(the)h(individual)38 b(copies)k(of)g(this)f(License)h
-(in)f(the)i(v)-5 b(arious)330 4661 y(do)s(cumen)m(ts)42
-b(with)f(a)i(single)e(cop)m(y)j(that)f(is)e(included)f(in)h(the)i
-(collection,)i(pro)m(vided)c(that)j(y)m(ou)330 4770 y(follo)m(w)36
-b(the)i(rules)d(of)i(this)f(License)h(for)g(v)m(erbatim)g(cop)m(ying)g
-(of)g(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)g(all)330
+(collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g
+(do)s(cumen)m(ts)f(released)330 4551 y(under)41 b(this)h(License,)k
+(and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f
+(the)h(v)-5 b(arious)330 4661 y(do)s(cumen)m(ts)42 b(with)g(a)h(single)
+g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48
+b(pro)m(vided)42 b(that)i(y)m(ou)330 4770 y(follo)m(w)38
+b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g
+(of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330
 4880 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32
-b(ma)m(y)g(extract)h(a)f(single)e(do)s(cumen)m(t)h(from)g(suc)m(h)g(a)h
-(collection,)f(and)g(distribute)e(it)i(individu-)330
-5121 y(ally)j(under)f(this)h(License,)i(pro)m(vided)e(y)m(ou)h(insert)f
-(a)h(cop)m(y)h(of)f(this)f(License)g(in)m(to)h(the)h(extracted)330
-5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)g(this)f(License)h(in)g(all)f
-(other)i(resp)s(ects)f(regarding)g(v)m(erbatim)g(cop)m(ying)h(of)330
-5340 y(that)e(do)s(cumen)m(t.)p eop
+b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h
+(collection,)i(and)d(distribute)g(it)h(individu-)330
+5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g
+(a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330
+5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g
+(other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330
+5340 y(that)d(do)s(cumen)m(t.)p eop end
 %%Page: 136 142
-136 141 bop 150 -116 a Ft(136)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h(W)m
-(ORKS)330 428 y(A)d(compilation)f(of)h(the)g(Do)s(cumen)m(t)h(or)f(its)
-f(deriv)-5 b(ativ)m(es)28 b(with)e(other)j(separate)g(and)e(indep)s
-(enden)m(t)330 538 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)e(or)i
-(on)f(a)g(v)m(olume)g(of)h(a)f(storage)i(or)e(distribution)d(medium,)i
-(is)h(called)330 648 y(an)d(\\aggregate")k(if)29 b(the)h(cop)m(yrigh)m
-(t)h(resulting)d(from)h(the)i(compilation)d(is)h(not)i(used)e(to)i
-(limit)d(the)330 757 y(legal)e(righ)m(ts)g(of)h(the)g(compilation's)e
-(users)h(b)s(ey)m(ond)g(what)g(the)h(individual)22 b(w)m(orks)k(p)s
-(ermit.)38 b(When)330 867 y(the)28 b(Do)s(cumen)m(t)g(is)f(included)e
-(an)i(aggregate,)32 b(this)26 b(License)h(do)s(es)h(not)g(apply)e(to)i
-(the)g(other)g(w)m(orks)330 976 y(in)h(the)i(aggregate)i(whic)m(h)c
-(are)i(not)f(themselv)m(es)h(deriv)-5 b(ativ)m(e)30 b(w)m(orks)g(of)h
-(the)f(Do)s(cumen)m(t.)330 1106 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8
-b(ext)23 b(requiremen)m(t)f(of)h(section)g(3)g(is)f(applicable)f(to)i
-(these)h(copies)e(of)h(the)g(Do)s(cumen)m(t,)330 1215
-y(then)f(if)f(the)i(Do)s(cumen)m(t)g(is)f(less)f(than)h(one)h(half)e
-(of)i(the)g(en)m(tire)f(aggregate,)27 b(the)c(Do)s(cumen)m(t's)g(Co)m
-(v)m(er)330 1325 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)g(on)h(co)m
-(v)m(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)d(the)j
-(aggregate,)j(or)d(the)330 1435 y(electronic)35 b(equiv)-5
-b(alen)m(t)34 b(of)i(co)m(v)m(ers)g(if)e(the)h(Do)s(cumen)m(t)h(is)e
-(in)g(electronic)h(form.)54 b(Otherwise)34 b(they)330
-1544 y(m)m(ust)c(app)s(ear)g(on)g(prin)m(ted)f(co)m(v)m(ers)j(that)f
-(brac)m(k)m(et)h(the)f(whole)e(aggregate.)199 1674 y(8.)61
-b(TRANSLA)-8 b(TION)330 1803 y(T)g(ranslation)39 b(is)g(considered)f(a)
-j(kind)d(of)i(mo)s(di\014cation,)h(so)f(y)m(ou)g(ma)m(y)h(distribute)c
+TeXDict begin 136 141 bop 150 -116 a Ft(136)2527 b(Bash)31
+b(Reference)g(Man)m(ual)199 299 y(7.)61 b(A)m(GGREGA)-8
+b(TION)32 b(WITH)e(INDEPENDENT)h(W)m(ORKS)330 428 y(A)d(compilation)i
+(of)e(the)g(Do)s(cumen)m(t)h(or)f(its)g(deriv)-5 b(ativ)m(es)30
+b(with)d(other)i(separate)g(and)e(indep)s(enden)m(t)330
+538 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h(on)f(a)g(v)m
+(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g(is)h(called)
+330 648 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i(resulting)e
+(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g(the)330
+757 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e(b)s(ey)m
+(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39
+b(When)330 867 y(the)28 b(Do)s(cumen)m(t)g(is)g(included)f(an)g
+(aggregate,)32 b(this)27 b(License)h(do)s(es)g(not)g(apply)f(to)h(the)g
+(other)g(w)m(orks)330 976 y(in)i(the)h(aggregate)i(whic)m(h)d(are)h
+(not)f(themselv)m(es)i(deriv)-5 b(ativ)m(e)32 b(w)m(orks)e(of)h(the)f
+(Do)s(cumen)m(t.)330 1106 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8
+b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f
+(these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1215
+y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f
+(of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m
+(er)330 1325 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m
+(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h
+(aggregate,)j(or)d(the)330 1435 y(electronic)37 b(equiv)-5
+b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f
+(in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330
+1544 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f
+(brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1674 y(8.)61
+b(TRANSLA)-8 b(TION)330 1803 y(T)g(ranslation)41 b(is)f(considered)f(a)
+i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e
 (translations)330 1913 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h
-(terms)h(of)f(section)h(4.)83 b(Replacing)43 b(In)m(v)-5
-b(arian)m(t)44 b(Sections)g(with)330 2022 y(translations)g(requires)g
-(sp)s(ecial)g(p)s(ermission)f(from)i(their)f(cop)m(yrigh)m(t)i
-(holders,)i(but)d(y)m(ou)g(ma)m(y)330 2132 y(include)22
-b(translations)i(of)g(some)h(or)g(all)e(In)m(v)-5 b(arian)m(t)24
-b(Sections)g(in)f(addition)g(to)i(the)g(original)e(v)m(ersions)330
-2242 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)32 b(Sections.)43
-b(Y)-8 b(ou)32 b(ma)m(y)g(include)d(a)j(translation)e(of)i(this)e
-(License,)i(and)e(all)h(the)330 2351 y(license)40 b(notices)h(in)f(the)
-i(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42
-b(Disclaimers,)h(pro)m(vided)d(that)i(y)m(ou)330 2461
-y(also)e(include)e(the)i(original)e(English)g(v)m(ersion)h(of)h(this)f
-(License)h(and)f(the)h(original)e(v)m(ersions)i(of)330
-2570 y(those)35 b(notices)f(and)f(disclaimers.)50 b(In)33
-b(case)i(of)g(a)f(disagreemen)m(t)g(b)s(et)m(w)m(een)h(the)f
-(translation)g(and)330 2680 y(the)h(original)f(v)m(ersion)g(of)i(this)e
-(License)h(or)g(a)g(notice)h(or)f(disclaimer,)f(the)i(original)d(v)m
-(ersion)i(will)330 2790 y(prev)-5 b(ail.)330 2919 y(If)28
-b(a)h(section)g(in)e(the)i(Do)s(cumen)m(t)h(is)d(En)m(titled)h(\\Ac)m
-(kno)m(wledgemen)m(ts",)j(\\Dedications",)f(or)f(\\His-)330
-3029 y(tory",)f(the)f(requiremen)m(t)e(\(section)i(4\))g(to)g(Preserv)m
-(e)g(its)e(Title)h(\(section)g(1\))h(will)d(t)m(ypically)h(require)330
-3138 y(c)m(hanging)30 b(the)h(actual)g(title.)199 3268
-y(9.)61 b(TERMINA)-8 b(TION)330 3397 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m
-(y)-8 b(,)31 b(mo)s(dify)-8 b(,)29 b(sublicense,)f(or)i(distribute)d
-(the)j(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3507
-y(pro)m(vided)40 b(for)i(under)e(this)h(License.)74 b(An)m(y)42
-b(other)g(attempt)h(to)g(cop)m(y)-8 b(,)46 b(mo)s(dify)-8
-b(,)43 b(sublicense)d(or)330 3616 y(distribute)34 b(the)j(Do)s(cumen)m
-(t)g(is)f(v)m(oid,)i(and)e(will)e(automatically)i(terminate)h(y)m(our)f
-(righ)m(ts)g(under)330 3726 y(this)27 b(License.)39 b(Ho)m(w)m(ev)m
-(er,)31 b(parties)c(who)g(ha)m(v)m(e)i(receiv)m(ed)f(copies,)h(or)e
-(righ)m(ts,)h(from)g(y)m(ou)g(under)e(this)330 3836 y(License)36
-b(will)e(not)j(ha)m(v)m(e)h(their)e(licenses)f(terminated)i(so)g(long)f
-(as)h(suc)m(h)f(parties)g(remain)g(in)f(full)330 3945
-y(compliance.)154 4075 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e
-(LICENSE)330 4204 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8
-b(oundation)42 b(ma)m(y)g(publish)c(new,)44 b(revised)c(v)m(ersions)h
-(of)h(the)g(GNU)g(F)-8 b(ree)330 4314 y(Do)s(cumen)m(tation)33
-b(License)e(from)h(time)g(to)h(time.)45 b(Suc)m(h)31
-b(new)h(v)m(ersions)f(will)f(b)s(e)h(similar)e(in)i(spirit)330
-4423 y(to)k(the)g(presen)m(t)f(v)m(ersion,)h(but)f(ma)m(y)h(di\013er)e
-(in)g(detail)g(to)i(address)f(new)g(problems)e(or)j(concerns.)330
-4533 y(See)c Fs(http://www.gnu.org/copy)o(left)o(/)p
-Ft(.)330 4663 y(Eac)m(h)f(v)m(ersion)f(of)h(the)f(License)g(is)g(giv)m
-(en)g(a)h(distinguishing)25 b(v)m(ersion)k(n)m(um)m(b)s(er.)39
-b(If)29 b(the)g(Do)s(cumen)m(t)330 4772 y(sp)s(eci\014es)44
-b(that)i(a)g(particular)d(n)m(um)m(b)s(ered)h(v)m(ersion)h(of)g(this)f
-(License)h(\\or)h(an)m(y)g(later)f(v)m(ersion")330 4882
-y(applies)31 b(to)i(it,)g(y)m(ou)f(ha)m(v)m(e)i(the)f(option)f(of)g
-(follo)m(wing)f(the)i(terms)f(and)g(conditions)f(either)h(of)g(that)330
-4991 y(sp)s(eci\014ed)k(v)m(ersion)i(or)f(of)h(an)m(y)h(later)f(v)m
-(ersion)f(that)h(has)g(b)s(een)f(published)d(\(not)39
-b(as)f(a)g(draft\))g(b)m(y)330 5101 y(the)33 b(F)-8 b(ree)34
-b(Soft)m(w)m(are)f(F)-8 b(oundation.)48 b(If)32 b(the)h(Do)s(cumen)m(t)
-g(do)s(es)g(not)g(sp)s(ecify)e(a)i(v)m(ersion)f(n)m(um)m(b)s(er)g(of)
-330 5210 y(this)h(License,)j(y)m(ou)e(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g
-(v)m(ersion)f(ev)m(er)h(published)c(\(not)k(as)g(a)f(draft\))h(b)m(y)f
-(the)h(F)-8 b(ree)330 5320 y(Soft)m(w)m(are)31 b(F)-8
-b(oundation.)p eop
+(terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5
+b(arian)m(t)45 b(Sections)g(with)330 2022 y(translations)h(requires)f
+(sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i
+(holders,)i(but)c(y)m(ou)g(ma)m(y)330 2132 y(include)24
+b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25
+b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330
+2242 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44
+b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f
+(License,)i(and)d(all)j(the)330 2351 y(license)42 b(notices)g(in)f(the)
+h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42
+b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2461
+y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g
+(License)h(and)e(the)h(original)h(v)m(ersions)g(of)330
+2570 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33
+b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f
+(translation)i(and)330 2680 y(the)f(original)i(v)m(ersion)e(of)h(this)f
+(License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m
+(ersion)g(will)330 2790 y(prev)-5 b(ail.)330 2919 y(If)28
+b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m
+(kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330
+3029 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m
+(e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330
+3138 y(c)m(hanging)j(the)g(actual)h(title.)199 3268 y(9.)61
+b(TERMINA)-8 b(TION)330 3397 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8
+b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h
+(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3507 y(pro)m(vided)41
+b(for)h(under)e(this)i(License.)75 b(An)m(y)42 b(other)g(attempt)h(to)g
+(cop)m(y)-8 b(,)46 b(mo)s(dify)-8 b(,)44 b(sublicense)e(or)330
+3616 y(distribute)36 b(the)h(Do)s(cumen)m(t)g(is)g(v)m(oid,)i(and)d
+(will)h(automatically)i(terminate)f(y)m(our)e(righ)m(ts)h(under)330
+3726 y(this)28 b(License.)40 b(Ho)m(w)m(ev)m(er,)31 b(parties)d(who)f
+(ha)m(v)m(e)i(receiv)m(ed)g(copies,)h(or)d(righ)m(ts,)i(from)f(y)m(ou)g
+(under)e(this)330 3836 y(License)37 b(will)g(not)g(ha)m(v)m(e)h(their)f
+(licenses)g(terminated)h(so)f(long)g(as)g(suc)m(h)f(parties)h(remain)g
+(in)f(full)330 3945 y(compliance.)154 4075 y(10.)61 b(FUTURE)30
+b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 4204 y(The)41 b(F)-8
+b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 b(ma)m(y)f(publish)e
+(new,)k(revised)d(v)m(ersions)h(of)g(the)g(GNU)g(F)-8
+b(ree)330 4314 y(Do)s(cumen)m(tation)34 b(License)e(from)g(time)h(to)g
+(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h
+(in)g(spirit)330 4423 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)
+m(y)h(di\013er)f(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i
+(concerns.)330 4533 y(See)c Fs(http://www.gnu.org/copy)o(left)o(/)p
+Ft(.)330 4663 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m
+(en)g(a)g(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39
+b(If)29 b(the)g(Do)s(cumen)m(t)330 4772 y(sp)s(eci\014es)45
+b(that)h(a)g(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g
+(License)h(\\or)g(an)m(y)g(later)g(v)m(ersion")330 4882
+y(applies)33 b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f
+(follo)m(wing)i(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330
+4991 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m
+(ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g
+(b)m(y)330 5101 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8
+b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s
+(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 5210
+y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m
+(ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the)
+h(F)-8 b(ree)330 5320 y(Soft)m(w)m(are)31 b(F)-8 b(oundation.)p
+eop end
 %%Page: 137 143
-137 142 bop 150 -116 a Ft(App)s(endix)28 b(C:)i(Cop)m(ying)f(This)g
-(Man)m(ual)2062 b(137)150 299 y Fk(C.1.1)62 b(ADDENDUM:)41
-b(Ho)m(w)f(to)h(use)h(this)f(License)g(for)g(y)m(our)g(do)s(cumen)m(ts)
-275 543 y Ft(T)-8 b(o)27 b(use)g(this)f(License)h(in)f(a)i(do)s(cumen)m
-(t)f(y)m(ou)h(ha)m(v)m(e)g(written,)f(include)e(a)j(cop)m(y)g(of)f(the)
-h(License)f(in)f(the)150 653 y(do)s(cumen)m(t)k(and)g(put)g(the)g
-(follo)m(wing)f(cop)m(yrigh)m(t)i(and)f(license)f(notices)h(just)g
-(after)h(the)g(title)f(page:)468 765 y Fe(Copyright)42
-b(\(C\))79 b Fd(year)88 b(your)40 b(name)p Fe(.)468 852
-y(Permission)i(is)e(granted)g(to)g(copy,)h(distribute)g(and/or)g
-(modify)f(this)g(document)468 939 y(under)h(the)f(terms)g(of)g(the)g
-(GNU)g(Free)g(Documentation)i(License,)f(Version)g(1.2)468
-1026 y(or)f(any)g(later)g(version)h(published)h(by)d(the)h(Free)g
-(Software)h(Foundation;)468 1113 y(with)g(no)e(Invariant)j(Sections,)f
-(no)f(Front-Cover)h(Texts,)g(and)f(no)f(Back-Cover)j(Texts.)468
-1200 y(A)e(copy)g(of)g(the)g(license)g(is)g(included)h(in)f(the)g
-(section)h(entitled)g(``GNU)468 1288 y(Free)g(Documentation)h
-(License''.)275 1410 y Ft(If)d(y)m(ou)h(ha)m(v)m(e)h(In)m(v)-5
-b(arian)m(t)40 b(Sections,)i(F)-8 b(ron)m(t-Co)m(v)m(er)42
-b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts,)43
-b(replace)d(the)150 1520 y(\\with...T)-8 b(exts.")42
-b(line)28 b(with)i(this:)547 1632 y Fe(with)40 b(the)g(Invariant)h
-(Sections)g(being)g Fd(list)f(their)g(titles)p Fe(,)h(with)547
-1719 y(the)f(Front-Cover)i(Texts)e(being)g Fd(list)p
-Fe(,)h(and)f(with)g(the)g(Back-Cover)h(Texts)547 1806
-y(being)f Fd(list)p Fe(.)275 1929 y Ft(If)34 b(y)m(ou)i(ha)m(v)m(e)g
-(In)m(v)-5 b(arian)m(t)35 b(Sections)g(without)f(Co)m(v)m(er)i(T)-8
-b(exts,)38 b(or)d(some)g(other)h(com)m(bination)e(of)i(the)150
-2038 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g(alternativ)m(es)g(to)g
-(suit)e(the)i(situation.)275 2173 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f
-(con)m(tains)h(non)m(trivial)e(examples)i(of)g(program)f(co)s(de,)j(w)m
-(e)e(recommend)g(releasing)150 2283 y(these)44 b(examples)e(in)g
-(parallel)f(under)h(y)m(our)h(c)m(hoice)h(of)f(free)g(soft)m(w)m(are)h
-(license,)i(suc)m(h)d(as)g(the)g(GNU)150 2392 y(General)30
-b(Public)e(License,)j(to)g(p)s(ermit)d(their)i(use)g(in)f(free)h(soft)m
-(w)m(are.)p eop
+TeXDict begin 137 142 bop 150 -116 a Ft(App)s(endix)29
+b(C:)h(Cop)m(ying)g(This)g(Man)m(ual)2063 b(137)150 299
+y Fk(C.1.1)62 b(ADDENDUM:)41 b(Ho)m(w)f(to)h(use)h(this)f(License)g
+(for)h(y)m(our)f(do)s(cumen)m(ts)275 543 y Ft(T)-8 b(o)27
+b(use)g(this)g(License)h(in)f(a)h(do)s(cumen)m(t)f(y)m(ou)h(ha)m(v)m(e)
+g(written,)g(include)f(a)h(cop)m(y)g(of)f(the)h(License)g(in)f(the)150
+653 y(do)s(cumen)m(t)j(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh)m
+(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468
+765 y Fe(Copyright)42 b(\(C\))79 b Fd(year)88 b(your)40
+b(name)p Fe(.)468 852 y(Permission)i(is)e(granted)g(to)g(copy,)h
+(distribute)g(and/or)g(modify)f(this)g(document)468 939
+y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i
+(License,)f(Version)g(1.2)468 1026 y(or)f(any)g(later)g(version)h
+(published)h(by)d(the)h(Free)g(Software)h(Foundation;)468
+1113 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g
+(and)f(no)f(Back-Cover)j(Texts.)468 1200 y(A)e(copy)g(of)g(the)g
+(license)g(is)g(included)h(in)f(the)g(section)h(entitled)g(``GNU)468
+1288 y(Free)g(Documentation)h(License''.)275 1410 y Ft(If)d(y)m(ou)h
+(ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8
+b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k
+(T)-8 b(exts,)43 b(replace)e(the)150 1520 y(\\with...T)-8
+b(exts.")43 b(line)30 b(with)h(this:)547 1632 y Fe(with)40
+b(the)g(Invariant)h(Sections)g(being)g Fd(list)f(their)g(titles)p
+Fe(,)h(with)547 1719 y(the)f(Front-Cover)i(Texts)e(being)g
+Fd(list)p Fe(,)h(and)f(with)g(the)g(Back-Cover)h(Texts)547
+1806 y(being)f Fd(list)p Fe(.)275 1929 y Ft(If)34 b(y)m(ou)i(ha)m(v)m
+(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f(Co)m(v)m(er)h(T)-8
+b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g(of)g(the)150
+2038 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g(alternativ)m(es)i(to)e
+(suit)f(the)h(situation.)275 2173 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f
+(con)m(tains)i(non)m(trivial)g(examples)g(of)f(program)f(co)s(de,)j(w)m
+(e)e(recommend)g(releasing)150 2283 y(these)44 b(examples)f(in)g
+(parallel)h(under)e(y)m(our)h(c)m(hoice)i(of)e(free)g(soft)m(w)m(are)h
+(license,)k(suc)m(h)43 b(as)g(the)g(GNU)150 2392 y(General)31
+b(Public)f(License,)i(to)f(p)s(ermit)e(their)i(use)f(in)g(free)g(soft)m
+(w)m(are.)p eop end
 %%Page: 138 144
-138 143 bop 150 -116 a Ft(138)2527 b(Bash)31 b(Reference)g(Man)m(ual)p
-eop
+TeXDict begin 138 143 bop 150 -116 a Ft(138)2527 b(Bash)31
+b(Reference)g(Man)m(ual)p eop end
 %%Page: 139 145
-139 144 bop 150 -116 a Ft(Index)30 b(of)g(Shell)e(Builtin)g(Commands)
-2133 b(139)150 299 y Fo(Index)53 b(of)h(Shell)g(Builtin)h(Commands)150
-560 y Fr(.)150 686 y Fe(.)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42
+TeXDict begin 139 144 bop 150 -116 a Ft(Index)30 b(of)g(Shell)g
+(Builtin)h(Commands)2133 b(139)150 299 y Fo(Index)53
+b(of)h(Shell)e(Builtin)g(Commands)150 560 y Fr(.)150
+686 y Fe(.)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
+h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42
 b Fb(33)150 945 y Fr(:)150 1071 y Fe(:)17 b Fc(.)12 b(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
 h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
@@ -12366,30 +14094,30 @@ h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b Fb(39)2025 5558
 y Fr(W)2025 5674 y Fe(wait)13 b Fc(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
 f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38
-b Fb(81)p eop
+b Fb(81)p eop end
 %%Page: 140 146
-140 145 bop 150 -116 a Ft(140)2527 b(Bash)31 b(Reference)g(Man)m(ual)p
-eop
+TeXDict begin 140 145 bop 150 -116 a Ft(140)2527 b(Bash)31
+b(Reference)g(Man)m(ual)p eop end
 %%Page: 141 147
-141 146 bop 150 -116 a Ft(Index)30 b(of)g(Shell)e(Reserv)m(ed)j(W)-8
-b(ords)2247 b(141)150 299 y Fo(Index)53 b(of)h(Shell)g(Reserv)l(ed)e(W)
--13 b(ords)150 610 y Fr(!)150 743 y Fe(!)18 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(8)150 1029 y
-Fr([)150 1162 y Fe([[)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
+TeXDict begin 141 146 bop 150 -116 a Ft(Index)30 b(of)g(Shell)g(Reserv)
+m(ed)h(W)-8 b(ords)2247 b(141)150 299 y Fo(Index)53 b(of)h(Shell)e
+(Reserv)l(ed)g(W)-13 b(ords)150 610 y Fr(!)150 743 y
+Fe(!)18 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
+g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b
+Fb(8)150 1029 y Fr([)150 1162 y Fe([[)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
+h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
+(.)41 b Fb(12)150 1455 y Fr(])150 1587 y Fe(]])15 b Fc(.)e(.)g(.)f(.)g
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)41
-b Fb(12)150 1455 y Fr(])150 1587 y Fe(]])15 b Fc(.)e(.)g(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)41 b Fb(12)150 1873 y Fa({)150 2006 y Fe({)17 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(13)150 2292 y Fa(})150
-2425 y Fe(})17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42
+f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
+(.)h(.)f(.)41 b Fb(12)150 1873 y Fa({)150 2006 y Fe({)17
+b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
+f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(13)150 2292
+y Fa(})150 2425 y Fe(})17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
+h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42
 b Fb(13)150 2709 y Fr(C)150 2842 y Fe(case)13 b Fc(.)g(.)f(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
 f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38
@@ -12438,17 +14166,17 @@ h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
 38 b Fb(9)2025 3231 y Fr(W)2025 3347 y Fe(while)11 b
 Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)37 b Fb(10)p eop
+g(.)h(.)f(.)g(.)37 b Fb(10)p eop end
 %%Page: 142 148
-142 147 bop 150 -116 a Ft(142)2527 b(Bash)31 b(Reference)g(Man)m(ual)p
-eop
+TeXDict begin 142 147 bop 150 -116 a Ft(142)2527 b(Bash)31
+b(Reference)g(Man)m(ual)p eop end
 %%Page: 143 149
-143 148 bop 150 -116 a Ft(P)m(arameter)32 b(and)d(V)-8
-b(ariable)30 b(Index)2262 b(143)150 299 y Fo(P)l(arameter)53
-b(and)g(V)-13 b(ariable)55 b(Index)150 610 y Fr(!)150
-727 y Fe(!)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42
+TeXDict begin 143 148 bop 150 -116 a Ft(P)m(arameter)32
+b(and)d(V)-8 b(ariable)32 b(Index)2262 b(143)150 299
+y Fo(P)l(arameter)54 b(and)f(V)-13 b(ariable)53 b(Index)150
+610 y Fr(!)150 727 y Fe(!)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
+f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
+(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42
 b Fb(16)150 963 y Fr(#)150 1080 y Fe(#)17 b Fc(.)12 b(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
 h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
@@ -12613,29 +14341,29 @@ Fe(HOSTNAME)7 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
 f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(60)2025 5340 y Fe(HOSTTYPE)7
 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)32 b Fb(60)p eop
+g(.)h(.)32 b Fb(60)p eop end
 %%Page: 144 150
-144 149 bop 150 -116 a Ft(144)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-150 299 y Fr(I)150 417 y Fe(IFS)14 b Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39
-b Fb(55)150 506 y Fe(IGNOREEOF)25 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(60)150 594
-y Fe(input-meta)24 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)47 b Fb(88)150 682 y Fe(INPUTRC)8 b Fc(.)14
-b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)34 b Fb(60)150 771 y Fe(isearch-terminators)9 b Fc(.)17
-b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(88)150 1009 y Fr(K)150
-1128 y Fe(keymap)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(88)150 1385
-y Fr(L)150 1504 y Fe(LANG)13 b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38
+TeXDict begin 144 149 bop 150 -116 a Ft(144)2527 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fr(I)150 417 y Fe(IFS)14
+b Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
+f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(55)150 506 y Fe(IGNOREEOF)25
+b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
+49 b Fb(60)150 594 y Fe(input-meta)24 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
+f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(88)150 682
+y Fe(INPUTRC)8 b Fc(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
+g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fb(60)150 771 y Fe
+(isearch-terminators)9 b Fc(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34
+b Fb(88)150 1009 y Fr(K)150 1128 y Fe(keymap)10 b Fc(.)j(.)g(.)f(.)g(.)
+h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35
+b Fb(88)150 1385 y Fr(L)150 1504 y Fe(LANG)13 b Fc(.)g(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
+f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38
 b Fb(60)150 1592 y Fe(LC_ALL)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)
 f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(60)150
@@ -12763,23 +14491,23 @@ f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40
 b Fb(62)2025 3796 y Fr(V)2025 3915 y Fe(visible-stats)18
 b Fc(.)d(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
 h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43
-b Fb(89)p eop
+b Fb(89)p eop end
 %%Page: 145 151
-145 150 bop 150 -116 a Ft(F)-8 b(unction)30 b(Index)2861
-b(145)150 299 y Fo(F)-13 b(unction)53 b(Index)150 610
-y Fr(A)150 749 y Fe(abort)27 b(\(C-g\))8 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fb(101)150 848
-y Fe(accept-line)28 b(\(Newline)g(or)e(Return\))12 b
-Fc(.)h(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b
-Fb(95)150 946 y Fe(alias-expand-line)29 b(\(\))13 b Fc(.)g(.)g(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-39 b Fb(103)150 1257 y Fr(B)150 1397 y Fe(backward-char)29
-b(\(C-b\))16 b Fc(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)41 b Fb(95)150
-1495 y Fe(backward-delete-char)30 b(\(Rubout\))21 b Fc(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b
-Fb(97)150 1594 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))f
+TeXDict begin 145 150 bop 150 -116 a Ft(F)-8 b(unction)31
+b(Index)2861 b(145)150 299 y Fo(F)-13 b(unction)52 b(Index)150
+610 y Fr(A)150 749 y Fe(abort)27 b(\(C-g\))8 b Fc(.)13
+b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34
+b Fb(101)150 848 y Fe(accept-line)28 b(\(Newline)g(or)e(Return\))12
+b Fc(.)h(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37
+b Fb(95)150 946 y Fe(alias-expand-line)29 b(\(\))13 b
+Fc(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+(.)f(.)g(.)h(.)f(.)39 b Fb(103)150 1257 y Fr(B)150 1397
+y Fe(backward-char)29 b(\(C-b\))16 b Fc(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)41
+b Fb(95)150 1495 y Fe(backward-delete-char)30 b(\(Rubout\))21
+b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
+Fb(97)150 1594 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))f
 Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b
 Fb(98)150 1692 y Fe(backward-kill-word)30 b(\(M-)999
 1689 y Fg(h)p 1024 1636 146 4 v 1024 1692 a Ff(DEL)p
@@ -12925,19 +14653,20 @@ f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fb(96)2025
 b(\(M-p\))2193 5340 y Fc(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
 f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fb(96)p
-eop
+eop end
 %%Page: 146 152
-146 151 bop 150 -116 a Ft(146)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-150 299 y Fr(O)150 425 y Fe(operate-and-get-next)f(\(C-o\))24
-b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)49
-b Fb(103)150 518 y Fe(overwrite-mode)29 b(\(\))19 b Fc(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(97)150 786 y Fr(P)150
-913 y Fe(possible-command-completions)32 b(\(C-x)26 b(!\))15
-b Fc(.)e(.)g(.)f(.)g(.)41 b Fb(100)150 1005 y Fe(possible-completions)
-30 b(\(M-?\))25 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)49 b Fb(99)150 1097 y Fe(possible-filename-completions)
-32 b(\(C-x)27 b(/\))14 b Fc(.)e(.)g(.)h(.)39 b Fb(100)150
+TeXDict begin 146 151 bop 150 -116 a Ft(146)2527 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fr(O)150 425 y Fe
+(operate-and-get-next)f(\(C-o\))24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)49 b Fb(103)150 518 y
+Fe(overwrite-mode)29 b(\(\))19 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
+44 b Fb(97)150 786 y Fr(P)150 913 y Fe(possible-command-completions)32
+b(\(C-x)26 b(!\))15 b Fc(.)e(.)g(.)f(.)g(.)41 b Fb(100)150
+1005 y Fe(possible-completions)30 b(\(M-?\))25 b Fc(.)12
+b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)49
+b Fb(99)150 1097 y Fe(possible-filename-completions)32
+b(\(C-x)27 b(/\))14 b Fc(.)e(.)g(.)h(.)39 b Fb(100)150
 1190 y Fe(possible-hostname-completions)32 b(\(C-x)27
 b(@\))14 b Fc(.)e(.)g(.)h(.)39 b Fb(100)150 1282 y Fe
 (possible-username-completions)32 b(\(C-x)27 b(~\))14
@@ -13001,25 +14730,26 @@ b(\(M-C-y\))14 b Fc(.)g(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fb(96)2025
 2646 y Fe(yank-pop)27 b(\(M-y\))d Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)49 b Fb(99)p eop
+h(.)f(.)g(.)49 b Fb(99)p eop end
 %%Page: 147 153
-147 152 bop 150 -116 a Ft(Concept)31 b(Index)2882 b(147)150
-299 y Fo(Concept)52 b(Index)150 638 y Fr(A)150 754 y
-Fb(alias)27 b(expansion)20 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)45 b Fb(71)150 841 y(arithmetic)25 b(ev)l(aluation)g
-Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fb(70)150 929 y(arithmetic)25
-b(expansion)12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(21)150
-1016 y(arithmetic,)26 b(shell)20 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)45 b Fb(70)150 1103 y(arra)n(ys)6 b Fc(.)13
-b(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)32 b Fb(72)150 1353 y Fr(B)150 1469 y Fb(bac)n(kground)23
-b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49
+TeXDict begin 147 152 bop 150 -116 a Ft(Concept)31 b(Index)2882
+b(147)150 299 y Fo(Concept)52 b(Index)150 638 y Fr(A)150
+754 y Fb(alias)27 b(expansion)20 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)
+g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)45 b Fb(71)150 841 y(arithmetic)26
+b(ev)l(aluation)f Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fb(70)150
+929 y(arithmetic)26 b(expansion)12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38
+b Fb(21)150 1016 y(arithmetic,)27 b(shell)20 b Fc(.)12
+b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fb(70)150
+1103 y(arra)n(ys)6 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
+g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fb(72)150
+1353 y Fr(B)150 1469 y Fb(bac)n(kground)23 b Fc(.)13
+b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49
 b Fb(79)150 1556 y(Bash)26 b(con\014guration)11 b Fc(.)i(.)f(.)g(.)h(.)
 f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)36 b Fb(115)150 1643 y(Bash)26 b(installation)6
@@ -13033,46 +14763,47 @@ b(expansion)d Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
 b Fb(17)150 1905 y(builtin)17 b Fc(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
 f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b
-Fb(3)150 2138 y Fr(C)150 2254 y Fb(command)24 b(editing)19
+Fb(3)150 2138 y Fr(C)150 2254 y Fb(command)26 b(editing)19
 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fb(83)150
-2341 y(command)24 b(execution)11 b Fc(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+2341 y(command)26 b(execution)11 b Fc(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-37 b Fb(28)150 2428 y(command)24 b(expansion)f Fc(.)12
+37 b Fb(28)150 2428 y(command)26 b(expansion)d Fc(.)12
 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(28)150 2515 y(command)24
+(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(28)150 2515 y(command)26
 b(history)16 b Fc(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42
-b Fb(109)150 2603 y(command)24 b(searc)n(h)12 b Fc(.)h(.)f(.)g(.)h(.)f
+b Fb(109)150 2603 y(command)26 b(searc)n(h)12 b Fc(.)h(.)f(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)38 b Fb(28)150 2690 y(command)24
-b(substitution)g Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
+f(.)g(.)h(.)f(.)g(.)g(.)38 b Fb(28)150 2690 y(command)26
+b(substitution)e Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 b Fb(21)150
-2777 y(command)24 b(timing)8 b Fc(.)k(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)34 b Fb(8)150 2864 y(commands,)24 b(comp)r(ound)8
-b Fc(.)k(.)g(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fb(9)150 2952 y(commands,)24
-b(conditional)13 b Fc(.)h(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)39 b Fb(10)150
-3039 y(commands,)24 b(grouping)15 b Fc(.)f(.)e(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)41
-b Fb(13)150 3126 y(commands,)24 b(lists)6 b Fc(.)14 b(.)f(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fb(9)150 3213 y(commands,)24
-b(lo)r(oping)h Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49
-b Fb(9)150 3300 y(commands,)24 b(pip)r(elines)17 b Fc(.)d(.)e(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)43 b Fb(8)150 3388 y(commands,)24 b(shell)16
-b Fc(.)e(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)42
-b Fb(8)150 3475 y(commands,)24 b(simple)d Fc(.)12 b(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)47 b Fb(8)150 3562 y(commen)n(ts,)24
-b(shell)8 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-34 b Fb(7)150 3649 y(completion)26 b(builtins)c Fc(.)12
+2777 y(command)26 b(timing)8 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
+g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)34 b Fb(8)150 2864 y(commands,)26 b(comp)r(ound)8
+b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fb(9)150 2952
+y(commands,)26 b(conditional)13 b Fc(.)h(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)
+f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)39
+b Fb(10)150 3039 y(commands,)26 b(grouping)15 b Fc(.)f(.)e(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
+h(.)f(.)41 b Fb(13)150 3126 y(commands,)26 b(lists)6
+b Fc(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32
+b Fb(9)150 3213 y(commands,)26 b(lo)r(oping)f Fc(.)12
+b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(9)150 3300
+y(commands,)26 b(pip)r(elines)17 b Fc(.)d(.)e(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
+43 b Fb(8)150 3388 y(commands,)26 b(shell)16 b Fc(.)e(.)e(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
+f(.)g(.)g(.)h(.)f(.)g(.)h(.)42 b Fb(8)150 3475 y(commands,)26
+b(simple)c Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
+g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47
+b Fb(8)150 3562 y(commen)n(ts,)26 b(shell)8 b Fc(.)13
+b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34
+b Fb(7)150 3649 y(completion)27 b(builtins)22 b Fc(.)12
 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(105)150 3736 y(con\014guration)15
 b Fc(.)e(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
@@ -13083,17 +14814,17 @@ b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
 4073 y Fr(D)150 4189 y Fb(directory)26 b(stac)n(k)e Fc(.)12
 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(73)150
-4439 y Fr(E)150 4555 y Fb(editing)26 b(command)e(lines)f
+4439 y Fr(E)150 4555 y Fb(editing)26 b(command)g(lines)d
 Fc(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(83)150 4642 y(en)n(vironmen)n(t)10
-b Fc(.)h(.)h(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
+b Fc(.)i(.)g(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
 h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35
 b Fb(30)150 4729 y(ev)l(aluation,)26 b(arithmetic)13
-b Fc(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
+b Fc(.)h(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
 f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(70)150 4817 y(ev)n(en)n(t)25
 b(designators)18 b Fc(.)c(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44
-b Fb(111)150 4904 y(execution)26 b(en)n(vironmen)n(t)18
+b Fb(111)150 4904 y(execution)26 b(en)n(vironmen)n(t)19
 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fb(29)150 4991 y(exit)25
 b(status)17 b Fc(.)c(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
@@ -13101,34 +14832,34 @@ h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
 (.)43 b Fb(3,)26 b(30)150 5078 y(expansion)16 b Fc(.)d(.)f(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
 h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b
-Fb(16)150 5166 y(expansion,)26 b(arithmetic)19 b Fc(.)13
+Fb(16)150 5166 y(expansion,)26 b(arithmetic)20 b Fc(.)13
 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)45 b Fb(21)150 5253 y(expansion,)26
 b(brace)12 b Fc(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38
-b Fb(17)150 5340 y(expansion,)26 b(\014lename)18 b Fc(.)11
-b(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+b Fb(17)150 5340 y(expansion,)26 b(\014lename)18 b Fc(.)12
+b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fb(22)2025 638 y(expansion,)26
-b(parameter)21 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(18)2025
-729 y(expansion,)26 b(pathname)8 b Fc(.)j(.)h(.)h(.)f(.)g(.)h(.)f(.)g
+b(parameter)c Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(18)2025
+729 y(expansion,)26 b(pathname)8 b Fc(.)k(.)g(.)h(.)f(.)g(.)h(.)f(.)g
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34
 b Fb(22)2025 819 y(expansion,)26 b(tilde)9 b Fc(.)j(.)h(.)f(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
 h(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(18)2025 910 y(expressions,)27
-b(arithmetic)16 b Fc(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
+b(arithmetic)16 b Fc(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
 g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b Fb(70)2025
 1000 y(expressions,)27 b(conditional)22 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)47
 b Fb(69)2025 1267 y Fr(F)2025 1390 y Fb(FDL,)25 b(GNU)g(F)-6
-b(ree)26 b(Do)r(cumen)n(tation)f(License)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)
+b(ree)26 b(Do)r(cumen)n(tation)g(License)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)
 36 b Fb(131)2025 1480 y(\014eld)21 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
 g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)48
-b Fb(3)2025 1571 y(\014lename)8 b Fc(.)j(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)
+b Fb(3)2025 1571 y(\014lename)8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
 f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fb(3)2025
-1661 y(\014lename)25 b(expansion)10 b Fc(.)i(.)h(.)f(.)g(.)g(.)h(.)f(.)
+1661 y(\014lename)26 b(expansion)10 b Fc(.)i(.)h(.)f(.)g(.)g(.)h(.)f(.)
 g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
 (.)g(.)36 b Fb(22)2025 1752 y(foreground)20 b Fc(.)12
 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
@@ -13183,67 +14914,68 @@ b(.)d(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
 b Fb(7)2025 4860 y(login)26 b(shell)13 b Fc(.)h(.)e(.)g(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
 g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fb(65)2025
-5127 y Fr(M)2025 5249 y Fb(matc)n(hing,)25 b(pattern)7
+5127 y Fr(M)2025 5249 y Fb(matc)n(hing,)26 b(pattern)7
 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fb(23)2025
-5340 y(metac)n(haracter)17 b Fc(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+5340 y(metac)n(haracter)17 b Fc(.)d(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
 (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)44 b Fb(3)p eop
+g(.)h(.)f(.)g(.)44 b Fb(3)p eop end
 %%Page: 148 154
-148 153 bop 150 -116 a Ft(148)2527 b(Bash)31 b(Reference)g(Man)m(ual)
-150 299 y Fr(N)150 417 y Fb(name)20 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f
+TeXDict begin 148 153 bop 150 -116 a Ft(148)2527 b(Bash)31
+b(Reference)g(Man)m(ual)150 299 y Fr(N)150 417 y Fb(name)21
+b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
+h(.)f(.)g(.)h(.)f(.)g(.)47 b Fb(3)150 506 y(nativ)n(e)25
+b(languages)14 b Fc(.)h(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40
+b Fb(7)150 594 y(notation,)27 b(readline)12 b Fc(.)h(.)f(.)h(.)f(.)g(.)
+g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)38 b Fb(83)150 851 y Fr(O)150 969
+y Fb(op)r(erator,)27 b(shell)15 b Fc(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)
+h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)h(.)f(.)41 b Fb(3)150 1225 y Fr(P)150
+1344 y Fb(parameter)26 b(expansion)14 b Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
+40 b Fb(18)150 1432 y(parameters)14 b Fc(.)f(.)g(.)f(.)g(.)h(.)f(.)g(.)
+h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(15)150 1521
+y(parameters,)27 b(p)r(ositional)9 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34
+b Fb(15)150 1609 y(parameters,)27 b(sp)r(ecial)e Fc(.)12
+b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(15)150 1698 y(pathname)25
+b(expansion)19 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44
+b Fb(22)150 1786 y(pattern)25 b(matc)n(hing)18 b Fc(.)13
+b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fb(23)150
+1875 y(pip)r(eline)15 b Fc(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
+f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b Fb(8)150 1963
+y(POSIX)8 b Fc(.)k(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
+h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(3)150 2052 y(POSIX)25
+b(Mo)r(de)10 b Fc(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47
-b Fb(3)150 506 y(nativ)n(e)25 b(languages)14 b Fc(.)h(.)d(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(7)150 594 y(notation,)27
-b(readline)12 b Fc(.)h(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38
-b Fb(83)150 851 y Fr(O)150 969 y Fb(op)r(erator,)27 b(shell)15
-b Fc(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41
-b Fb(3)150 1225 y Fr(P)150 1344 y Fb(parameter)25 b(expansion)14
-b Fc(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fb(18)150 1432 y(parameters)14
-b Fc(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39
-b Fb(15)150 1521 y(parameters,)26 b(p)r(ositional)9 b
-Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fb(15)150 1609 y(parameters,)26
-b(sp)r(ecial)f Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49
-b Fb(15)150 1698 y(pathname)24 b(expansion)19 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(22)150 1786 y(pattern)25
-b(matc)n(hing)18 b Fc(.)12 b(.)g(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fb(23)150 1875 y(pip)r(eline)15 b Fc(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g
+f(.)35 b Fb(76)150 2140 y(pro)r(cess)27 b(group)7 b Fc(.)13
+b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
+b Fb(3)150 2229 y(pro)r(cess)27 b(group)e(ID)f Fc(.)12
+b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)50 b Fb(3)150
+2317 y(pro)r(cess)27 b(substitution)10 b Fc(.)i(.)h(.)f(.)g(.)h(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b
-Fb(8)150 1963 y(POSIX)8 b Fc(.)k(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(3)150
-2052 y(POSIX)25 b(Mo)r(de)10 b Fc(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)35 b Fb(76)150 2140 y(pro)r(cess)27
-b(group)7 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)33 b Fb(3)150 2229 y(pro)r(cess)27 b(group)e(ID)f
-Fc(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)50
-b Fb(3)150 2317 y(pro)r(cess)27 b(substitution)10 b Fc(.)i(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)36 b Fb(22)150 2406 y(programmable)25
-b(completion)16 b Fc(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)42 b Fb(103)150 2494 y(prompting)7
-b Fc(.)k(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)32 b Fb(75)150 2750 y Fr(Q)150 2869 y Fb(quoting)19
-b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)46 b Fb(6)150 2957 y(quoting,)26 b(ANSI)12
-b Fc(.)f(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38
+f(.)36 b Fb(22)150 2406 y(programmable)27 b(completion)16
+b Fc(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
+g(.)g(.)42 b Fb(103)150 2494 y(prompting)7 b Fc(.)12
+b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
+(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32
+b Fb(75)150 2750 y Fr(Q)150 2869 y Fb(quoting)19 b Fc(.)13
+b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
+(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
+f(.)g(.)46 b Fb(6)150 2957 y(quoting,)26 b(ANSI)12 b
+Fc(.)f(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
+(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38
 b Fb(6)150 3213 y Fr(R)150 3332 y Fb(Readline,)26 b(ho)n(w)g(to)g(use)
 14 b Fc(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
 (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fb(82)150 3421
@@ -13258,7 +14990,7 @@ b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
 b Fb(76)2025 473 y(return)25 b(status)19 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)
 g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fb(3)2025
-707 y Fr(S)2025 823 y Fb(shell)26 b(arithmetic)12 b Fc(.)g(.)h(.)f(.)g
+707 y Fr(S)2025 823 y Fb(shell)26 b(arithmetic)12 b Fc(.)h(.)g(.)f(.)g
 (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
 f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(70)2025 910 y(shell)26
 b(function)11 b Fc(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
@@ -13308,8 +15040,8 @@ b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
 b Fb(22)2025 3304 y Fr(Y)2025 3421 y Fb(y)n(anking)25
 b(text)7 b Fc(.)k(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
 (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)33 b Fb(85)p eop
+g(.)33 b Fb(85)p eop end
 %%Trailer
-end
+
 userdict /end-hook known{end-hook}if
 %%EOF
diff --git a/doc/bashref.texi.orig b/doc/bashref.texi.orig
new file mode 100644 (file)
index 0000000..fdce9e3
--- /dev/null
@@ -0,0 +1,7105 @@
+\input texinfo.tex @c -*- texinfo -*-
+@c %**start of header
+@setfilename bashref.info
+@settitle Bash Reference Manual
+@c %**end of header
+
+@setchapternewpage odd
+
+@include version.texi
+
+@copying
+This text is a brief description of the features that are present in
+the Bash shell (version @value{VERSION}, @value{UPDATED}).
+
+This is Edition @value{EDITION}, last updated @value{UPDATED},
+of @cite{The GNU Bash Reference Manual},
+for @code{Bash}, Version @value{VERSION}.
+
+Copyright @copyright{} 1988-2003 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
+and with the Back-Cover Texts as in (a) below.  A copy of the license is
+included in the section entitled ``GNU Free Documentation License.''
+
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software.  Copies published by the Free
+Software Foundation raise funds for GNU development.''
+@end quotation
+@end copying
+
+@defcodeindex bt
+@defcodeindex rw
+@set BashFeatures
+
+@dircategory Basics
+@direntry
+* Bash: (bash).                     The GNU Bourne-Again SHell.
+@end direntry
+
+@finalout
+
+@titlepage
+@title Bash Reference Manual
+@subtitle Reference Documentation for Bash
+@subtitle Edition @value{EDITION}, for @code{Bash} Version @value{VERSION}.
+@subtitle @value{UPDATED-MONTH}
+@author Chet Ramey, Case Western Reserve University
+@author Brian Fox, Free Software Foundation
+
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+
+@sp 1
+Published by the Free Software Foundation @*
+59 Temple Place, Suite 330, @*
+Boston, MA 02111-1307 @*
+USA @*
+
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top, Introduction, (dir), (dir)
+@top Bash Features
+
+This text is a brief description of the features that are present in
+the Bash shell (version @value{VERSION}, @value{UPDATED})..
+
+This is Edition @value{EDITION}, last updated @value{UPDATED},
+of @cite{The GNU Bash Reference Manual},
+for @code{Bash}, Version @value{VERSION}.
+
+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 (@file{sh}), the Korn Shell
+(@file{ksh}), and the C-shell (@file{csh} and its successor,
+@file{tcsh}). The following menu breaks the features up into
+categories based upon which one of these other shells inspired the
+feature.
+
+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.
+
+@menu
+* Introduction::               An introduction to the shell.
+
+* Definitions::                        Some definitions used in the rest of this
+                               manual.
+
+* Basic Shell Features::       The shell "building blocks".
+
+* Shell Builtin Commands::     Commands that are a part of the shell.
+
+* Shell Variables::            Variables used or set by Bash.
+
+* Bash Features::              Features found only in Bash.
+
+* Job Control::                        A chapter describing what job control is
+                               and how Bash allows you to use it.
+
+* Using History Interactively::        Chapter dealing with history expansion
+                               rules.
+
+* Command Line Editing::       Chapter describing the command line
+                               editing features.
+
+* Installing Bash::            How to build and install Bash on your system.
+
+* Reporting Bugs::             How to report bugs in Bash.
+
+* Major Differences From The Bourne Shell::    A terse list of the differences
+                                               between Bash and historical
+                                               versions of /bin/sh.
+
+* Copying This Manual::                Copying this manual.
+
+* Builtin Index::              Index of Bash builtin commands.
+
+* Reserved Word Index::                Index of Bash reserved words.
+
+* Variable Index::             Quick reference helps you find the
+                               variable you want.
+
+* Function Index::             Index of bindable Readline functions.
+
+* Concept Index::              General index for concepts described in
+                               this manual.
+@end menu
+@end ifnottex
+
+@node Introduction
+@chapter Introduction
+@menu
+* What is Bash?::              A short description of Bash.
+
+* What is a shell?::           A brief introduction to shells.
+@end menu
+
+@node What is Bash?
+@section What is Bash?
+
+Bash is the shell, or command language interpreter,
+for the @sc{gnu} operating system.
+The name is an acronym for the @samp{Bourne-Again SHell},
+a pun on Stephen Bourne, the author of the direct ancestor of
+the current Unix shell @code{/bin/sh}, 
+which appeared in the Seventh Edition Bell Labs Research version
+of Unix.
+
+Bash is largely compatible with @code{sh} and incorporates useful
+features from the Korn shell @code{ksh} and the C shell @code{csh}.
+It is intended to be a conformant implementation of the @sc{ieee}
+@sc{posix} Shell and Tools specification (@sc{ieee} Working Group 1003.2).
+It offers functional improvements over @code{sh} for both interactive and
+programming use.
+
+While the @sc{gnu} operating system provides other shells, including
+a version of @code{csh}, Bash is the default shell.
+Like other @sc{gnu} software, Bash is quite portable.  It currently runs
+on nearly every version of Unix and a few other operating systems @minus{}
+independently-supported ports exist for @sc{ms-dos}, @sc{os/2},
+Windows @sc{95/98}, and Windows @sc{nt}.
+
+@node What is a shell?
+@section What is a shell?
+
+At its base, a shell is simply a macro processor that executes
+commands.  A Unix shell is both a command interpreter, which
+provides the user interface to the rich set of @sc{gnu} utilities,
+and a programming language, allowing these utilitites 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 @file{/bin}, allowing users
+or groups to establish custom environments. 
+
+A shell allows execution of @sc{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 @dfn{redirection} constructs permit
+fine-grained control of the input and output of those commands.
+Moreover, the shell allows control over the contents of commands'
+environments.
+Shells may be used interactively or non-interactively: they accept
+input typed from the keyboard or from a file.
+
+Shells also provide a small set of built-in
+commands (@dfn{builtins}) implementing functionality impossible
+or inconvenient to obtain via separate utilities.
+For example, @code{cd}, @code{break}, @code{continue}, and
+@code{exec}) cannot be implemented outside of the shell because
+they directly manipulate the shell itself.
+The @code{history}, @code{getopts}, @code{kill}, or @code{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. 
+
+Shells offer features geared specifically for
+interactive use rather than to augment the programming language. 
+These interactive features include job control, command line
+editing, history and aliases.  Each of these features is
+described in this manual.
+
+@node Definitions
+@chapter Definitions
+These definitions are used throughout the remainder of this manual.
+
+@table @code
+
+@item POSIX
+@cindex POSIX
+A family of open system standards based on Unix.  Bash
+is concerned with @sc{posix} 1003.2, the Shell and Tools Standard.
+
+@item blank
+A space or tab character.
+
+@item builtin
+@cindex builtin
+A command that is implemented internally by the shell itself, rather
+than by an executable program somewhere in the file system.
+
+@item control operator
+@cindex control operator
+A @code{word} that performs a control function.  It is a @code{newline}
+or one of the following:
+@samp{||}, @samp{&&}, @samp{&}, @samp{;}, @samp{;;},
+@samp{|}, @samp{(}, or @samp{)}.
+
+@item exit status
+@cindex exit status
+The value returned by a command to its caller.  The value is restricted
+to eight bits, so the maximum value is 255.
+
+@item field
+@cindex 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.
+
+@item filename
+@cindex filename
+A string of characters used to identify a file.
+
+@item job
+@cindex job
+A set of processes comprising a pipeline, and any processes descended
+from it, that are all in the same process group.
+
+@item job control
+@cindex job control
+A mechanism by which users can selectively stop (suspend) and restart
+(resume) execution of processes.
+
+@item metacharacter
+@cindex metacharacter
+A character that, when unquoted, separates words.  A metacharacter is
+a @code{blank} or one of the following characters:
+@samp{|}, @samp{&}, @samp{;}, @samp{(}, @samp{)}, @samp{<}, or
+@samp{>}.
+
+@item name
+@cindex name
+@cindex identifier
+A @code{word} consisting solely of letters, numbers, and underscores,
+and beginning with a letter or underscore.  @code{Name}s are used as
+shell variable and function names.
+Also referred to as an @code{identifier}.
+
+@item operator
+@cindex operator, shell
+A @code{control operator} or a @code{redirection operator}.
+@xref{Redirections}, for a list of redirection operators.
+
+@item process group
+@cindex process group
+A collection of related processes each having the same process
+group @sc{id}.
+
+@item process group ID
+@cindex process group ID
+A unique identifer that represents a @code{process group}
+during its lifetime.
+
+@item reserved word
+@cindex reserved word
+A @code{word} that has a special meaning to the shell.  Most reserved
+words introduce shell flow control constructs, such as @code{for} and
+@code{while}.
+
+@item return status
+@cindex return status
+A synonym for @code{exit status}.
+
+@item signal
+@cindex signal
+A mechanism by which a process may be notified by the kernel
+of an event occurring in the system.
+
+@item special builtin
+@cindex special builtin
+A shell builtin command that has been classified as special by the
+@sc{posix} 1003.2 standard.
+
+@item token
+@cindex token
+A sequence of characters considered a single unit by the shell.  It is
+either a @code{word} or an @code{operator}.
+
+@item word
+@cindex word
+A @code{token} that is not an @code{operator}.
+@end table
+
+@node Basic Shell Features
+@chapter Basic Shell Features
+@cindex Bourne shell
+
+Bash is an acronym for @samp{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,
+and the rules for evaluation and quoting are taken from the @sc{posix}
+1003.2 specification for the `standard' Unix shell.
+
+This chapter briefly summarizes the shell's `building blocks':
+commands, control structures, shell functions, shell @i{parameters},
+shell expansions,
+@i{redirections}, which are a way to direct input and output from
+and to named files, and how the shell executes commands.
+
+@menu
+* Shell Syntax::               What your input means to the shell.
+* Shell Commands::             The types of commands you can use.
+* Shell Functions::            Grouping commands by name.
+* Shell Parameters::           How the shell stores values.
+* Shell Expansions::           How Bash expands parameters and the various
+                               expansions available.
+* Redirections::               A way to control where input and output go.
+* Executing Commands::         What happens when you run a command.
+* Shell Scripts::              Executing files of shell commands.
+@end menu
+
+@node Shell Syntax
+@section Shell Syntax
+@menu
+* Shell Operation::    The basic operation of the shell.
+
+* Quoting::            How to remove the special meaning from characters.
+
+* Comments::           How to specify comments.
+@end menu
+
+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 (@samp{#}), and the rest
+of that line.
+                                
+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,
+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
+available for further inspection or processing.
+
+@node Shell Operation
+@subsection Shell Operation
+
+The following is a brief description of the shell's operation when it
+reads and executes a command.  Basically, the shell does the
+following:
+
+@enumerate
+@item
+Reads its input from a file (@pxref{Shell Scripts}), from a string
+supplied as an argument to the @option{-c} invocation option
+(@pxref{Invoking Bash}), or from the user's terminal.
+
+@item
+Breaks the input into words and operators, obeying the quoting rules
+described in @ref{Quoting}.  These tokens are separated by
+@code{metacharacters}.  Alias expansion is performed by this step
+(@pxref{Aliases}).
+
+@item
+Parses the tokens into simple and compound commands
+(@pxref{Shell Commands}).
+
+@item
+Performs the various shell expansions (@pxref{Shell Expansions}), breaking
+the expanded tokens into lists of filenames (@pxref{Filename Expansion})
+and commands and arguments.
+
+@item
+Performs any necessary redirections (@pxref{Redirections}) and removes
+the redirection operators and their operands from the argument list.
+
+@item
+Executes the command (@pxref{Executing Commands}).
+
+@item
+Optionally waits for the command to complete and collects its exit
+status (@pxref{Exit Status}).
+
+@end enumerate
+
+@node Quoting
+@subsection Quoting
+@cindex quoting
+@menu
+* Escape Character::   How to remove the special meaning from a single
+                       character.
+* Single Quotes::      How to inhibit all interpretation of a sequence
+                       of characters.
+* Double Quotes::      How to suppress most of the interpretation of a
+                       sequence of characters.
+* ANSI-C Quoting::     How to expand ANSI-C sequences in quoted strings.
+
+* Locale Translation:: How to translate strings into different languages.
+@end menu
+
+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 (@pxref{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, the
+@var{history expansion} character, usually @samp{!}, must be quoted
+to prevent history expansion.  @xref{Bash History Facilities}, for
+more details concerning history expansion.
+
+There are three quoting mechanisms: the
+@var{escape character}, single quotes, and double quotes.
+
+@node Escape Character
+@subsubsection Escape Character
+A non-quoted backslash @samp{\} is the Bash escape character.
+It preserves the literal value of the next character that follows,
+with the exception of @code{newline}.  If a @code{\newline} pair
+appears, and the backslash itself is not quoted, the @code{\newline}
+is treated as a line continuation (that is, it is removed from
+the input stream and effectively ignored).
+
+@node Single Quotes
+@subsubsection Single Quotes
+
+Enclosing characters in single quotes (@samp{'}) 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.
+
+@node Double Quotes
+@subsubsection Double Quotes
+
+Enclosing characters in double quotes (@samp{"}) preserves the literal value
+of all characters within the quotes, with the exception of
+@samp{$}, @samp{`}, and @samp{\}.
+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
+the following characters:
+@samp{$}, @samp{`}, @samp{"}, @samp{\}, or @code{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.
+When command history is being used, the double quote may not be used to
+quote the history expansion character.
+
+The special parameters @samp{*} and @samp{@@} have special meaning
+when in double quotes (@pxref{Shell Parameter Expansion}).
+
+@node ANSI-C Quoting
+@subsubsection ANSI-C Quoting
+@cindex quoting, ANSI
+
+Words of the form @code{$'@var{string}'} are treated specially.  The
+word expands to @var{string}, with backslash-escaped characters replaced
+as specified by the ANSI C standard.  Backslash escape sequences, if
+present, are decoded as follows:
+
+@table @code
+@item \a
+alert (bell)
+@item \b
+backspace
+@item \e
+an escape character (not ANSI C)
+@item \f
+form feed
+@item \n
+newline
+@item \r
+carriage return
+@item \t
+horizontal tab
+@item \v
+vertical tab
+@item \\
+backslash
+@item \'
+single quote
+@item \@var{nnn}
+the eight-bit character whose value is the octal value @var{nnn}
+(one to three digits)
+@item \x@var{HH}
+the eight-bit character whose value is the hexadecimal value @var{HH}
+(one or two hex digits)
+@item \c@var{x}
+a control-@var{x} character
+@end table
+
+@noindent
+The expanded result is single-quoted, as if the dollar sign had not
+been present.
+
+@node Locale Translation
+@subsubsection Locale-Specific Translation
+@cindex localization
+@cindex internationalization
+@cindex native languages
+@cindex translation, native languages
+
+A double-quoted string preceded by a dollar sign (@samp{$}) will cause
+the string to be translated according to the current locale.
+If the current locale is @code{C} or @code{POSIX}, the dollar sign
+is ignored.
+If the string is translated and replaced, the replacement is
+double-quoted.
+
+@vindex LC_MESSAGES
+@vindex TEXTDOMAIN
+@vindex TEXTDOMAINDIR
+Some systems use the message catalog selected by the @env{LC_MESSAGES}
+shell variable.  Others create the name of the message catalog from the
+value of the @env{TEXTDOMAIN} shell variable, possibly adding a
+suffix of @samp{.mo}.  If you use the @env{TEXTDOMAIN} variable, you
+may need to set the @env{TEXTDOMAINDIR} variable to the location of
+the message catalog files.  Still others use both variables in this
+fashion:
+@env{TEXTDOMAINDIR}/@env{LC_MESSAGES}/LC_MESSAGES/@env{TEXTDOMAIN}.mo.
+
+@node Comments
+@subsection Comments
+@cindex comments, shell
+
+In a non-interactive shell, or an interactive shell in which the
+@code{interactive_comments} option to the @code{shopt}
+builtin is enabled (@pxref{Bash Builtins}),
+a word beginning with @samp{#}
+causes that word and all remaining characters on that line to
+be ignored.  An interactive shell without the @code{interactive_comments}
+option enabled does not allow comments.  The @code{interactive_comments}
+option is on by default in interactive shells.
+@xref{Interactive Shells}, for a description of what makes
+a shell interactive.
+
+@node Shell Commands
+@section Shell Commands
+@cindex commands, shell
+
+A simple shell command such as @code{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
+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.
+
+@menu
+* Simple Commands::            The most common type of command.
+* Pipelines::                  Connecting the input and output of several
+                               commands.
+* Lists::                      How to execute commands sequentially.
+* Looping Constructs::         Shell commands for iterative action.
+* Conditional Constructs::     Shell commands for conditional execution.
+* Command Grouping::           Ways to group commands.
+@end menu
+
+@node Simple Commands
+@subsection Simple Commands
+@cindex commands, simple
+
+A simple command is the kind of command encountered most often.
+It's just a sequence of words separated by @code{blank}s, terminated
+by one of the shell's control operators (@pxref{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 (@pxref{Exit Status}) of a simple command is
+its exit status as provided
+by the @sc{posix} 1003.1 @code{waitpid} function, or 128+@var{n} if
+the command was terminated by signal @var{n}.
+
+@node Pipelines
+@subsection Pipelines
+@cindex pipeline
+@cindex commands, pipelines
+
+A @code{pipeline} is a sequence of simple commands separated by
+@samp{|}.
+
+@rwindex time
+@rwindex !
+@cindex command timing
+The format for a pipeline is
+@example
+[@code{time} [@code{-p}]] [@code{!}] @var{command1} [@code{|} @var{command2} @dots{}]
+@end example
+
+@noindent
+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.
+
+The reserved word @code{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 @option{-p} option changes the output format to that specified
+by @sc{posix}.
+The @env{TIMEFORMAT} variable may be set to a format string that
+specifies how the timing information should be displayed.
+@xref{Bash Variables}, for a description of the available formats.
+The use of @code{time} as a reserved word permits the timing of
+shell builtins, shell functions, and pipelines.  An external
+@code{time} command cannot time these easily.
+
+If the pipeline is not executed asynchronously (@pxref{Lists}), the
+shell waits for all commands in the pipeline to complete.
+
+Each command in a pipeline is executed in its own subshell
+(@pxref{Command Execution Environment}).  The exit
+status of a pipeline is the exit status of the last command in the
+pipeline.  If the reserved word @samp{!} precedes the pipeline, the
+exit status is the logical negation of the exit status of the last command.
+
+@node Lists
+@subsection Lists of Commands
+@cindex commands, lists
+
+A @code{list} is a sequence of one or more pipelines separated by one
+of the operators @samp{;}, @samp{&}, @samp{&&}, or @samp{||},
+and optionally terminated by one of @samp{;}, @samp{&}, or a
+@code{newline}.
+
+Of these list operators, @samp{&&} and @samp{||}
+have equal precedence, followed by @samp{;} and @samp{&},
+which have equal precedence.
+
+A sequence of one or more newlines may appear in a @code{list}
+to delimit commands, equivalent to a semicolon.
+
+If a command is terminated by the control operator @samp{&},
+the shell executes the command asynchronously in a subshell.
+This is known as executing the command in the @var{background}.
+The shell does not wait for the command to finish, and the return
+status is 0 (true).
+When job control is not active (@pxref{Job Control}),
+the standard input for asynchronous commands, in the absence of any
+explicit redirections, is redirected from @code{/dev/null}.
+
+Commands separated by a @samp{;} 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.
+
+The control operators @samp{&&} and @samp{||}
+denote @sc{and} lists and @sc{or} lists, respectively.
+An @sc{and} list has the form
+@example
+@var{command1} && @var{command2}
+@end example
+
+@noindent
+@var{command2} is executed if, and only if, @var{command1}
+returns an exit status of zero.
+
+An @sc{or} list has the form
+@example
+@var{command1} || @var{command2}
+@end example
+
+@noindent
+@var{command2} is executed if, and only if, @var{command1}
+returns a non-zero exit status.
+
+The return status of
+@sc{and} and @sc{or} lists is the exit status of the last command
+executed in the list.
+
+@node Looping Constructs
+@subsection Looping Constructs
+@cindex commands, looping
+
+Bash supports the following looping constructs.
+
+Note that wherever a @samp{;} appears in the description of a
+command's syntax, it may be replaced with one or more newlines.
+
+@table @code
+@item until
+@rwindex until
+@rwindex do
+@rwindex done
+The syntax of the @code{until} command is:
+@example
+until @var{test-commands}; do @var{consequent-commands}; done
+@end example
+Execute @var{consequent-commands} as long as
+@var{test-commands} has an exit status which is not zero.
+The return status is the exit status of the last command executed
+in @var{consequent-commands}, or zero if none was executed.
+
+@item while
+@rwindex while
+The syntax of the @code{while} command is:
+@example
+while @var{test-commands}; do @var{consequent-commands}; done
+@end example
+
+Execute @var{consequent-commands} as long as
+@var{test-commands} has an exit status of zero.
+The return status is the exit status of the last command executed
+in @var{consequent-commands}, or zero if none was executed.
+
+@item for
+@rwindex for
+The syntax of the @code{for} command is:
+
+@example
+for @var{name} [in @var{words} @dots{}]; do @var{commands}; done
+@end example
+Expand @var{words}, and execute @var{commands} once for each member
+in the resultant list, with @var{name} bound to the current member.
+If @samp{in @var{words}} is not present, the @code{for} command
+executes the @var{commands} once for each positional parameter that is
+set, as if @samp{in "$@@"} had been specified
+(@pxref{Special Parameters}).
+The return status is the exit status of the last command that executes.
+If there are no items in the expansion of @var{words}, no commands are
+executed, and the return status is zero.
+
+An alternate form of the @code{for} command is also supported:
+
+@example
+for (( @var{expr1} ; @var{expr2} ; @var{expr3} )) ; do @var{commands} ; done
+@end example
+First, the arithmetic expression @var{expr1} is evaluated according
+to the rules described below (@pxref{Shell Arithmetic}).
+The arithmetic expression @var{expr2} is then evaluated repeatedly
+until it evaluates to zero.   
+Each time @var{expr2} evaluates to a non-zero value, @var{commands} are
+executed and the arithmetic expression @var{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 @var{list}
+that is executed, or false if any of the expressions is invalid.
+
+@end table
+
+The @code{break} and @code{continue} builtins (@pxref{Bourne Shell Builtins})
+may be used to control loop execution.
+
+@node Conditional Constructs
+@subsection Conditional Constructs
+@cindex commands, conditional
+
+@table @code
+@item if
+@rwindex if
+@rwindex then
+@rwindex else
+@rwindex elif
+@rwindex fi
+The syntax of the @code{if} command is:
+
+@example
+if @var{test-commands}; then
+  @var{consequent-commands};
+[elif @var{more-test-commands}; then
+  @var{more-consequents};]
+[else @var{alternate-consequents};]
+fi
+@end example
+
+The @var{test-commands} list is executed, and if its return status is zero,
+the @var{consequent-commands} list is executed.
+If @var{test-commands} returns a non-zero status, each @code{elif} list
+is executed in turn, and if its exit status is zero,
+the corresponding @var{more-consequents} is executed and the   
+command completes.
+If @samp{else @var{alternate-consequents}} is present, and
+the final command in the final @code{if} or @code{elif} clause
+has a non-zero exit status, then @var{alternate-consequents} is executed.
+The return status is the exit status of the last command executed, or
+zero if no condition tested true.
+
+@item case
+@rwindex case
+@rwindex in
+@rwindex esac
+The syntax of the @code{case} command is:
+
+@example
+@code{case @var{word} in [ [(] @var{pattern} [| @var{pattern}]@dots{}) @var{command-list} ;;]@dots{} esac}
+@end example
+
+@code{case} will selectively execute the @var{command-list} corresponding to
+the first @var{pattern} that matches @var{word}.
+The @samp{|} is used to separate multiple patterns, and the @samp{)}
+operator terminates a pattern list.
+A list of patterns and an associated command-list is known
+as a @var{clause}.  Each clause must be terminated with @samp{;;}.
+The @var{word} undergoes tilde expansion, parameter expansion, command
+substitution, arithmetic expansion, and quote removal before matching is
+attempted.  Each @var{pattern} undergoes tilde expansion, parameter
+expansion, command substitution, and arithmetic expansion.
+
+There may be an arbitrary number of @code{case} clauses, each terminated
+by a @samp{;;}.  The first pattern that matches determines the
+command-list that is executed.
+
+Here is an example using @code{case} in a script that could be used to
+describe one interesting feature of an animal:
+
+@example
+echo -n "Enter the name of an animal: "
+read ANIMAL
+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";;
+esac
+echo " legs."
+@end example
+
+@noindent
+The return status is zero if no @var{pattern} is matched.  Otherwise, the
+return status is the exit status of the @var{command-list} executed.
+
+@item select
+@rwindex select
+
+The @code{select} construct allows the easy generation of menus.
+It has almost the same syntax as the @code{for} command:
+
+@example
+select @var{name} [in @var{words} @dots{}]; do @var{commands}; done
+@end example
+
+The list of words following @code{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
+@samp{in @var{words}} is omitted, the positional parameters are printed,
+as if @samp{in "$@@"} had been specifed.
+The @env{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 @var{name} is set to that word.
+If the line is empty, the words and prompt are displayed again.
+If @code{EOF} is read, the @code{select} command completes.
+Any other value read causes @var{name} to be set to null.
+The line read is saved in the variable @env{REPLY}.
+
+The @var{commands} are executed after each selection until a
+@code{break} command is executed, at which
+point the @code{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.
+
+@example
+select fname in *;
+do
+       echo you picked $fname \($REPLY\)
+       break;
+done
+@end example
+
+@item ((@dots{}))
+@example
+(( @var{expression} ))
+@end example
+
+The arithmetic @var{expression} is evaluated according to the rules
+described below (@pxref{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
+@example
+let "@var{expression}"
+@end example
+@noindent
+@xref{Bash Builtins}, for a full description of the @code{let} builtin.
+
+@item [[@dots{}]]
+@rwindex [[
+@rwindex ]]
+@example
+[[ @var{expression} ]]
+@end example
+
+Return a status of 0 or 1 depending on the evaluation of
+the conditional expression @var{expression}.
+Expressions are composed of the primaries described below in
+@ref{Bash Conditional Expressions}.
+Word splitting and filename expansion are not performed on the words
+between the @samp{[[} and @samp{]]}; tilde expansion, parameter and
+variable expansion, arithmetic expansion, command substitution, process
+substitution, and quote removal are performed.
+Conditional operators such as @samp{-f} must be unquoted to be recognized
+as primaries.
+
+When the @samp{==} and @samp{!=} operators are used, the string to the
+right of the operator is considered a pattern and matched according
+to the rules described below in @ref{Pattern Matching}.
+The return value is 0 if the string matches or does not match
+the pattern, respectively, and 1 otherwise.
+Any part of the pattern may be quoted to force it to be matched as a
+string.
+
+Expressions may be combined using the following operators, listed
+in decreasing order of precedence:
+
+@table @code
+@item ( @var{expression} )
+Returns the value of @var{expression}.
+This may be used to override the normal precedence of operators.
+
+@item ! @var{expression}
+True if @var{expression} is false.
+
+@item @var{expression1} && @var{expression2}
+True if both @var{expression1} and @var{expression2} are true.
+
+@item @var{expression1} || @var{expression2}
+True if either @var{expression1} or @var{expression2} is true.
+@end table
+@noindent
+The @code{&&} and @code{||} operators do not evaluate @var{expression2} if the
+value of @var{expression1} is sufficient to determine the return
+value of the entire conditional expression.
+
+@end table
+
+@node Command Grouping
+@subsection Grouping Commands
+@cindex commands, grouping
+
+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.
+
+@table @code
+@item ()
+@example
+( @var{list} )
+@end example
+
+Placing a list of commands between parentheses causes a subshell
+to be created, and each of the commands in @var{list} to be executed
+in that subshell.  Since the @var{list} is executed in a subshell,
+variable assignments do not remain in effect after the subshell completes.
+
+@item @{@}
+@rwindex @{
+@rwindex @}
+@example
+@{ @var{list}; @}
+@end example
+
+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 @var{list} is required.
+@end table
+
+In addition to the creation of a subshell, there is a subtle difference
+between these two constructs due to historical reasons.  The braces
+are @code{reserved words}, so they must be separated from the @var{list}
+by @code{blank}s.  The parentheses are @code{operators}, and are
+recognized as separate tokens by the shell even if they are not separated
+from the @var{list} by whitespace.
+
+The exit status of both of these constructs is the exit status of
+@var{list}.
+
+@node Shell Functions
+@section Shell Functions
+@cindex shell function
+@cindex functions, shell
+
+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.
+
+Functions are declared using this syntax:
+@rwindex function
+@example
+[ @code{function} ] @var{name} () @{ @var{command-list}; @}
+@end example
+
+This defines a shell function named @var{name}.  The reserved
+word @code{function} is optional.
+If the @code{function} reserved
+word is supplied, the parentheses are optional.
+The @var{body} of the function is the @var{command-list} between @{ and @}.
+This list is executed whenever @var{name} is specified as the
+name of a command.  The exit status of a function is
+the exit status of the last command executed in the body.
+
+Note that for historical reasons, the curly braces that surround
+the body of the function must be separated from the body by
+@code{blank}s or newlines.
+This is because the braces are reserved words and are only recognized
+as such when they are separated by whitespace.
+Also, the @var{command-list} must be terminated by a semicolon,
+a @samp{&}, or a newline.
+
+When a function is executed, the arguments to the
+function become the positional parameters
+during its execution (@pxref{Positional Parameters}).
+The special parameter @samp{#} that expands to the number of
+positional parameters is updated to reflect the change.
+Positional parameter @code{0} is unchanged.
+The first element of the @env{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 the exception that the @env{DEBUG} trap
+below) is not inherited unless the function has been given the
+@code{trace} attribute using the @code{declare} builtin or
+the @code{-o functrace} option has been enabled with
+the @code{set} builtin,
+(in which case all functions inherit the @code{DEBUG} trap).
+@xref{Bourne Shell Builtins}, for the description of the
+@code{trap} builtin.
+
+If the builtin command @code{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 @code{RETURN} trap is executed
+before execution resumes.
+When a function completes, the values of the
+positional parameters and the special parameter @samp{#}
+are restored to the values they had prior to the function's
+execution.  If a numeric argument is given to @code{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 @code{return}.
+
+Variables local to the function may be declared with the
+@code{local} builtin.  These variables are visible only to
+the function and the commands it invokes.
+
+Function names and definitions may be listed with the
+@option{-f} option to the @code{declare} or @code{typeset}
+builtin commands (@pxref{Bash Builtins}).
+The @option{-F} option to @code{declare} or @code{typeset}
+will list the function names only
+(and optionally the source file and line number, if the @code{extdebug}
+shell option is enabled).
+Functions may be exported so that subshells
+automatically have them defined with the
+@option{-f} option to the @code{export} builtin
+(@pxref{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.  No limit is placed on the number of
+recursive  calls.
+
+@node Shell Parameters
+@section Shell Parameters
+@cindex parameters
+@cindex variable, shell
+@cindex shell variable
+
+@menu
+* Positional Parameters::      The shell's command-line arguments.
+* Special Parameters::         Parameters denoted by special characters.
+@end menu
+
+A @var{parameter} is an entity that stores values.
+It can be a @code{name}, a number, or one of the special characters
+listed below.
+A @var{variable} is a parameter denoted by a @code{name}.
+A variable has a @var{value} and zero or more @var{attributes}.
+Attributes are assigned using the @code{declare} builtin command
+(see the description of the @code{declare} builtin in @ref{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 @code{unset} builtin command.
+
+A variable may be assigned to by a statement of the form
+@example
+@var{name}=[@var{value}]
+@end example
+@noindent
+If @var{value}
+is not given, the variable is assigned the null string.  All
+@var{value}s undergo tilde expansion, parameter and variable expansion,
+command substitution, arithmetic expansion, and quote
+removal (detailed below).  If the variable has its @code{integer}
+attribute set, then @var{value} 
+is evaluated as an arithmetic expression even if the @code{$((@dots{}))}
+expansion is not used (@pxref{Arithmetic Expansion}).
+Word splitting is not performed, with the exception
+of @code{"$@@"} as explained below.
+Filename expansion is not performed.
+Assignment statements may also appear as arguments to the
+@code{declare}, @code{typeset}, @code{export}, @code{readonly},
+and @code{local} builtin commands.
+
+@node Positional Parameters
+@subsection Positional Parameters
+@cindex parameters, positional
+
+A @var{positional parameter} is a parameter denoted by one or more
+digits, other than the single digit @code{0}.  Positional parameters are
+assigned from the shell's arguments when it is invoked,
+and may be reassigned using the @code{set} builtin command.
+Positional parameter @code{N} may be referenced as @code{$@{N@}}, or
+as @code{$N} when @code{N} consists of a single digit.
+Positional parameters may not be assigned to with assignment statements.
+The @code{set} and @code{shift} builtins are used to set and
+unset them (@pxref{Shell Builtin Commands}).
+The positional parameters are
+temporarily replaced when a shell function is executed
+(@pxref{Shell Functions}).
+
+When a positional parameter consisting of more than a single
+digit is expanded, it must be enclosed in braces.
+
+@node Special Parameters
+@subsection Special Parameters
+@cindex parameters, special
+
+The shell treats several parameters specially.  These parameters may
+only be referenced; assignment to them is not allowed.
+
+@vtable @code
+
+@item *
+Expands to the positional parameters, starting from one.  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 @env{IFS}
+special variable.  That is, @code{"$*"} is equivalent
+to @code{"$1@var{c}$2@var{c}@dots{}"}, where @var{c}
+is the first character of the value of the @code{IFS}
+variable.
+If @env{IFS} is unset, the parameters are separated by spaces.
+If @env{IFS} is null, the parameters are joined without intervening
+separators.
+
+
+@item @@
+Expands to the positional parameters, starting from one.  When the
+expansion occurs within double quotes, each parameter expands to a
+separate word.  That is, @code{"$@@"} is equivalent to
+@code{"$1" "$2" @dots{}}.
+When there are no positional parameters, @code{"$@@"} and
+@code{$@@}
+expand to nothing (i.e., they are removed).
+
+@item #
+Expands to the number of positional parameters in decimal.
+
+@item ?
+Expands to the exit status of the most recently executed foreground
+pipeline.
+
+@item -
+(A hyphen.)  Expands to the current option flags as specified upon
+invocation, by the @code{set}
+builtin command, or those set by the shell itself
+(such as the @option{-i} option).
+
+@item $
+Expands to the process @sc{id} of the shell.  In a @code{()} subshell, it
+expands to the process @sc{id} of the invoking shell, not the subshell.
+
+@item !
+Expands to the process @sc{id} of the most recently executed background
+(asynchronous) command.
+
+@item 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
+(@pxref{Shell Scripts}), @code{$0} is set to the name of that file.
+If Bash is started with the @option{-c} option (@pxref{Invoking Bash}),
+then @code{$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.
+
+@item _
+(An underscore.)
+At shell startup, set to the absolute filename of the shell or shell
+script being executed as passed in the argument list.
+Subsequently, expands to the last argument to the previous command,
+after expansion.   
+Also set to the full pathname of each command executed and placed in
+the environment exported to that command.
+When checking mail, this parameter holds the name of the mail file.
+@end vtable
+
+@node Shell Expansions
+@section Shell Expansions
+@cindex expansion
+
+Expansion is performed on the command line after it has been split into
+@code{token}s.  There are seven kinds of expansion performed:
+@itemize @bullet
+@item brace expansion
+@item tilde expansion
+@item parameter and variable expansion
+@item command substitution
+@item arithmetic expansion
+@item word splitting
+@item filename expansion
+@end itemize
+
+@menu
+* Brace Expansion::            Expansion of expressions within braces.
+* Tilde Expansion::            Expansion of the ~ character.
+* Shell Parameter Expansion::  How Bash expands variables to their values.
+* Command Substitution::       Using the output of a command as an argument.
+* Arithmetic Expansion::       How to use arithmetic in shell expansions.
+* Process Substitution::       A way to write and read to and from a
+                               command.
+* Word Splitting::     How the results of expansion are split into separate
+                       arguments.
+* Filename Expansion:: A shorthand for specifying filenames matching patterns.
+* Quote Removal::      How and when quote characters are removed from
+                       words.
+@end menu
+
+The order of expansions is: brace expansion, tilde expansion,
+parameter, variable, and 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: @var{process substitution}.  This is performed at the
+same time as parameter, variable, and arithmetic expansion and
+command 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
+@code{"$@@"} (@pxref{Special Parameters}) and @code{"$@{@var{name}[@@]@}"}
+(@pxref{Arrays}).
+
+After all expansions, @code{quote removal} (@pxref{Quote Removal})
+is performed.
+
+@node Brace Expansion
+@subsection Brace Expansion
+@cindex brace expansion
+@cindex expansion, brace
+
+Brace expansion is a mechanism by which arbitrary strings may be generated.
+This mechanism is similar to
+@var{filename expansion} (@pxref{Filename Expansion}),
+but the file names generated need not exist.
+Patterns to be brace expanded take the form of an optional @var{preamble},
+followed by either a series of comma-separated strings or a sequnce expression
+between a pair of braces,
+followed by an optional @var{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.
+The results of each expanded string are not sorted; left to right order
+is preserved.
+For example,
+@example
+bash$ echo a@{d,c,b@}e
+ade ace abe
+@end example
+
+A sequence expression takes the form @code{@{@var{x}..@var{y}@}},
+where @var{x} and @var{y} are either integers or single characters.
+When integers are supplied, the expression expands to each number between
+@var{x} and @var{y}, inclusive.
+When characters are supplied, the expression expands to each character
+lexicographically between @var{x} and @var{y}, inclusive.  Note that
+both @var{x} and @var{y} must be of the same type.
+
+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 @samp{$@{}
+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 @samp{,} may be quoted with a backslash to prevent its
+being considered part of a brace expression.
+To avoid conflicts with parameter expansion, the string @samp{$@{}
+is not considered eligible for brace expansion.
+
+This construct is typically used as shorthand when the common
+prefix of the strings to be generated is longer than in the
+above example:
+@example
+mkdir /usr/local/src/bash/@{old,new,dist,bugs@}
+@end example
+or
+@example
+chown root /usr/@{ucb/@{ex,edit@},lib/@{ex?.?*,how_ex@}@}
+@end example
+
+@node Tilde Expansion
+@subsection Tilde Expansion
+@cindex tilde expansion
+@cindex expansion, tilde
+
+If a word begins with an unquoted tilde character (@samp{~}), all of the
+characters up to the first unquoted slash (or all characters,
+if there is no unquoted slash) are considered a @var{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 @var{login name}.
+If this login name is the null string, the tilde is replaced with the
+value of the @env{HOME} shell variable.
+If @env{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 @samp{~+}, the value of
+the shell variable @env{PWD} replaces the tilde-prefix.
+If the tilde-prefix is @samp{~-}, the value of the shell variable
+@env{OLDPWD}, if it is set, is substituted.
+
+If the characters following the tilde in the tilde-prefix consist of a
+number @var{N}, optionally prefixed by a @samp{+} or a @samp{-},
+the tilde-prefix is replaced with the
+corresponding element from the directory stack, as it would be displayed
+by the @code{dirs} builtin invoked with the characters following tilde
+in the tilde-prefix as an argument (@pxref{The Directory Stack}).
+If the tilde-prefix, sans the tilde, consists of a number without a
+leading @samp{+} or @samp{-}, @samp{+} 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 @samp{:} or @samp{=}.
+In these cases, tilde expansion is also performed.
+Consequently, one may use file names with tildes in assignments to
+@env{PATH}, @env{MAILPATH}, and @env{CDPATH},
+and the shell assigns the expanded value.
+
+The following table shows how Bash treats unquoted tilde-prefixes:
+
+@table @code
+@item ~
+The value of @code{$HOME}
+@item ~/foo
+@file{$HOME/foo}
+
+@item ~fred/foo
+The subdirectory @code{foo} of the home directory of the user
+@code{fred}
+
+@item ~+/foo
+@file{$PWD/foo}
+
+@item ~-/foo
+@file{$@{OLDPWD-'~-'@}/foo}
+
+@item ~@var{N}
+The string that would be displayed by @samp{dirs +@var{N}}
+
+@item ~+@var{N}
+The string that would be displayed by @samp{dirs +@var{N}}
+
+@item ~-@var{N}
+The string that would be displayed by @samp{dirs -@var{N}}
+
+@end table
+
+@node Shell Parameter Expansion
+@subsection Shell Parameter Expansion
+@cindex parameter expansion
+@cindex expansion, parameter
+
+The @samp{$} 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 @samp{@}}
+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 $@{@var{parameter}@}.
+The value of @var{parameter} is substituted.  The braces are required
+when @var{parameter}
+is a positional parameter with more than one digit,
+or when @var{parameter}
+is followed by a character that is not to be
+interpreted as part of its name.
+
+If the first character of @var{parameter} is an exclamation point,
+a level of variable indirection is introduced.
+Bash uses the value of the variable formed from the rest of
+@var{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 @var{parameter} itself.
+This is known as @code{indirect expansion}.
+The exceptions to this are the expansions of $@{!@var{prefix*}@}
+and $@{!@var{name}[@@]@}
+described below.
+The exclamation point must immediately follow the left brace in order to
+introduce indirection.
+
+In each of the cases below, @var{word} is subject to tilde expansion,
+parameter expansion, command substitution, and arithmetic expansion.
+
+When not performing substring expansion, 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 existence and that the value is not null;
+if the colon is omitted, the operator tests only for existence.
+
+@table @code
+
+@item $@{@var{parameter}:@minus{}@var{word}@}
+If @var{parameter} is unset or null, the expansion of
+@var{word} is substituted.  Otherwise, the value of
+@var{parameter} is substituted.
+
+@item $@{@var{parameter}:=@var{word}@}
+If @var{parameter}
+is unset or null, the expansion of @var{word}
+is assigned to @var{parameter}.
+The value of @var{parameter}
+is then substituted.  Positional parameters and special parameters may
+not be assigned to in this way.
+
+@item $@{@var{parameter}:?@var{word}@}
+If @var{parameter}
+is null or unset, the expansion of @var{word} (or a message
+to that effect if @var{word}
+is not present) is written to the standard error and the shell, if it
+is not interactive, exits.  Otherwise, the value of @var{parameter} is
+substituted.
+
+@item $@{@var{parameter}:+@var{word}@}
+If @var{parameter}
+is null or unset, nothing is substituted, otherwise the expansion of
+@var{word} is substituted.
+
+@item $@{@var{parameter}:@var{offset}@}
+@itemx $@{@var{parameter}:@var{offset}:@var{length}@}
+Expands to up to @var{length} characters of @var{parameter}
+starting at the character specified by @var{offset}.
+If @var{length} is omitted, expands to the substring of
+@var{parameter} starting at the character specified by @var{offset}.
+@var{length} and @var{offset} are arithmetic expressions
+(@pxref{Shell Arithmetic}).
+This is referred to as Substring Expansion.
+
+@var{length} must evaluate to a number greater than or equal to zero.
+If @var{offset} evaluates to a number less than zero, the value
+is used as an offset from the end of the value of @var{parameter}.
+If @var{parameter} is @samp{@@}, the result is @var{length} positional
+parameters beginning at @var{offset}.
+If @var{parameter} is an array name indexed by @samp{@@} or @samp{*},
+the result is the @var{length}
+members of the array beginning with @code{$@{@var{parameter}[@var{offset}]@}}.
+Substring indexing is zero-based unless the positional parameters
+are used, in which case the indexing starts at 1.
+
+@item $@{!@var{prefix}*@}
+@itemx $@{!@var{prefix}@@@}
+Expands to the names of variables whose names begin with @var{prefix},
+separated by the first character of the @env{IFS} special variable.
+
+@item $@{!@var{name}[@@]@}
+@itemx $@{!@var{name}[*]@}
+If @var{name} is an array variable, expands to the list of array indices
+(keys) assigned in @var{name}.
+If @var{name} is not an array, expands to 0 if @var{name} is set and null
+otherwise.
+When @samp{@@} is used and the expansion appears within double quotes, each
+key expands to a separate word.
+
+@item $@{#@var{parameter}@}
+The length in characters of the expanded value of @var{parameter} is
+substituted.
+If @var{parameter} is @samp{*} or @samp{@@}, the value substituted
+is the number of positional parameters.
+If @var{parameter} is an array name subscripted by @samp{*} or @samp{@@}, 
+the value substituted is the number of elements in the array.
+
+@item $@{@var{parameter}#@var{word}@}
+@itemx $@{@var{parameter}##@var{word}@}
+The @var{word}
+is expanded to produce a pattern just as in filename
+expansion (@pxref{Filename Expansion}).  If the pattern matches
+the beginning of the expanded value of @var{parameter},
+then the result of the expansion is the expanded value of @var{parameter}
+with the shortest matching pattern (the @samp{#} case) or the
+longest matching pattern (the @samp{##} case) deleted.
+If @var{parameter} is @samp{@@} or @samp{*},
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If @var{parameter} is an array variable subscripted with
+@samp{@@} or @samp{*},
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+
+@item $@{@var{parameter}%@var{word}@}
+@itemx $@{@var{parameter}%%@var{word}@}
+The @var{word} is expanded to produce a pattern just as in
+filename expansion.
+If the pattern matches a trailing portion of the expanded value of
+@var{parameter}, then the result of the expansion is the value of
+@var{parameter} with the shortest matching pattern (the @samp{%} case)
+or the longest matching pattern (the @samp{%%} case) deleted.
+If @var{parameter} is @samp{@@} or @samp{*},
+the pattern removal operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If @var{parameter}
+is an array variable subscripted with @samp{@@} or @samp{*},
+the pattern removal operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+
+@item $@{@var{parameter}/@var{pattern}/@var{string}@} 
+@itemx $@{@var{parameter}//@var{pattern}/@var{string}@}
+
+The @var{pattern} is expanded to produce a pattern just as in
+filename expansion.
+@var{Parameter} is expanded and the longest match of @var{pattern}
+against its value is replaced with @var{string}.
+In the first form, only the first match is replaced.
+The second form causes all matches of @var{pattern} to be
+replaced with @var{string}.
+If @var{pattern} begins with @samp{#}, it must match at the beginning
+of the expanded value of @var{parameter}.
+If @var{pattern} begins with @samp{%}, it must match at the end
+of the expanded value of @var{parameter}.
+If @var{string} is null, matches of @var{pattern} are deleted
+and the @code{/} following @var{pattern} may be omitted.
+If @var{parameter} is @samp{@@} or @samp{*},
+the substitution operation is applied to each positional
+parameter in turn, and the expansion is the resultant list.
+If @var{parameter}
+is an array variable subscripted with @samp{@@} or @samp{*},
+the substitution operation is applied to each member of the
+array in turn, and the expansion is the resultant list.
+
+@end table
+
+@node Command Substitution
+@subsection Command Substitution
+@cindex command substitution
+
+Command substitution allows the output of a command to replace
+the command itself.
+Command substitution occurs when a command is enclosed as follows:
+@example
+$(@var{command})
+@end example
+@noindent
+or
+@example
+`@var{command}`
+@end example
+
+@noindent
+Bash performs the expansion by executing @var{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 @code{$(cat @var{file})} can be
+replaced by the equivalent but faster @code{$(< @var{file})}.
+
+When the old-style backquote form of substitution is used,
+backslash retains its literal meaning except when followed by
+@samp{$}, @samp{`}, or @samp{\}. 
+The first backquote not preceded by a backslash terminates the
+command substitution.
+When using the @code{$(@var{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
+form, escape the inner backquotes with backslashes.
+
+If the substitution appears within double quotes, word splitting and
+filename expansion are not performed on the results.
+
+@node Arithmetic Expansion
+@subsection Arithmetic Expansion
+@cindex expansion, arithmetic
+@cindex arithmetic expansion
+
+Arithmetic expansion allows the evaluation of an arithmetic expression
+and the substitution of the result.  The format for arithmetic expansion is:
+
+@example
+$(( @var{expression} ))
+@end example
+
+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 expansion, command
+substitution, and quote removal.
+Arithmetic expansions may be nested. 
+
+The evaluation is performed according to the rules listed below
+(@pxref{Shell Arithmetic}).
+If the expression is invalid, Bash prints a message indicating
+failure to the standard error and no substitution occurs.
+
+@node Process Substitution
+@subsection Process Substitution
+@cindex process substitution
+
+Process substitution is supported on systems that support named
+pipes (@sc{fifo}s) or the @file{/dev/fd} method of naming open files.
+It takes the form of 
+@example
+<(@var{list})
+@end example
+@noindent
+or
+@example
+>(@var{list})
+@end example
+@noindent
+The process @var{list} is run with its input or output connected to a
+@sc{fifo} or some file in @file{/dev/fd}.  The name of this file is
+passed as an argument to the current command as the result of the
+expansion.  If the @code{>(@var{list})} form is used, writing to
+the file will provide input for @var{list}.  If the
+@code{<(@var{list})} form is used, the file passed as an
+argument should be read to obtain the output of @var{list}.
+Note that no space may appear between the @code{<} or @code{>}
+and the left parenthesis, otherwise the construct would be interpreted
+as a redirection.
+
+When available, process substitution is performed simultaneously with
+parameter and variable expansion, command substitution, and arithmetic
+expansion.
+
+@node Word Splitting
+@subsection Word Splitting
+@cindex word splitting
+
+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 @env{$IFS}
+as a delimiter, and splits the results of the other
+expansions into words on these characters.  If
+@env{IFS} is unset, or its value is exactly @code{<space><tab><newline>},
+the default, then any sequence of @env{IFS}
+characters serves to delimit words.  If @env{IFS}
+has a value other than the default, then sequences of
+the whitespace characters @code{space} and @code{tab}
+are ignored at the beginning and end of the
+word, as long as the whitespace character is in the
+value of @env{IFS} (an @env{IFS} whitespace character).
+Any character in @env{IFS} that is not @env{IFS}
+whitespace, along with any adjacent @env{IFS}
+whitespace characters, delimits a field.  A sequence of @env{IFS}
+whitespace characters is also treated as a delimiter.
+If the value of @env{IFS} is null, no word splitting occurs.
+
+Explicit null arguments (@code{""} or @code{''}) 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.
+
+@node Filename Expansion
+@subsection Filename Expansion
+@menu
+* Pattern Matching::   How the shell matches patterns.
+@end menu
+@cindex expansion, filename
+@cindex expansion, pathname
+@cindex filename expansion
+@cindex pathname expansion
+
+After word splitting, unless the @option{-f} option has been set
+(@pxref{The Set Builtin}), Bash scans each word for the characters
+@samp{*}, @samp{?}, and @samp{[}.
+If one of these characters appears, then the word is
+regarded as a @var{pattern},
+and replaced with an alphabetically sorted list of
+file names matching the pattern. If no matching file names are found,
+and the shell option @code{nullglob} is disabled, the word is left
+unchanged.
+If the @code{nullglob} option is set, and no matches are found, the word
+is removed.
+If the shell option @code{nocaseglob} is enabled, the match is performed
+without regard to the case of alphabetic characters.
+
+When a pattern is used for filename generation, the character @samp{.}
+at the start of a filename or immediately following a slash
+must be matched explicitly, unless the shell option @code{dotglob} is set.
+When matching a file name, the slash character must always be
+matched explicitly.
+In other cases, the @samp{.} character is not treated specially.
+
+See the description of @code{shopt} in @ref{Bash Builtins},
+for a description of the @code{nocaseglob}, @code{nullglob},
+and @code{dotglob} options.
+
+The @env{GLOBIGNORE}
+shell variable may be used to restrict the set of filenames matching a
+pattern.  If @env{GLOBIGNORE}
+is set, each matching filename that also matches one of the patterns in
+@env{GLOBIGNORE} is removed from the list of matches.  The filenames
+@file{.} and @file{..}
+are always ignored when @env{GLOBIGNORE}
+is set and not null.
+However, setting @env{GLOBIGNORE} to a non-null value has the effect of
+enabling the @code{dotglob}
+shell option, so all other filenames beginning with a
+@samp{.} will match.
+To get the old behavior of ignoring filenames beginning with a
+@samp{.}, make @samp{.*} one of the patterns in @env{GLOBIGNORE}.
+The @code{dotglob} option is disabled when @env{GLOBIGNORE}
+is unset.
+
+@node Pattern Matching
+@subsubsection Pattern Matching
+@cindex pattern matching
+@cindex matching, pattern
+
+Any character that appears in a pattern, other than the special pattern
+characters described below, matches itself.
+The @sc{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:
+@table @code
+@item *
+Matches any string, including the null string.
+@item ?
+Matches any single character.
+@item [@dots{}]
+Matches any one of the enclosed characters.  A pair of characters
+separated by a hyphen denotes a @var{range expression};
+any character that sorts between those two characters, inclusive,
+using the current locale's collating sequence and character set,
+is matched.  If the first character following the
+@samp{[} is a @samp{!}  or a @samp{^}
+then any character not enclosed is matched.  A @samp{@minus{}}
+may be matched by including it as the first or last character
+in the set.  A @samp{]} 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 value of the @env{LC_COLLATE} shell variable,
+if set.
+
+For example, in the default C locale, @samp{[a-dx-z]} is equivalent to
+@samp{[abcdxyz]}.  Many locales sort characters in dictionary order, and in
+these locales @samp{[a-dx-z]} is typically not equivalent to @samp{[abcdxyz]};
+it might be equivalent to @samp{[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 @env{LC_COLLATE} or
+@env{LC_ALL} environment variable to the value @samp{C}.
+
+Within @samp{[} and @samp{]}, @var{character classes} can be specified
+using the syntax
+@code{[:}@var{class}@code{:]}, where @var{class} is one of the
+following classes defined in the @sc{posix} 1003.2 standard:
+@example
+alnum   alpha   ascii   blank   cntrl   digit   graph   lower
+print   punct   space   upper   word    xdigit
+@end example
+@noindent
+A character class matches any character belonging to that class.
+The @code{word} character class matches letters, digits, and the character
+@samp{_}.
+
+Within @samp{[} and @samp{]}, an @var{equivalence class} can be
+specified using the syntax @code{[=}@var{c}@code{=]}, which
+matches all characters with the same collation weight (as defined
+by the current locale) as the character @var{c}.
+
+Within @samp{[} and @samp{]}, the syntax @code{[.}@var{symbol}@code{.]}
+matches the collating symbol @var{symbol}.
+@end table
+
+If the @code{extglob} shell option is enabled using the @code{shopt}
+builtin, several extended pattern matching operators are recognized.
+In the following description, a @var{pattern-list} is a list of one
+or more patterns separated by a @samp{|}.
+Composite patterns may be formed using one or more of the following
+sub-patterns:
+
+@table @code
+@item ?(@var{pattern-list})
+Matches zero or one occurrence of the given patterns.
+
+@item *(@var{pattern-list})
+Matches zero or more occurrences of the given patterns.
+
+@item +(@var{pattern-list})
+Matches one or more occurrences of the given patterns.
+
+@item @@(@var{pattern-list})
+Matches exactly one of the given patterns.
+
+@item !(@var{pattern-list})
+Matches anything except one of the given patterns.
+@end table
+
+@node Quote Removal
+@subsection Quote Removal
+
+After the preceding expansions, all unquoted occurrences of the
+characters @samp{\}, @samp{'}, and @samp{"} that did not
+result from one of the above expansions are removed.
+
+@node Redirections
+@section Redirections
+@cindex redirection
+
+Before a command is executed, its input and output
+may be @var{redirected}
+using a special notation interpreted by the shell.
+Redirection may also be used to open and close files for the
+current shell execution environment.  The following redirection
+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.
+
+In the following descriptions, if the file descriptor number is
+omitted, and the first character of the redirection operator is
+@samp{<}, the redirection refers to the standard input (file
+descriptor 0).  If the first character of the redirection operator
+is @samp{>}, 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.
+
+Note that the order of redirections is significant.  For example,
+the command
+@example
+ls > @var{dirlist} 2>&1
+@end example
+@noindent
+directs both standard output (file descriptor 1) and standard error
+(file descriptor 2) to the file @var{dirlist}, while the command
+@example
+ls 2>&1 > @var{dirlist}
+@end example
+@noindent
+directs only the standard output to file @var{dirlist},
+because the standard error was duplicated as standard output
+before the standard output was redirected to @var{dirlist}.
+
+Bash handles several filenames specially when they are used in
+redirections, as described in the following table:
+
+@table @code
+@item /dev/fd/@var{fd}
+If @var{fd} is a valid integer, file descriptor @var{fd} is duplicated.
+
+@item /dev/stdin
+File descriptor 0 is duplicated.
+
+@item /dev/stdout
+File descriptor 1 is duplicated.
+
+@item /dev/stderr
+File descriptor 2 is duplicated.
+
+@item /dev/tcp/@var{host}/@var{port}
+If @var{host} is a valid hostname or Internet address, and @var{port}
+is an integer port number or service name, Bash attempts to open a TCP
+connection to the corresponding socket.
+
+@item /dev/udp/@var{host}/@var{port}
+If @var{host} is a valid hostname or Internet address, and @var{port}
+is an integer port number or service name, Bash attempts to open a UDP
+connection to the corresponding socket.
+
+@end table
+
+A failure to open or create a file causes the redirection to fail.
+
+@subsection Redirecting Input
+Redirection of input causes the file whose name results from
+the expansion of @var{word}
+to be opened for reading on file descriptor @code{n},
+or the standard input (file descriptor 0) if @code{n}
+is not specified.
+
+The general format for redirecting input is:
+@example
+[@var{n}]<@var{word}
+@end example
+
+@subsection Redirecting Output
+Redirection of output causes the file whose name results from
+the expansion of @var{word}
+to be opened for writing on file descriptor @var{n},
+or the standard output (file descriptor 1) if @var{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:
+@example
+[@var{n}]>[|]@var{word}
+@end example
+
+If the redirection operator is @samp{>}, and the @code{noclobber}
+option to the @code{set} builtin has been enabled, the redirection
+will fail if the file whose name results from the expansion of
+@var{word} exists and is a regular file.
+If the redirection operator is @samp{>|}, or the redirection operator is
+@samp{>} and the @code{noclobber} option is not enabled, the redirection
+is attempted even if the file named by @var{word} exists.
+
+@subsection Appending Redirected Output
+Redirection of output in this fashion
+causes the file whose name results from
+the expansion of @var{word}
+to be opened for appending on file descriptor @var{n},
+or the standard output (file descriptor 1) if @var{n}
+is not specified.  If the file does not exist it is created.
+
+The general format for appending output is:
+@example
+[@var{n}]>>@var{word}
+@end example
+
+@subsection Redirecting Standard Output and Standard Error
+Bash 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 @var{word} with this construct.
+
+There are two formats for redirecting standard output and
+standard error:
+@example
+&>@var{word}
+@end example
+@noindent
+and
+@example
+>&@var{word}
+@end example
+@noindent
+Of the two forms, the first is preferred.
+This is semantically equivalent to
+@example
+>@var{word} 2>&1
+@end example
+
+@subsection Here Documents
+This type of redirection instructs the shell to read input from the
+current source until a line containing only @var{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.
+
+The format of here-documents is:
+@example
+<<[@minus{}]@var{word}
+        @var{here-document}
+@var{delimiter}
+@end example
+
+No parameter expansion, command substitution, arithmetic expansion,
+or filename expansion is performed on
+@var{word}.  If any characters in @var{word} are quoted, the
+@var{delimiter} is the result of quote removal on @var{word},
+and the lines in the here-document are not expanded.
+If @var{word} is unquoted,
+all lines of the here-document are subjected to parameter expansion,
+command substitution, and arithmetic expansion.  In the latter
+case, the character sequence @code{\newline} is ignored, and @samp{\}
+must be used to quote the characters
+@samp{\}, @samp{$}, and @samp{`}.
+
+If the redirection operator is @samp{<<-},
+then all leading tab characters are stripped from input lines and the
+line containing @var{delimiter}.
+This allows here-documents within shell scripts to be indented in a
+natural fashion.
+
+@subsection Here Strings
+A variant of here documents, the format is:
+@example
+<<< @var{word}
+@end example
+
+The @var{word} is expanded and supplied to the command on its standard
+input.
+
+@subsection Duplicating File Descriptors
+The redirection operator
+@example
+[@var{n}]<&@var{word}
+@end example
+@noindent
+is used to duplicate input file descriptors.
+If @var{word}
+expands to one or more digits, the file descriptor denoted by @var{n}
+is made to be a copy of that file descriptor.
+If the digits in @var{word} do not specify a file descriptor open for
+input, a redirection error occurs.
+If @var{word}
+evaluates to @samp{-}, file descriptor @var{n} is closed.  If
+@var{n} is not specified, the standard input (file descriptor 0) is used.
+
+The operator
+@example
+[@var{n}]>&@var{word}
+@end example
+@noindent
+is used similarly to duplicate output file descriptors.  If
+@var{n} is not specified, the standard output (file descriptor 1) is used.
+If the digits in @var{word} do not specify a file descriptor open for
+output, a redirection error occurs.
+As a special case, if @var{n} is omitted, and @var{word} does not
+expand to one or more digits, the standard output and standard
+error are redirected as described previously.
+
+@subsection Moving File Descriptors
+The redirection operator
+@example
+[@var{n}]<&@var{digit}-
+@end example
+@noindent
+moves the file descriptor @var{digit} to file descriptor @var{n},
+or the standard input (file descriptor 0) if @var{n} is not specified.
+@var{digit} is closed after being duplicated to @var{n}.
+
+Similarly, the redirection operator
+@example
+[@var{n}]>&@var{digit}-
+@end example
+@noindent
+moves the file descriptor @var{digit} to file descriptor @var{n},
+or the standard output (file descriptor 1) if @var{n} is not specified.
+
+@subsection Opening File Descriptors for Reading and Writing
+The redirection operator
+@example
+[@var{n}]<>@var{word}
+@end example
+@noindent
+causes the file whose name is the expansion of @var{word}
+to be opened for both reading and writing on file descriptor
+@var{n}, or on file descriptor 0 if @var{n}
+is not specified.  If the file does not exist, it is created.
+
+@node Executing Commands
+@section Executing Commands
+
+@menu
+* Simple Command Expansion::   How Bash expands simple commands before
+                               executing them.
+
+* Command Search and Execution::       How Bash finds commands and runs them.
+
+* Command Execution Environment::      The environment in which Bash
+                                       executes commands that are not
+                                       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.
+
+@end menu
+
+@node Simple Command Expansion
+@subsection Simple Command Expansion
+@cindex command expansion
+
+When a simple command is executed, the shell performs the following
+expansions, assignments, and redirections, from left to right.
+
+@enumerate
+@item
+The words that the parser has marked as variable assignments (those
+preceding the command name) and redirections are saved for later
+processing.
+
+@item
+The words that are not variable assignments or redirections are
+expanded (@pxref{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.
+
+@item
+Redirections are performed as described above (@pxref{Redirections}).
+
+@item
+The text after the @samp{=} in each variable assignment undergoes tilde
+expansion, parameter expansion, command substitution, arithmetic expansion,
+and quote removal before being assigned to the variable.
+@end enumerate
+
+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
+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 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.
+
+@node Command Search and Execution
+@subsection Command Search and Execution
+@cindex command execution
+@cindex command search
+
+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.
+
+@enumerate
+@item
+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 @ref{Shell Functions}.
+
+@item
+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.
+
+@item
+If the name is neither a shell function nor a builtin,
+and contains no slashes, Bash searches each element of
+@env{$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 @env{PATH} searches
+(see the description of @code{hash} in @ref{Bourne Shell Builtins}).
+A full search of the directories in @env{$PATH}
+is performed only if the command is not found in the hash table.
+If the search is unsuccessful, the shell prints an error
+message and returns an exit status of 127.
+
+@item
+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.
+
+@item
+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
+@var{shell script} and the shell executes it as described in
+@ref{Shell Scripts}.
+
+@item
+If the command was not begun asynchronously, the shell waits for
+the command to complete and collects its exit status.
+
+@end enumerate
+
+@node Command Execution Environment
+@subsection Command Execution Environment
+@cindex execution environment
+
+The shell has an @var{execution environment}, which consists of the
+following:
+
+@itemize @bullet
+@item
+open files inherited by the shell at invocation, as modified by
+redirections supplied to the @code{exec} builtin
+
+@item
+the current working directory as set by @code{cd}, @code{pushd}, or
+@code{popd}, or inherited by the shell at invocation
+
+@item
+the file creation mode mask as set by @code{umask} or inherited from
+the shell's parent
+
+@item
+current traps set by @code{trap}
+
+@item
+shell parameters that are set by variable assignment or with @code{set}
+or inherited from the shell's parent in the environment
+
+@item
+shell functions defined during execution or inherited from the shell's
+parent in the environment
+
+@item
+options enabled at invocation (either by default or with command-line
+arguments) or by @code{set}
+
+@item
+options enabled by @code{shopt}
+
+@item
+shell aliases defined with @code{alias} (@pxref{Aliases})
+
+@item
+various process @sc{id}s, including those of background jobs
+(@pxref{Lists}), the value of @code{$$}, and the value of
+@env{$PPID}
+
+@end itemize
+
+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.
+
+@itemize @bullet
+@item
+the shell's open files, plus any modifications and additions specified
+by redirections to the command
+
+@item
+the current working directory
+
+@item
+the file creation mode mask
+
+@item
+shell variables and functions marked for export, along with variables
+exported for the command, passed in the environment (@pxref{Environment})
+
+@item
+traps caught by the shell are reset to the values inherited from the
+shell's parent, and traps ignored by the shell are ignored
+
+@end itemize
+
+A command invoked in this separate environment cannot affect the
+shell's execution environment. 
+
+Command substitution 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.
+
+If a command is followed by a @samp{&} and job control is not active, the
+default standard input for the command is the empty file @file{/dev/null}.
+Otherwise, the invoked command inherits the file descriptors of the calling
+shell as modified by redirections.
+
+@node Environment
+@subsection Environment
+@cindex environment
+
+When a program is invoked it is given an array of strings
+called the @var{environment}.
+This is a list of name-value pairs, of the form @code{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 @var{export}
+to child processes.  Executed commands inherit the environment.
+The @code{export} and @samp{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 @code{unset} and @samp{export -n}
+commands, plus any additions via the @code{export} and
+@samp{declare -x} commands.
+
+The environment for any simple command
+or function may be augmented temporarily by prefixing it with
+parameter assignments, as described in @ref{Shell Parameters}.
+These assignment statements affect only the environment seen
+by that command.
+
+If the @option{-k} option is set (@pxref{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 @samp{$_}
+is set to the full path name of the command and passed to that
+command in its environment.
+
+@node Exit Status
+@subsection Exit Status
+@cindex exit status
+
+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 @var{N},
+Bash uses the value 128+@var{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,
+the exit status is greater than zero.
+
+The exit status is used by the Bash conditional commands
+(@pxref{Conditional Constructs}) and some of the list
+constructs (@pxref{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.
+
+@node Signals
+@subsection Signals
+@cindex signal handling
+
+When Bash is interactive, in the absence of any traps, it ignores
+@code{SIGTERM} (so that @samp{kill 0} does not kill an interactive shell),
+and @code{SIGINT}
+is caught and handled (so that the @code{wait} builtin is interruptible).
+When Bash receives a @code{SIGINT}, it breaks out of any executing loops.
+In all cases, Bash ignores @code{SIGQUIT}.
+If job control is in effect (@pxref{Job Control}), Bash
+ignores @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}.
+
+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 @code{SIGINT} and @code{SIGQUIT} as well.
+Commands run as a result of
+command substitution ignore the keyboard-generated job control signals
+@code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}.
+
+The shell exits by default upon receipt of a @code{SIGHUP}.
+Before exiting, an interactive shell resends the @code{SIGHUP} to
+all jobs, running or stopped.
+Stopped jobs are sent @code{SIGCONT} to ensure that they receive
+the @code{SIGHUP}.
+To prevent the shell from sending the @code{SIGHUP} signal to a
+particular job, it should be removed
+from the jobs table with the @code{disown}
+builtin (@pxref{Job Control Builtins}) or marked
+to not receive @code{SIGHUP} using @code{disown -h}.
+
+If the  @code{huponexit} shell option has been set with @code{shopt}
+(@pxref{Bash Builtins}), Bash sends a @code{SIGHUP} to all jobs when
+an interactive login shell exits.
+
+When Bash receives a signal for which a trap has been set while waiting
+for a command to complete, the trap will not be executed until the
+command completes. 
+When Bash is waiting for an asynchronous
+command via the @code{wait} builtin, the reception of a signal for
+which a trap has been set will cause the @code{wait} builtin to return
+immediately with an exit status greater than 128, immediately after
+which the trap is executed.
+
+@node Shell Scripts
+@section Shell Scripts
+@cindex shell script
+
+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 @option{-c} nor @option{-s} option is supplied
+(@pxref{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 @env{$PATH} if not found there.
+
+When Bash runs
+a shell script, it sets the special parameter @code{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 @code{chmod} command
+to turn on the execute bit.  When Bash finds such a file while
+searching the @env{$PATH} for a command, it spawns a subshell to
+execute it.  In other words, executing
+@example
+filename @var{arguments}
+@end example
+@noindent
+is equivalent to executing
+@example
+bash filename @var{arguments}
+@end example
+
+@noindent
+if @code{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 @code{hash} in @ref{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 @samp{#!}, the remainder of the line specifies
+an interpreter for the program.
+Thus, you can specify Bash, @code{awk}, Perl, or some other
+interpreter and write the rest of the script file in that language.
+
+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 @code{#! /bin/bash} (assuming that
+Bash has been installed in @file{/bin}), since this ensures that
+Bash will be used to interpret the script, even if it is executed
+under another shell.
+
+@node Shell Builtin Commands
+@chapter Shell Builtin Commands
+
+@menu
+* Bourne Shell Builtins::      Builtin commands inherited from the Bourne
+                               Shell.
+* Bash Builtins::              Table of builtins specific to Bash.
+* The Set Builtin::            This builtin is so overloaded it
+                               deserves its own section.
+* Special Builtins::           Builtin commands classified specially by
+                               POSIX.2.
+@end menu
+
+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 (@pxref{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 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
+commands which provide the Bash interface to the job control
+facilities (@pxref{Job Control Builtins}), the directory stack
+(@pxref{Directory Stack Builtins}), the command history
+(@pxref{Bash History Builtins}), and the programmable completion
+facilities (@pxref{Programmable Completion Builtins}).
+
+Many of the builtins have been extended by @sc{posix} or Bash.
+
+@node Bourne Shell Builtins
+@section Bourne Shell Builtins
+
+The following shell builtin commands are inherited from the Bourne Shell.
+These commands are implemented as specified by the @sc{posix} 1003.2 standard.
+
+@table @code
+@item :    @r{(a colon)}
+@btindex :
+@example
+: [@var{arguments}]
+@end example
+Do nothing beyond expanding @var{arguments} and performing redirections.
+The return status is zero.
+
+@item .    @r{(a period)}
+@btindex .
+@example
+. @var{filename} [@var{arguments}]
+@end example
+Read and execute commands from the @var{filename} argument in the
+current shell context.  If @var{filename} does not contain a slash,
+the @env{PATH} variable is used to find @var{filename}.
+When Bash is not in @sc{posix} mode, the current directory is searched
+if @var{filename} is not found in @env{$PATH}.
+If any @var{arguments} are supplied, they become the positional
+parameters when @var{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 @var{filename} is not found, or
+cannot be read, the return status is non-zero.
+This builtin is equivalent to @code{source}.
+
+@item break
+@btindex break
+@example
+break [@var{n}]
+@end example
+Exit from a @code{for}, @code{while}, @code{until}, or @code{select} loop.
+If @var{n} is supplied, the @var{n}th enclosing loop is exited.
+@var{n} must be greater than or equal to 1.
+The return status is zero unless @var{n} is not greater than or equal to 1.
+
+@item cd
+@btindex cd
+@example
+cd [-L|-P] [@var{directory}]
+@end example
+Change the current working directory to @var{directory}.  If @var{directory}
+is not given, the value of the @env{HOME} shell variable is used.  If the
+shell variable @env{CDPATH} exists, it is used as a search path.  If
+@var{directory} begins with a slash, @env{CDPATH} is not used.
+The @option{-P} option means
+to not follow symbolic links; symbolic links are followed by default
+or with the @option{-L} option.
+If @var{directory} is @samp{-}, it is equivalent to @env{$OLDPWD}.
+The return status is zero if the directory is successfully changed,
+non-zero otherwise.
+
+@item continue
+@btindex continue
+@example
+continue [@var{n}]
+@end example
+Resume the next iteration of an enclosing @code{for}, @code{while},
+@code{until}, or @code{select} loop.
+If @var{n} is supplied, the execution of the @var{n}th enclosing loop
+is resumed.
+@var{n} must be greater than or equal to 1.
+The return status is zero unless @var{n} is not greater than or equal to 1.
+
+@item eval
+@btindex eval
+@example
+eval [@var{arguments}]
+@end example
+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 @code{eval}.
+If there are no arguments or only empty arguments, the return status is
+zero.
+
+@item exec
+@btindex exec
+@example
+exec [-cl] [-a @var{name}] [@var{command} [@var{arguments}]]
+@end example
+If @var{command}
+is supplied, it replaces the shell without creating a new process.
+If the @option{-l} option is supplied, the shell places a dash at the
+beginning of the zeroth arg passed to @var{command}.
+This is what the @code{login} program does.
+The @option{-c} option causes @var{command} to be executed with an empty
+environment.
+If @option{-a} is supplied, the shell passes @var{name} as the zeroth
+argument to @var{command}.
+If no @var{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.
+
+@item exit
+@btindex exit
+@example
+exit [@var{n}]
+@end example
+Exit the shell, returning a status of @var{n} to the shell's parent.
+If @var{n} is omitted, the exit status is that of the last command executed.
+Any trap on @code{EXIT} is executed before the shell terminates.
+
+@item export
+@btindex export
+@example
+export [-fn] [-p] [@var{name}[=@var{value}]]
+@end example
+Mark each @var{name} to be passed to child processes
+in the environment.  If the @option{-f} option is supplied, the @var{name}s
+refer to shell functions; otherwise the names refer to shell variables.
+The @option{-n} option means to no longer mark each @var{name} for export.
+If no @var{names} are supplied, or if the @option{-p} option is given, a
+list of exported names is displayed.
+The @option{-p} option displays output in a form that may be reused as input.
+If a variable name is followed by =@var{value}, the value of
+the variable is set to @var{value}.
+
+The return status is zero unless an invalid option is supplied, one of
+the names is not a valid shell variable name, or @option{-f} is supplied
+with a name that is not a shell function.
+
+@item getopts
+@btindex getopts
+@example
+getopts @var{optstring} @var{name} [@var{args}]
+@end example
+@code{getopts} is used by shell scripts to parse positional parameters.
+@var{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 white space.
+The colon (@samp{:}) and question mark (@samp{?}) may not be
+used as option characters.
+Each time it is invoked, @code{getopts}
+places the next option in the shell variable @var{name}, initializing
+@var{name} if it does not exist,
+and the index of the next argument to be processed into the
+variable @env{OPTIND}.
+@env{OPTIND} is initialized to 1 each time the shell or a shell script
+is invoked.
+When an option requires an argument,
+@code{getopts} places that argument into the variable @env{OPTARG}.
+The shell does not reset @env{OPTIND} automatically; it must be manually
+reset between multiple calls to @code{getopts} within the same shell
+invocation if a new set of parameters is to be used.
+
+When the end of options is encountered, @code{getopts} exits with a
+return value greater than zero.
+@env{OPTIND} is set to the index of the first non-option argument,
+and @code{name} is set to @samp{?}.
+
+@code{getopts}
+normally parses the positional parameters, but if more arguments are
+given in @var{args}, @code{getopts} parses those instead.
+
+@code{getopts} can report errors in two ways.  If the first character of
+@var{optstring} is a colon, @var{silent}
+error reporting is used.  In normal operation diagnostic messages
+are printed when invalid options or missing option arguments are
+encountered.
+If the variable @env{OPTERR}
+is set to 0, no error messages will be displayed, even if the first
+character of @code{optstring} is not a colon.
+
+If an invalid option is seen,
+@code{getopts} places @samp{?} into @var{name} and, if not silent,
+prints an error message and unsets @env{OPTARG}.
+If @code{getopts} is silent, the option character found is placed in
+@env{OPTARG} and no diagnostic message is printed.
+
+If a required argument is not found, and @code{getopts}
+is not silent, a question mark (@samp{?}) is placed in @var{name},
+@code{OPTARG} is unset, and a diagnostic message is printed.
+If @code{getopts} is silent, then a colon (@samp{:}) is placed in
+@var{name} and @env{OPTARG} is set to the option character found.
+
+@item hash
+@btindex hash
+@example
+hash [-'r] [-p @var{filename}] [-dt] [@var{name}]
+@end example
+Remember the full pathnames of commands specified as @var{name} arguments,
+so they need not be searched for on subsequent invocations.
+The commands are found by searching through the directories listed in
+@env{$PATH}.
+The @option{-p} option inhibits the path search, and @var{filename} is
+used as the location of @var{name}.
+The @option{-r} option causes the shell to forget all remembered locations.
+The @option{-d} option causes the shell to forget the remembered location
+of each @var{name}.
+If the @option{-t} option is supplied, the full pathname to which each
+@var{name} corresponds is printed.  If multiple @var{name} arguments are
+supplied with @option{-t} the @var{name} is printed before the hashed
+full pathname.
+The @option{-l} option causes output to be displayed in a format
+that may be reused as input.
+If no arguments are given, or if only @option{-l} is supplied,
+information about remembered commands is printed.
+The return status is zero unless a @var{name} is not found or an invalid
+option is supplied.
+
+@item pwd
+@btindex pwd
+@example
+pwd [-LP]
+@end example
+Print the absolute pathname of the current working directory.
+If the @option{-P} option is supplied, the pathname printed will not
+contain symbolic links.
+If the @option{-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.
+
+@item readonly
+@btindex readonly
+@example
+readonly [-apf] [@var{name}[=@var{value}]] @dots{}
+@end example
+Mark each @var{name} as readonly.
+The values of these names may not be changed by subsequent assignment.
+If the @option{-f} option is supplied, each @var{name} refers to a shell
+function.
+The @option{-a} option means each @var{name} refers to an array variable.
+If no @var{name} arguments are given, or if the @option{-p}
+option is supplied, a list of all readonly names is printed.
+The @option{-p} option causes output to be displayed in a format that
+may be reused as input.
+If a variable name is followed by =@var{value}, the value of
+the variable is set to @var{value}.
+The return status is zero unless an invalid option is supplied, one of
+the @var{name} arguments is not a valid shell variable or function name,
+or the @option{-f} option is supplied with a name that is not a shell function.
+
+@item return
+@btindex return
+@example
+return [@var{n}]
+@end example
+Cause a shell function to exit with the return value @var{n}.
+If @var{n} is not supplied, the return value is the exit status of the
+last command executed in the function.
+This may also be used to terminate execution of a script being executed
+with the @code{.} (or @code{source}) builtin, returning either @var{n} or
+the exit status of the last command executed within the script as the exit
+status of the script.
+Any command associated with the @code{RETURN} trap is executed
+before execution resumes after the function or script.
+The return status is non-zero if @code{return} is used outside a function
+and not during the execution of a script by @code{.} or @code{source}.
+
+@item shift
+@btindex shift
+@example
+shift [@var{n}]
+@end example
+Shift the positional parameters to the left by @var{n}.
+The positional parameters from @var{n}+1 @dots{} @code{$#} are
+renamed to @code{$1} @dots{} @code{$#}-@var{n}+1.
+Parameters represented by the numbers @code{$#} to @var{n}+1 are unset.
+@var{n} must be a non-negative number less than or equal to @code{$#}.
+If @var{n} is zero or greater than @code{$#}, the positional parameters
+are not changed.
+If @var{n} is not supplied, it is assumed to be 1.
+The return status is zero unless @var{n} is greater than @code{$#} or
+less than zero, non-zero otherwise.
+
+@item test
+@itemx [
+@btindex test
+@btindex [
+Evaluate a conditional expression @var{expr}.
+Each operator and operand must be a separate argument.
+Expressions are composed of the primaries described below in
+@ref{Bash Conditional Expressions}.
+
+When the @code{[} form is used, the last argument to the command must
+be a @code{]}.
+
+Expressions may be combined using the following operators, listed in
+decreasing order of precedence.
+
+@table @code
+@item ! @var{expr}
+True if @var{expr} is false.
+
+@item ( @var{expr} )
+Returns the value of @var{expr}.
+This may be used to override the normal precedence of operators.
+
+@item @var{expr1} -a @var{expr2}
+True if both @var{expr1} and @var{expr2} are true.
+
+@item @var{expr1} -o @var{expr2}
+True if either @var{expr1} or @var{expr2} is true.
+@end table
+
+The @code{test} and @code{[} builtins evaluate conditional
+expressions using a set of rules based on the number of arguments.
+
+@table @asis
+@item 0 arguments
+The expression is false.
+
+@item 1 argument
+The expression is true if and only if the argument is not null.
+
+@item 2 arguments
+If the first argument is @samp{!}, the expression is true if and
+only if the second argument is null.
+If the first argument is one of the unary conditional operators
+(@pxref{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.
+
+@item 3 arguments
+If the second argument is one of the binary conditional
+operators (@pxref{Bash Conditional Expressions}), the
+result of the expression is the result of the binary test using the
+first and third arguments as operands.
+If the first argument is @samp{!}, the value is the negation of
+the two-argument test using the second and third arguments.
+If the first argument is exactly @samp{(} and the third argument is
+exactly @samp{)}, the result is the one-argument test of the second
+argument.
+Otherwise, the expression is false.
+The @samp{-a} and @samp{-o} operators are considered binary operators
+in this case.  
+
+@item 4 arguments
+If the first argument is @samp{!}, 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.
+
+@item 5 or more arguments
+The expression is parsed and evaluated according to precedence
+using the rules listed above.
+@end table
+
+@item times
+@btindex times
+@example
+times
+@end example
+Print out the user and system times used by the shell and its children.
+The return status is zero.
+
+@item trap
+@btindex trap
+@example
+trap [-lp] [@var{arg}] [@var{sigspec} @dots{}]
+@end example
+The commands in @var{arg} are to be read and executed when the
+shell receives signal @var{sigspec}.  If @var{arg} is absent or
+equal to @samp{-}, all specified signals are reset to the values
+they had when the shell was started.
+If @var{arg} is the null string, then the signal specified by
+each @var{sigspec} is ignored by the shell and commands it invokes.
+If @var{arg} is not present and @option{-p} has been supplied,
+the shell displays the trap commands associated with each @var{sigspec}.
+If no arguments are supplied, or
+only @option{-p} is given, @code{trap} prints the list of commands
+associated with each signal number in a form that may be reused as
+shell input.
+The @option{-l} option causes the shell to print a list of signal names
+and their corresponding numbers.
+
+Each @var{sigspec} is either a signal name such as @code{SIGINT} (with
+or without the @code{SIG} prefix) or a signal number.
+If a @var{sigspec}
+is @code{0} or @code{EXIT}, @var{arg} is executed when the shell exits.
+If a @var{sigspec} is @code{DEBUG}, the command @var{arg} is executed
+before every simple command, @code{for} command, @code{case} command,
+@code{select} command, every arithmetic @code{for} command, and before
+the first command executes in a shell function.
+Refer to the description of the @code{extglob} option to the
+@code{shopt} builtin (@pxref{Bash Builtins}) for details of its
+effect on the @code{DEBUG} trap.
+If a @var{sigspec} is @code{ERR}, the command @var{arg} 
+is executed whenever a simple command has a non-zero exit status.
+The @code{ERR} trap is not executed if the failed command is part of the
+command list immediately following an @code{until} or @code{while} keyword,
+part of the test in an @code{if} statement,
+part of a @code{&&} or @code{||} list, or if the command's return
+status is being inverted using @code{!}.
+If a @var{sigspec} is @code{RETURN}, the command @var{arg} is executed
+each time a shell function or a script executed with the @code{.} or
+@code{source} builtins finishes executing.
+
+Signals ignored upon entry to the shell cannot be trapped or reset.
+Trapped signals are reset to their original values in a child  
+process when it is created.
+
+The return status is zero unless a @var{sigspec} does not specify a
+valid signal.
+
+@item umask
+@btindex umask
+@example
+umask [-p] [-S] [@var{mode}]
+@end example
+Set the shell process's file creation mask to @var{mode}.  If
+@var{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 @code{chmod} command.  If @var{mode} is
+omitted, the current value of the mask is printed.  If the @option{-S}
+option is supplied without a @var{mode} argument, the mask is printed
+in a symbolic format.
+If the  @option{-p} option is supplied, and @var{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 @var{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 @code{7}.  Thus, a umask of @code{022}
+results in permissions of @code{755}.
+
+@item unset
+@btindex unset
+@example
+unset [-fv] [@var{name}]
+@end example
+Each variable or function @var{name} is removed.
+If no options are supplied, or the @option{-v} option is given, each
+@var{name} refers to a shell variable. 
+If the @option{-f} option is given, the @var{name}s refer to shell
+functions, and the function definition is removed.
+Readonly variables and functions may not be unset.
+The return status is zero unless a @var{name} is readonly.
+@end table
+
+@node Bash Builtins
+@section 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 @sc{posix} 1003.2 standard.
+
+@table @code
+
+@item alias
+@btindex alias
+@example
+alias [@code{-p}] [@var{name}[=@var{value}] @dots{}]
+@end example
+
+Without arguments or with the @option{-p} option, @code{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 @var{name}
+whose @var{value} is given.  If no @var{value} is given, the name
+and value of the alias is printed.
+Aliases are described in @ref{Aliases}.
+
+@item bind
+@btindex bind
+@example
+bind [-m @var{keymap}] [-lpsvPSV]
+bind [-m @var{keymap}] [-q @var{function}] [-u @var{function}] [-r @var{keyseq}]
+bind [-m @var{keymap}] -f @var{filename}
+bind [-m @var{keymap}] -x @var{keyseq:shell-command}
+bind [-m @var{keymap}] @var{keyseq:function-name}
+bind @var{readline-command}
+@end example
+
+Display current Readline (@pxref{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
+a Readline initialization file (@pxref{Readline Init File}),
+but each binding or command must be passed as a separate argument;  e.g.,
+@samp{"\C-x\C-r":re-read-init-file}.
+Options, if supplied, have the following meanings:
+
+@table @code
+@item -m @var{keymap}
+Use @var{keymap} as the keymap to be affected by
+the subsequent bindings.  Acceptable @var{keymap}
+names are
+@code{emacs},
+@code{emacs-standard},
+@code{emacs-meta},
+@code{emacs-ctlx},
+@code{vi},
+@code{vi-move},
+@code{vi-command}, and
+@code{vi-insert}.
+@code{vi} is equivalent to @code{vi-command};
+@code{emacs} is equivalent to @code{emacs-standard}.
+
+@item -l
+List the names of all Readline functions.
+
+@item -p
+Display Readline function names and bindings in such a way that they
+can be used as input or in a Readline initialization file.
+
+@item -P
+List current Readline function names and bindings.
+
+@item -v
+Display Readline variable names and values in such a way that they
+can be used as input or in a Readline initialization file.
+
+@item -V
+List current Readline variable names and values.
+
+@item -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.
+
+@item -S
+Display Readline key sequences bound to macros and the strings they output.
+
+@item -f @var{filename}
+Read key bindings from @var{filename}.
+
+@item -q @var{function}
+Query about which keys invoke the named @var{function}.
+
+@item -u @var{function}
+Unbind all keys bound to the named @var{function}.
+
+@item -r @var{keyseq}
+Remove any current binding for @var{keyseq}.
+
+@item -x @var{keyseq:shell-command}
+Cause @var{shell-command} to be executed whenever @var{keyseq} is
+entered.
+
+@end table
+
+@noindent
+The return status is zero unless an invalid option is supplied or an
+error occurs.
+
+@item builtin
+@btindex builtin
+@example
+builtin [@var{shell-builtin} [@var{args}]]
+@end example
+Run a shell builtin, passing it @var{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 @var{shell-builtin} is not a shell
+builtin command.
+
+@item caller
+@btindex caller
+@example
+caller [@var{expr}]
+@end example
+Returns the context of any active subroutine call (a shell function or
+a script executed with the @code{.} or @code{source} builtins.
+
+Without @var{expr}, @code{caller} displays the line number and source
+filename of the current subroutine call.
+If a non-negative integer is supplied as @var{expr}, @code{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 @var{expr} does not correspond to a valid position in the
+call stack.
+
+@item command
+@btindex command
+@example
+command [-pVv] @var{command} [@var{arguments} @dots{}]
+@end example
+Runs @var{command} with @var{arguments} ignoring any shell function
+named @var{command}.
+Only shell builtin commands or commands found by searching the
+@env{PATH} are executed.
+If there is a shell function named @code{ls}, running @samp{command ls}
+within the function will execute the external command @code{ls}
+instead of calling the function recursively.
+The @option{-p} option means to use a default value for @env{PATH}
+that is guaranteed to find all of the standard utilities.
+The return status in this case is 127 if @var{command} cannot be
+found or an error occurred, and the exit status of @var{command}
+otherwise.
+
+If either the @option{-V} or @option{-v} option is supplied, a
+description of @var{command} is printed.  The @option{-v} option
+causes a single word indicating the command or file name used to
+invoke @var{command} to be displayed; the @option{-V} option produces
+a more verbose description.  In this case, the return status is
+zero if @var{command} is found, and non-zero if not.
+
+@item declare
+@btindex declare
+@example
+declare [-afFirtx] [-p] [@var{name}[=@var{value}] @dots{}]
+@end example
+
+Declare variables and give them attributes.  If no @var{name}s
+are given, then display the values of variables instead. 
+
+The @option{-p} option will display the attributes and values of each
+@var{name}.
+When @option{-p} is used, additional options are ignored.
+The @option{-F} option inhibits the display of function definitions;
+only the function name and attributes are printed.
+If the @code{extdebug} shell option is enabled using @code{shopt}
+(@pxref{Bash Builtins}), the source file name and line number where
+the function is defined are displayed as well.
+@option{-F} implies @option{-f}.
+The following options can be used to restrict output to variables with
+the specified attributes or to give variables attributes:
+
+@table @code
+@item -a
+Each @var{name} is an array variable (@pxref{Arrays}).
+
+@item -f
+Use function names only.
+
+@item -i
+The variable is to be treated as
+an integer; arithmetic evaluation (@pxref{Shell Arithmetic}) is
+performed when the variable is assigned a value.
+
+@item -r
+Make @var{name}s readonly.  These names cannot then be assigned values
+by subsequent assignment statements or unset.
+
+@item -t
+Give each @var{name} the @code{trace} attribute.
+Traced functions inherit the @code{DEBUG} trap from the calling shell.
+The trace attribute has no special meaning for variables.
+
+@item -x
+Mark each @var{name} for export to subsequent commands via
+the environment.
+@end table
+
+Using @samp{+} instead of @samp{-} turns off the attribute instead.
+When used in a function, @code{declare} makes each @var{name} local,
+as with the @code{local} command.  If a variable name is followed by
+=@var{value}, the value of the variable is set to @var{value}.
+
+The return status is zero unless an invalid option is encountered,
+an attempt is made to define a function using @samp{-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 (@pxref{Arrays}),
+one of the @var{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 @option{-f}.
+
+@item echo
+@btindex echo
+@example
+echo [-neE] [@var{arg} @dots{}]
+@end example
+Output the @var{arg}s, separated by spaces, terminated with a
+newline.
+The return status is always 0.
+If @option{-n} is specified, the trailing newline is suppressed.
+If the @option{-e} option is given, interpretation of the following
+backslash-escaped characters is enabled.
+The @option{-E} option disables the interpretation of these escape characters,
+even on systems where they are interpreted by default.
+The @code{xpg_echo} shell option may be used to
+dynamically determine whether or not @code{echo} expands these
+escape characters by default.
+@code{echo} interprets the following escape sequences:
+@table @code
+@item \a
+alert (bell)
+@item \b
+backspace
+@item \c
+suppress trailing newline
+@item \e
+escape
+@item \f
+form feed
+@item \n
+new line
+@item \r
+carriage return
+@item \t 
+horizontal tab
+@item \v
+vertical tab
+@item \\
+backslash
+@item \0@var{nnn}
+the eight-bit character whose value is the octal value @var{nnn}
+(zero to three octal digits)
+@item \@var{nnn}
+the eight-bit character whose value is the octal value @var{nnn}
+(one to three octal digits)
+@item \x@var{HH}
+the eight-bit character whose value is the hexadecimal value @var{HH}
+(one or two hex digits)
+@end table
+
+@item enable
+@btindex enable
+@example
+enable [-n] [-p] [-f @var{filename}] [-ads] [@var{name} @dots{}]
+@end example
+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 @option{-n} is used, the @var{name}s become disabled.  Otherwise
+@var{name}s are enabled.  For example, to use the @code{test} binary
+found via @env{$PATH} instead of the shell builtin version, type
+@samp{enable -n test}.
+
+If the @option{-p} option is supplied, or no @var{name} arguments appear,
+a list of shell builtins is printed.  With no other arguments, the list
+consists of all enabled shell builtins.
+The @option{-a} option means to list
+each builtin with an indication of whether or not it is enabled. 
+
+The @option{-f} option means to load the new builtin command @var{name}
+from shared object @var{filename}, on systems that support dynamic loading.
+The @option{-d} option will delete a builtin loaded with @option{-f}.
+
+If there are no options, a list of the shell builtins is displayed.
+The @option{-s} option restricts @code{enable} to the @sc{posix} special
+builtins.  If @option{-s} is used with @option{-f}, the new builtin becomes
+a special builtin (@pxref{Special Builtins}).
+
+The return status is zero unless a @var{name} is not a shell builtin
+or there is an error loading a new builtin from a shared object.
+
+@item help
+@btindex help
+@example
+help [-s] [@var{pattern}]
+@end example
+Display helpful information about builtin commands.
+If @var{pattern} is specified, @code{help} gives detailed help
+on all commands matching @var{pattern}, otherwise a list of
+the builtins is printed.
+The @option{-s} option restricts the information displayed to a short
+usage synopsis.
+The return status is zero unless no command matches @var{pattern}.
+
+@item let
+@btindex let
+@example
+let @var{expression} [@var{expression}]
+@end example
+The @code{let} builtin allows arithmetic to be performed on shell
+variables.  Each @var{expression} is evaluated according to the
+rules given below in @ref{Shell Arithmetic}.  If the
+last @var{expression} evaluates to 0, @code{let} returns 1;
+otherwise 0 is returned.
+
+@item local
+@btindex local
+@example
+local [@var{option}] @var{name}[=@var{value}] @dots{}
+@end example
+For each argument, a local variable named @var{name} is created,
+and assigned @var{value}.
+The @var{option} can be any of the options accepted by @code{declare}.
+@code{local} can only be used within a function; it makes the variable
+@var{name} have a visible scope restricted to that function and its
+children.  The return status is zero unless @code{local} is used outside
+a function, an invalid @var{name} is supplied, or @var{name} is a
+readonly variable.
+
+@item logout
+@btindex logout
+@example
+logout [@var{n}]
+@end example
+Exit a login shell, returning a status of @var{n} to the shell's
+parent.
+
+@item printf
+@btindex printf
+@example
+@code{printf} @var{format} [@var{arguments}]
+@end example
+Write the formatted @var{arguments} to the standard output under the
+control of the @var{format}.
+The @var{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
+@var{argument}.
+In addition to the standard @code{printf(1)} formats, @samp{%b} causes
+@code{printf} to expand backslash escape sequences in the corresponding
+@var{argument}, and @samp{%q} causes @code{printf} to output the
+corresponding @var{argument} in a format that can be reused as shell input.
+
+The @var{format} is reused as necessary to consume all of the @var{arguments}.
+If the @var{format} requires more @var{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.
+
+@item read
+@btindex read
+@example
+read [-ers] [-a @var{aname}] [-d @var{delim}] [-n @var{nchars}] [-p @var{prompt}] [-t @var{timeout}] [-u @var{fd}] [@var{name} @dots{}]
+@end example
+One line is read from the standard input, or from the file descriptor
+@var{fd} supplied as an argument to the @option{-u} option, and the first word
+is assigned to the first @var{name}, the second word to the second @var{name},
+and so on, with leftover words and their intervening separators assigned
+to the last @var{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 @env{IFS} variable
+are used to split the line into words.
+The backslash character @samp{\} 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 @env{REPLY}.
+The return code is zero, unless end-of-file is encountered, @code{read}
+times out, or an invalid file descriptor is supplied as the argument to
+@option{-u}.
+Options, if supplied, have the following meanings:
+
+@table @code
+@item -a @var{aname}
+The words are assigned to sequential indices of the array variable
+@var{aname}, starting at 0.
+All elements are removed from @var{aname} before the assignment.
+Other @var{name} arguments are ignored.
+
+@item -d @var{delim}
+The first character of @var{delim} is used to terminate the input line,
+rather than newline.
+
+@item -e
+Readline (@pxref{Command Line Editing}) is used to obtain the line.
+
+@item -n @var{nchars}
+@code{read} returns after reading @var{nchars} characters rather than
+waiting for a complete line of input.
+
+@item -p @var{prompt}
+Display @var{prompt}, without a trailing newline, before attempting
+to read any input.
+The prompt is displayed only if input is coming from a terminal.
+
+@item -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.
+
+@item -s
+Silent mode.  If input is coming from a terminal, characters are
+not echoed.
+
+@item -t @var{timeout}
+Cause @code{read} to time out and return failure if a complete line of
+input is not read within @var{timeout} seconds.
+This option has no effect if @code{read} is not reading input from the
+terminal or a pipe.
+
+@item -u @var{fd}
+Read input from file descriptor @var{fd}.
+
+@end table
+
+@item shopt
+@btindex shopt
+@example
+shopt [-pqsu] [-o] [@var{optname} @dots{}]
+@end example
+Toggle the values of variables controlling optional shell behavior.
+With no options, or with the @option{-p} option, a list of all settable
+options is displayed, with an indication of whether or not each is set.
+The @option{-p} option causes output to be displayed in a form that
+may be reused as input.
+Other options have the following meanings:
+
+@table @code
+@item -s
+Enable (set) each @var{optname}.
+
+@item -u
+Disable (unset) each @var{optname}.
+
+@item -q
+Suppresses normal output; the return status
+indicates whether the @var{optname} is set or unset.
+If multiple @var{optname} arguments are given with @option{-q},
+the return status is zero if all @var{optnames} are enabled;
+non-zero otherwise.
+
+@item -o
+Restricts the values of
+@var{optname} to be those defined for the @option{-o} option to the
+@code{set} builtin (@pxref{The Set Builtin}).
+@end table
+
+If either @option{-s} or @option{-u}
+is used with no @var{optname} arguments, the display is limited to
+those options which are set or unset, respectively.
+
+Unless otherwise noted, the @code{shopt} options are disabled (off)
+by default.
+
+The return status when listing options is zero if all @var{optnames}
+are enabled, non-zero otherwise.  When setting or unsetting options,
+the return status is zero unless an @var{optname} is not a valid shell
+option.
+
+The list of @code{shopt} options is:
+@table @code
+@item cdable_vars
+If this is set, an argument to the @code{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.
+
+@item cdspell
+If set, minor errors in the spelling of a directory component in a
+@code{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.
+
+@item 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.
+
+@item checkwinsize
+If set, Bash checks the window size after each command
+and, if necessary, updates the values of    
+@env{LINES} and @env{COLUMNS}.
+
+@item 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.
+
+@item dotglob
+If set, Bash includes filenames beginning with a `.' in
+the results of filename expansion.
+
+@item execfail
+If this is set, a non-interactive shell will not exit if
+it cannot execute the file specified as an argument to the @code{exec}
+builtin command.  An interactive shell does not exit if @code{exec}
+fails.
+
+@item expand_aliases
+If set, aliases are expanded as described below under Aliases,
+@ref{Aliases}.
+This option is enabled by default for interactive shells.
+
+@item extdebug
+If set, behavior intended for use by debuggers is enabled:
+
+@enumerate
+@item
+The @option{-F} option to the @code{declare} builtin (@pxref{Bash Builtins})
+displays the source file name and line number corresponding to each function
+name supplied as an argument.
+
+@item
+If the command run by the @code{DEBUG} trap returns a non-zero value, the
+next command is skipped and not executed.
+
+@item
+If the command run by the @code{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 @code{.} or @code{source} builtins), a call to
+@code{return} is simulated.
+@end enumerate
+
+@item extglob
+If set, the extended pattern matching features described above
+(@pxref{Pattern Matching}) are enabled.
+
+@item extquote
+If set, @code{$'@var{string}'} and @code{$"@var{string}"} quoting is  
+performed within @code{$@{@var{parameter}@}} expansions                     
+enclosed in double quotes.  This option is enabled by default. 
+
+@item histappend
+If set, the history list is appended to the file named by the value
+of the @env{HISTFILE}
+variable when the shell exits, rather than overwriting the file.
+
+@item histreedit
+If set, and Readline
+is being used, a user is given the opportunity to re-edit a
+failed history substitution.
+
+@item 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.
+
+@item hostcomplete
+If set, and Readline is being used, Bash will attempt to perform
+hostname completion when a word containing a @samp{@@} is being
+completed (@pxref{Commands For Completion}).  This option is enabled
+by default.
+
+@item huponexit
+If set, Bash will send @code{SIGHUP} to all jobs when an interactive
+login shell exits (@pxref{Signals}).
+
+@item interactive_comments
+Allow a word beginning with @samp{#}
+to cause that word and all remaining characters on that
+line to be ignored in an interactive shell.
+This option is enabled by default.
+
+@item lithist
+If enabled, and the @code{cmdhist}
+option is enabled, multi-line commands are saved to the history with
+embedded newlines rather than using semicolon separators where possible.
+
+@item login_shell
+The shell sets this option if it is started as a login shell
+(@pxref{Invoking Bash}).
+The value may not be changed.
+
+@item mailwarn
+If set, and a file that Bash is checking for mail has been  
+accessed since the last time it was checked, the message
+@code{"The mail in @var{mailfile} has been read"} is displayed.
+
+@item no_empty_cmd_completion
+If set, and Readline is being used, Bash will not attempt to search
+the @env{PATH} for possible completions when completion is attempted
+on an empty line.
+
+@item nocaseglob
+If set, Bash matches filenames in a case-insensitive fashion when
+performing filename expansion.
+
+@item nullglob
+If set, Bash allows filename patterns which match no
+files to expand to a null string, rather than themselves.
+
+@item progcomp
+If set, the programmable completion facilities
+(@pxref{Programmable Completion}) are enabled.
+This option is enabled by default.
+
+@item promptvars
+If set, prompt strings undergo variable and parameter expansion after
+being expanded (@pxref{Printing a Prompt}).
+This option is enabled by default.
+
+@item restricted_shell
+The shell sets this option if it is started in restricted mode
+(@pxref{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.
+
+@item shift_verbose
+If this is set, the @code{shift}
+builtin prints an error message when the shift count exceeds the
+number of positional parameters.
+
+@item sourcepath
+If set, the @code{source} builtin uses the value of @env{PATH}
+to find the directory containing the file supplied as an argument.
+This option is enabled by default.
+
+@item xpg_echo
+If set, the @code{echo} builtin expands backslash-escape sequences
+by default.
+
+@end table
+
+@noindent
+The return status when listing options is zero if all @var{optnames}
+are enabled, non-zero otherwise.
+When setting or unsetting options, the return status is zero unless an
+@var{optname} is not a valid shell option.
+
+@item source
+@btindex source
+@example
+source @var{filename}
+@end example
+A synonym for @code{.} (@pxref{Bourne Shell Builtins}).
+
+@item type
+@btindex type
+@example
+type [-afptP] [@var{name} @dots{}]
+@end example
+For each @var{name}, indicate how it would be interpreted if used as a
+command name.
+
+If the @option{-t} option is used, @code{type} prints a single word
+which is one of @samp{alias}, @samp{function}, @samp{builtin},
+@samp{file} or @samp{keyword},
+if @var{name} is an alias, shell function, shell builtin,
+disk file, or shell reserved word, respectively.
+If the @var{name} is not found, then nothing is printed, and
+@code{type} returns a failure status.
+
+If the @option{-p} option is used, @code{type} either returns the name
+of the disk file that would be executed, or nothing if @option{-t}
+would not return @samp{file}.
+
+The @option{-P} option forces a path search for each @var{name}, even if
+@option{-t} would not return @samp{file}.
+
+If a command is hashed, @option{-p} and @option{-P} print the hashed value,
+not necessarily the file that appears first in @code{$PATH}.
+
+If the @option{-a} option is used, @code{type} returns all of the places
+that contain an executable named @var{file}.
+This includes aliases and functions, if and only if the @option{-p} option
+is not also used.
+
+If the @option{-f} option is used, @code{type} does not attempt to find
+shell functions, as with the @code{command} builtin.
+
+The return status is zero if any of the @var{names} are found, non-zero
+if none are found.
+
+@item typeset
+@btindex typeset
+@example
+typeset [-afFrxi] [-p] [@var{name}[=@var{value}] @dots{}]
+@end example
+The @code{typeset} command is supplied for compatibility with the Korn
+shell; however, it has been deprecated in favor of the @code{declare}
+builtin command.
+
+@item ulimit
+@btindex ulimit
+@example
+ulimit [-acdflmnpstuvSH] [@var{limit}]
+@end example
+@code{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:
+@table @code
+@item -S
+Change and report the soft limit associated with a resource.
+
+@item -H
+Change and report the hard limit associated with a resource.
+
+@item -a
+All current limits are reported.
+
+@item -c
+The maximum size of core files created.
+
+@item -d
+The maximum size of a process's data segment.
+
+@item -f
+The maximum size of files created by the shell.
+
+@item -l
+The maximum size that may be locked into memory.
+
+@item -m
+The maximum resident set size.
+
+@item -n
+The maximum number of open file descriptors.
+
+@item -p
+The pipe buffer size.
+
+@item -s
+The maximum stack size.
+
+@item -t
+The maximum amount of cpu time in seconds.
+
+@item -u
+The maximum number of processes available to a single user.
+
+@item -v
+The maximum amount of virtual memory available to the process.
+
+@end table
+
+If @var{limit} is given, it is the new value of the specified resource;
+the special @var{limit} values @code{hard}, @code{soft}, and
+@code{unlimited} stand for the current hard limit, the current soft limit,
+and no limit, respectively.
+Otherwise, the current value of the soft limit for the specified resource
+is printed, unless the @option{-H} option is supplied.
+When setting new limits, if neither @option{-H} nor @option{-S} is supplied,
+both the hard and soft limits are set.
+If no option is given, then @option{-f} is assumed.  Values are in 1024-byte
+increments, except for @option{-t}, which is in seconds, @option{-p},
+which is in units of 512-byte blocks, and @option{-n} and @option{-u}, which
+are unscaled values.
+
+The return status is zero unless an invalid option or argument is supplied,
+or an error occurs while setting a new limit.
+
+@item unalias
+@btindex unalias
+@example
+unalias [-a] [@var{name} @dots{} ]
+@end example
+
+Remove each @var{name} from the list of aliases.  If @option{-a} is
+supplied, all aliases are removed.
+Aliases are described in @ref{Aliases}.
+
+@end table
+
+@node The Set Builtin
+@section The Set Builtin
+
+This builtin is so complicated that it deserves its own section.
+
+@table @code
+@item set
+@btindex set
+@example
+set [--abefhkmnptuvxBCHP] [-o @var{option}] [@var{argument} @dots{}]
+@end example
+
+If no options or arguments are supplied, @code{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.
+
+When options are supplied, they set or unset shell attributes.
+Options, if specified, have the following meanings:
+
+@table @code
+@item -a
+Mark variables and function which are modified or created for export
+to the environment of subsequent commands.
+
+@item -b
+Cause the status of terminated background jobs to be reported
+immediately, rather than before printing the next primary prompt.
+
+@item -e
+Exit immediately if a simple command (@pxref{Simple Commands}) exits
+with a non-zero status, unless the command that fails is part of the
+command list immediately following a @code{while} or @code{until}
+keyword, part of the test in an @code{if} statement,
+part of a @code{&&} or @code{||} list, or if the command's return
+status is being inverted using @code{!}.
+A trap on @code{ERR}, if set, is executed before the shell exits.
+
+@item -f
+Disable file name generation (globbing).
+
+@item -h
+Locate and remember (hash) commands as they are looked up for execution.
+This option is enabled by default.
+
+@item -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.
+
+@item -m
+Job control is enabled (@pxref{Job Control}).
+
+@item -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.
+
+@item -o @var{option-name}
+
+Set the option corresponding to @var{option-name}:
+
+@table @code
+@item allexport
+Same as @code{-a}.
+
+@item braceexpand
+Same as @code{-B}.
+
+@item emacs
+Use an @code{emacs}-style line editing interface (@pxref{Command Line Editing}).
+
+@item errexit
+Same as @code{-e}.
+
+@item errtrace
+Same as @code{-E}.
+
+@item functrace
+Same as @code{-T}.
+
+@item hashall
+Same as @code{-h}.
+
+@item histexpand
+Same as @code{-H}.
+
+@item history
+Enable command history, as described in @ref{Bash History Facilities}.
+This option is on by default in interactive shells.
+
+@item ignoreeof
+An interactive shell will not exit upon reading EOF.
+
+@item keyword
+Same as @code{-k}.
+
+@item monitor
+Same as @code{-m}.
+
+@item noclobber
+Same as @code{-C}.
+
+@item noexec
+Same as @code{-n}.
+
+@item noglob
+Same as @code{-f}.
+
+@item nolog
+Currently ignored.
+
+@item notify
+Same as @code{-b}.
+
+@item nounset
+Same as @code{-u}.
+
+@item onecmd
+Same as @code{-t}.
+
+@item physical
+Same as @code{-P}.
+
+@item posix
+Change the behavior of Bash where the default operation differs
+from the @sc{posix} 1003.2 standard to match the standard
+(@pxref{Bash POSIX Mode}).
+This is intended to make Bash behave as a strict superset of that
+standard.
+
+@item privileged
+Same as @code{-p}.
+
+@item verbose
+Same as @code{-v}.
+
+@item vi
+Use a @code{vi}-style line editing interface.
+
+@item xtrace
+Same as @code{-x}.
+@end table
+
+@item -p
+Turn on privileged mode.
+In this mode, the @env{$BASH_ENV} and @env{$ENV} files are not
+processed, shell functions are not inherited from the environment,
+and the @env{SHELLOPTS} variable, if it appears in the environment,
+is ignored.
+If the shell is started with the effective user (group) id not equal to the
+real user (group) id, and the @code{-p} option is not supplied, these actions
+are taken and the effective user id is set to the real user id.
+If the @code{-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.
+
+@item -t
+Exit after reading and executing one command.
+
+@item -u
+Treat unset variables as an error when performing parameter expansion.
+An error message will be written to the standard error, and a non-interactive
+shell will exit.
+
+@item -v
+Print shell input lines as they are read.
+
+@item -x
+Print a trace of simple commands, \fBfor\fP commands, \fBcase\fP
+commands, \fBselect\fP commands, and arithmetic \fBfor\fP commands
+and their arguments or associated word lists after they are
+expanded and before they are executed.  The value of the @env{PS4}
+variable is expanded and the resultant value is printed before
+the command and its expanded arguments.
+
+@item -B
+The shell will perform brace expansion (@pxref{Brace Expansion}).
+This option is on by default.
+
+@item -C
+Prevent output redirection using @samp{>}, @samp{>&}, and @samp{<>}
+from overwriting existing files.
+
+@item -E
+If set, any trap on @code{ERR} is inherited by shell functions, command
+substitutions, and commands executed in a subshell environment.
+The @code{ERR} trap is normally not inherited in such cases.
+
+@item -H
+Enable @samp{!} style history substitution (@pxref{History Interaction}).
+This option is on by default for interactive shells.
+
+@item -P
+If set, do not follow symbolic links when performing commands such as
+@code{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 @file{/usr/sys} is a symbolic link to @file{/usr/local/sys}
+then:
+@example
+$ cd /usr/sys; echo $PWD
+/usr/sys
+$ cd ..; pwd
+/usr
+@end example
+
+@noindent
+If @code{set -P} is on, then:
+@example
+$ cd /usr/sys; echo $PWD
+/usr/local/sys
+$ cd ..; pwd
+/usr/local
+@end example
+
+@item -T
+If set, any trap on @code{DEBUG} is inherited by shell functions, command
+substitutions, and commands executed in a subshell environment.
+The @code{DEBUG} trap is normally not inherited in such cases.
+
+@item --
+If no arguments follow this option, then the positional parameters are
+unset.  Otherwise, the positional parameters are set to the
+@var{arguments}, even if some of them begin with a @samp{-}.
+
+@item -
+Signal the end of options, cause all remaining @var{arguments}
+to be assigned to the positional parameters.  The @option{-x}
+and @option{-v}  options are turned off.
+If there are no arguments, the positional parameters remain unchanged.
+@end table
+
+Using @samp{+} rather than @samp{-} 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 @code{$-}.
+
+The remaining N @var{arguments} are positional parameters and are
+assigned, in order, to @code{$1}, @code{$2}, @dots{}  @code{$N}.
+The special parameter @code{#} is set to N.
+
+The return status is always zero unless an invalid option is supplied.
+@end table
+
+@node Special Builtins
+@section Special Builtins
+@cindex special builtin
+
+For historical reasons, the @sc{posix} 1003.2 standard has classified
+several builtin commands as @emph{special}.
+When Bash is executing in @sc{posix} mode, the special builtins
+differ from other builtin commands in three respects:
+
+@enumerate
+@item
+Special builtins are found before shell functions during command lookup.
+
+@item
+If a special builtin returns an error status, a non-interactive shell exits.
+
+@item
+Assignment statements preceding the command stay in effect in the shell
+environment after the command completes.
+@end enumerate
+
+When Bash is not executing in @sc{posix} mode, these builtins behave no
+differently than the rest of the Bash builtin commands.
+The Bash @sc{posix} mode is described in @ref{Bash POSIX Mode}. 
+
+These are the @sc{posix} special builtins:
+@example
+@w{break : . continue eval exec exit export readonly return set}
+@w{shift trap unset}
+@end example
+
+@node Shell Variables
+@chapter Shell Variables
+
+@menu
+* Bourne Shell Variables::     Variables which Bash uses in the same way
+                               as the Bourne Shell.
+* Bash Variables::             List of variables that exist in Bash.
+@end menu
+
+This chapter describes the shell variables that Bash uses.
+Bash automatically assigns default values to a number of variables.
+
+@node Bourne Shell Variables
+@section Bourne Shell Variables
+
+Bash uses certain shell variables in the same way as the Bourne shell.
+In some cases, Bash assigns a default value to the variable.
+
+@vtable @code
+
+@item CDPATH
+A colon-separated list of directories used as a search path for
+the @code{cd} builtin command.
+
+@item HOME
+The current user's home directory; the default for the @code{cd} builtin
+command.
+The value of this variable is also used by tilde expansion
+(@pxref{Tilde Expansion}).
+
+@item IFS
+A list of characters that separate fields; used when the shell splits
+words as part of expansion.
+
+@item MAIL
+If this parameter is set to a filename and the @env{MAILPATH} variable
+is not set, Bash informs the user of the arrival of mail in
+the specified file.
+
+@item 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 file name from the message with
+a @samp{?}.
+When used in the text of the message, @code{$_} expands to the name of
+the current mail file.
+
+@item OPTARG
+The value of the last option argument processed by the @code{getopts} builtin.
+
+@item OPTIND
+The index of the last option argument processed by the @code{getopts} builtin.
+
+@item PATH
+A colon-separated list of directories in which the shell looks for
+commands.
+A zero-length (null) directory name in the value of @code{PATH} indicates the
+current directory.
+A null directory name may appear as two adjacent colons, or as an initial
+or trailing colon.
+
+
+@item PS1
+The primary prompt string.  The default value is @samp{\s-\v\$ }.
+@xref{Printing a Prompt}, for the complete list of escape
+sequences that are expanded before @env{PS1} is displayed.
+
+@item PS2
+The secondary prompt string.  The default value is @samp{> }.
+
+@end vtable
+
+@node Bash Variables
+@section Bash Variables
+
+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:
+variables for controlling the job control facilities
+(@pxref{Job Control Variables}).
+
+@vtable @code
+
+@item BASH
+The full pathname used to execute the current instance of Bash.
+
+@item 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 @code{.} or @code{source}) is at the top of the stack.  When a
+subroutine is executed, the number of parameters passed is pushed onto
+@code{BASH_ARGC}.
+
+@item 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 @code{BASH_ARGV}.
+
+@item 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.
+
+@item 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.  @xref{Bash Startup Files}.
+
+@item BASH_EXECUTION_STRING
+The command argument to the @option{-c} invocation option.
+
+@item BASH_LINENO
+An array variable whose members are the line numbers in source files
+corresponding to each member of @var{FUNCNAME}.
+@code{$@{BASH_LINENO[$i]@}} is the line number in the source file where
+@code{$@{FUNCNAME[$i + 1]@}} was called.
+The corresponding source file name is @code{$@{BASH_SOURCE[$i + 1]@}}.
+Use @code{LINENO} to obtain the current line number.
+
+@item BASH_SOURCE
+An array variable whose members are the source filenames corresponding
+to the elements in the @code{FUNCNAME} array variable.
+
+@item BASH_SUBSHELL
+Incremented by one each time a subshell or subshell environment is spawned.
+The initial value is 0.
+
+@item BASH_VERSINFO
+A readonly array variable (@pxref{Arrays})
+whose members hold version information for this instance of Bash.
+The values assigned to the array members are as follows:
+
+@table @code
+
+@item BASH_VERSINFO[0]
+The major version number (the @var{release}).
+
+@item BASH_VERSINFO[1]
+The minor version number (the @var{version}).
+
+@item BASH_VERSINFO[2]
+The patch level.
+
+@item BASH_VERSINFO[3]
+The build version.
+
+@item BASH_VERSINFO[4]
+The release status (e.g., @var{beta1}).
+
+@item BASH_VERSINFO[5]
+The value of @env{MACHTYPE}.
+
+@end table
+
+@item BASH_VERSION
+The version number of the current instance of Bash.
+
+@item COLUMNS
+Used by the @code{select} builtin command to determine the terminal width
+when printing selection lists.  Automatically set upon receipt of a
+@code{SIGWINCH}.
+
+@item COMP_CWORD
+An index into @env{$@{COMP_WORDS@}} of the word containing the current
+cursor position.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (@pxref{Programmable Completion}).
+
+@item COMP_LINE
+The current command line.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (@pxref{Programmable Completion}).
+
+@item 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 @code{$@{#COMP_LINE@}}.
+This variable is available only in shell functions and external
+commands invoked by the
+programmable completion facilities (@pxref{Programmable Completion}).
+
+@item COMP_WORDBREAKS
+The set of characters that the Readline library treats as word
+separators when performing word completion.
+If @code{COMP_WORDBREAKS} is unset, it loses its special properties,
+even if it is subsequently reset.
+
+@item COMP_WORDS
+An array variable consisting of the individual
+words in the current command line.
+This variable is available only in shell functions invoked by the
+programmable completion facilities (@pxref{Programmable Completion}).
+
+@item COMPREPLY
+An array variable from which Bash reads the possible completions
+generated by a shell function invoked by the programmable completion
+facility (@pxref{Programmable Completion}).
+
+@item 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
+@code{dirs} builtin.
+Assigning to members of this array variable may be used to modify
+directories already in the stack, but the @code{pushd} and @code{popd}
+builtins must be used to add and remove directories.
+Assignment to this variable will not change the current directory.
+If @env{DIRSTACK} is unset, it loses its special properties, even if
+it is subsequently reset.
+
+@item EMACS
+If Bash finds this variable in the environment when the shell
+starts with value @samp{t}, it assumes that the shell is running in an
+emacs shell buffer and disables line editing.
+
+@item EUID
+The numeric effective user id of the current user.  This variable
+is readonly.
+
+@item FCEDIT
+The editor used as a default by the @option{-e} option to the @code{fc}
+builtin command.
+
+@item FIGNORE
+A colon-separated list of suffixes to ignore when performing
+filename completion.
+A file name whose suffix matches one of the entries in 
+@env{FIGNORE}
+is excluded from the list of matched file names.  A sample
+value is @samp{.o:~}
+
+@item 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 is "main".
+This variable exists only when a shell function is executing.
+Assignments to @env{FUNCNAME} have no effect and return an error status.
+If @env{FUNCNAME} is unset, it loses its special properties, even if
+it is subsequently reset.
+
+@item 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 @env{GLOBIGNORE}, it is removed from the list
+of matches.
+
+@item GROUPS
+An array variable containing the list of groups of which the current    
+user is a member.
+Assignments to @env{GROUPS} have no effect and return an error status.
+If @env{GROUPS} is unset, it loses its special properties, even if it is
+subsequently reset.
+
+@item histchars
+Up to three characters which control history expansion, quick
+substitution, and tokenization (@pxref{History Interaction}).
+The first character is the
+@var{history expansion} character, that is, the character which signifies the
+start of a history expansion, normally @samp{!}.  The second character is the
+character which signifies `quick substitution' when seen as the first
+character on a line, normally @samp{^}.  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 @samp{#}.  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.
+
+@item HISTCMD
+The history number, or index in the history list, of the current
+command.  If @env{HISTCMD} is unset, it loses its special properties,
+even if it is subsequently reset.
+
+@item HISTCONTROL
+A colon-separated list of values controlling how commands are saved on
+the history list.
+If the list of values includes @samp{ignorespace}, lines which begin
+with a space character are not saved in the history list.
+A value of @samp{ignoredups} causes lines which match the previous
+history entry to not be saved.
+A value of @samp{ignoreboth} is shorthand for
+@samp{ignorespace} and @samp{ignoredups}.
+A value of @samp{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 @env{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 @env{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
+@env{HISTCONTROL}.
+
+@item HISTFILE
+The name of the file to which the command history is saved.  The
+default value is @file{~/.bash_history}.
+
+@item 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.
+The history file is also truncated to this size after
+writing it when an interactive shell exits.
+The default value is 500.
+
+@item 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 @samp{*} is appended).  Each pattern is tested
+against the line after the checks specified by @env{HISTCONTROL}
+are applied.  In addition to the normal shell pattern matching
+characters, @samp{&} matches the previous history line.  @samp{&}
+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
+@env{HISTIGNORE}.
+
+@env{HISTIGNORE} subsumes the function of @env{HISTCONTROL}.  A
+pattern of @samp{&} is identical to @code{ignoredups}, and a
+pattern of @samp{[ ]*} is identical to @code{ignorespace}. 
+Combining these two patterns, separating them with a colon,
+provides the functionality of @code{ignoreboth}. 
+
+@item HISTSIZE
+The maximum number of commands to remember on the history list.
+The default value is 500.
+
+@item HOSTFILE
+Contains the name of a file in the same format as @file{/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 @env{HOSTFILE} is set, but has no value, Bash attempts to read 
+@file{/etc/hosts} to obtain the list of possible hostname completions.
+When @env{HOSTFILE} is unset, the hostname list is cleared.
+
+@item HOSTNAME
+The name of the current host.
+
+@item HOSTTYPE
+A string describing the machine Bash is running on.
+
+@item IGNOREEOF
+Controls the action of the shell on receipt of an @code{EOF} character
+as the sole input.  If set, the value denotes the number
+of consecutive @code{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 @code{EOF} signifies the end of 
+input to the shell.  This is only in effect for interactive shells.
+
+@item INPUTRC
+The name of the Readline initialization file, overriding the default
+of @file{~/.inputrc}.
+
+@item LANG  
+Used to determine the locale category for any category not specifically
+selected with a variable starting with @code{LC_}.
+
+@item LC_ALL
+This variable overrides the value of @env{LANG} and any other
+@code{LC_} variable specifying a locale category.
+
+@item 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
+(@pxref{Filename Expansion}).
+
+@item LC_CTYPE
+This variable determines the interpretation of characters and the
+behavior of character classes within filename expansion and pattern
+matching (@pxref{Filename Expansion}).
+
+@item LC_MESSAGES
+This variable determines the locale used to translate double-quoted
+strings preceded by a @samp{$} (@pxref{Locale Translation}).
+
+@item LC_NUMERIC
+This variable determines the locale category used for number formatting.
+
+@item LINENO
+The line number in the script or shell function currently executing.
+
+@item LINES
+Used by the @code{select} builtin command to determine the column length
+for printing selection lists.  Automatically set upon receipt of a
+@code{SIGWINCH}.
+
+@item MACHTYPE
+A string that fully describes the system type on which Bash
+is executing, in the standard @sc{gnu} @var{cpu-company-system} format.
+
+@item MAILCHECK
+How often (in seconds) that the shell should check for mail in the
+files specified in the @env{MAILPATH} or @env{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.
+
+@item OLDPWD
+The previous working directory as set by the @code{cd} builtin.
+
+@item OPTERR
+If set to the value 1, Bash displays error messages
+generated by the @code{getopts} builtin command.
+
+@item OSTYPE
+A string describing the operating system Bash is running on.
+
+@item PIPESTATUS
+An array variable (@pxref{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).
+
+@item POSIXLY_CORRECT
+If this variable is in the environment when @code{bash} starts, the shell
+enters @sc{posix} mode (@pxref{Bash POSIX Mode}) before reading the
+startup files, as if the @option{--posix} invocation option had been supplied.
+If it is set while the shell is running, @code{bash} enables @sc{posix} mode,
+as if the command
+@example
+@code{set -o posix}
+@end example
+@noindent
+had been executed.  
+
+@item PPID
+The process @sc{id} of the shell's parent process.  This variable
+is readonly.
+
+@item PROMPT_COMMAND
+If set, the value is interpreted as a command to execute
+before the printing of each primary prompt (@env{$PS1}).
+
+@item PS3
+The value of this variable is used as the prompt for the
+@code{select} command.  If this variable is not set, the
+@code{select} command prompts with @samp{#? }
+
+@item PS4
+The value is the prompt printed before the command line is echoed
+when the @option{-x} option is set (@pxref{The Set Builtin}).
+The first character of @env{PS4} is replicated multiple times, as
+necessary, to indicate multiple levels of indirection.
+The default is @samp{+ }.
+
+@item PWD
+The current working directory as set by the @code{cd} builtin.
+
+@item 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.
+
+@item REPLY
+The default variable for the @code{read} builtin.
+
+@item 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.
+
+@item SHELLOPTS
+A colon-separated list of enabled shell options.  Each word in
+the list is a valid argument for the @option{-o} option to the
+@code{set} builtin command (@pxref{The Set Builtin}).
+The options appearing in @env{SHELLOPTS} are those reported
+as @samp{on} by @samp{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.
+
+@item 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.
+
+@item TIMEFORMAT
+The value of this parameter is used as a format string specifying
+how the timing information for pipelines prefixed with the @code{time}
+reserved word should be displayed.
+The @samp{%} 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. 
+
+@table @code
+
+@item %%
+A literal @samp{%}.
+
+@item %[@var{p}][l]R
+The elapsed time in seconds. 
+
+@item %[@var{p}][l]U
+The number of CPU seconds spent in user mode. 
+
+@item %[@var{p}][l]S
+The number of CPU seconds spent in system mode. 
+
+@item %P
+The CPU percentage, computed as (%U + %S) / %R. 
+@end table
+
+The optional @var{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 @var{p} greater than 3 are changed to 3.
+If @var{p} is not specified, the value 3 is used. 
+
+The optional @code{l} specifies a longer format, including minutes, of
+the form @var{MM}m@var{SS}.@var{FF}s.
+The value of @var{p} determines whether or not the fraction is included. 
+
+If this variable is not set, Bash acts as if it had the value
+@example
+@code{$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'}
+@end example
+If the value is null, no timing information is displayed.
+A trailing newline is added when the format string is displayed.
+
+@item TMOUT
+If set to a value greater than zero, @code{TMOUT} is treated as the
+default timeout for the @code{read} builtin (@pxref{Bash Builtins}).
+The @code{select} command (@pxref{Conditional Constructs}) terminates
+if input does not arrive after @code{TMOUT} seconds when input is coming
+from a terminal.
+
+In an interative shell, the value is interpreted as
+the number of seconds to wait for input after issuing the primary
+prompt when the shell is interactive.
+Bash terminates after that number of seconds if input does
+not arrive.
+
+@item UID
+The numeric real user id of the current user.  This variable is readonly.
+
+@end vtable
+
+@node Bash Features
+@chapter Bash Features
+
+This section describes features unique to Bash.
+
+@menu
+* Invoking Bash::              Command line options that you can give
+                               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 @code{test} builtin.
+* Shell Arithmetic::           Arithmetic on shell variables.
+* Aliases::                    Substituting one command for another.
+* Arrays::                     Array Variables.
+* The Directory Stack::                History of visited directories.
+* Printing a Prompt::          Controlling the PS1 string.
+* The Restricted Shell::       A more controlled mode of shell execution.
+* Bash POSIX Mode::            Making Bash behave more closely to what
+                               the POSIX standard specifies.
+@end menu
+
+@node Invoking Bash
+@section Invoking Bash
+
+@example
+bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @var{option}] [-O @var{shopt_option}] [@var{argument} @dots{}]
+bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @var{option}] [-O @var{shopt_option}] -c @var{string} [@var{argument} @dots{}]
+bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @var{option}] [-O @var{shopt_option}] [@var{argument} @dots{}]
+@end example
+
+In addition to the single-character shell command-line options
+(@pxref{The Set Builtin}), 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. 
+
+@table @code
+@item --debugger
+Arrange for the debugger profile to be executed before the shell
+starts.  Turns on extended debugging mode (see @ref{Bash Builtins}
+for a description of the @code{extdebug} option to the @code{shopt}
+builtin) and shell function tracing
+(see @ref{The Set Builtin} for a description of the @code{-o functrace}
+option).
+
+@item --dump-po-strings
+A list of all double-quoted strings preceded by @samp{$}
+is printed on the standard ouput
+in the @sc{gnu} @code{gettext} PO (portable object) file format.
+Equivalent to @option{-D} except for the output format.
+
+@item --dump-strings
+Equivalent to @option{-D}.
+
+@item --help
+Display a usage message on standard output and exit sucessfully.
+
+@item --init-file @var{filename}
+@itemx --rcfile @var{filename}
+Execute commands from @var{filename} (instead of @file{~/.bashrc})
+in an interactive shell.
+
+@item --login
+Equivalent to @option{-l}.
+
+@item --noediting
+Do not use the @sc{gnu} Readline library (@pxref{Command Line Editing})
+to read  command lines when the shell is interactive.
+
+@item --noprofile
+Don't load the system-wide startup file @file{/etc/profile}
+or any of the personal initialization files
+@file{~/.bash_profile}, @file{~/.bash_login}, or @file{~/.profile}
+when Bash is invoked as a login shell.
+
+@item --norc
+Don't read the @file{~/.bashrc} initialization file in an
+interactive shell.  This is on by default if the shell is
+invoked as @code{sh}.
+
+@item --posix
+Change the behavior of Bash where the default operation differs
+from the @sc{posix} 1003.2 standard to match the standard.  This
+is intended to make Bash behave as a strict superset of that
+standard.  @xref{Bash POSIX Mode}, for a description of the Bash
+@sc{posix} mode.
+
+@item --restricted
+Make the shell a restricted shell (@pxref{The Restricted Shell}).
+
+@item --verbose
+Equivalent to @option{-v}.  Print shell input lines as they're read.
+
+@item --version
+Show version information for this instance of
+Bash on the standard output and exit successfully.
+
+@end table
+
+There are several single-character options that may be supplied at
+invocation which are not available with the @code{set} builtin.
+
+@table @code
+@item -c @var{string}
+Read and execute commands from @var{string} after processing the
+options, then exit.  Any remaining arguments are assigned to the
+positional parameters, starting with @code{$0}.
+
+@item -i
+Force the shell to run interactively.  Interactive shells are
+described in @ref{Interactive Shells}.
+
+@item -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 @samp{exec -l bash}.
+When the shell is not interactive, the login shell startup files will
+be executed.
+@samp{exec bash -l} or @samp{exec bash --login}
+will replace the current shell with a Bash login shell.
+@xref{Bash Startup Files}, for a description of the special behavior
+of a login shell.
+
+@item -r
+Make the shell a restricted shell (@pxref{The Restricted Shell}).
+
+@item -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.
+
+@item -D
+A list of all double-quoted strings preceded by @samp{$}
+is printed on the standard ouput.
+These are the strings that
+are subject to language translation when the current locale
+is not @code{C} or @code{POSIX} (@pxref{Locale Translation}).
+This implies the @option{-n} option; no commands will be executed.
+
+@item [-+]O [@var{shopt_option}]
+@var{shopt_option} is one of the shell options accepted by the
+@code{shopt} builtin (@pxref{Shell Builtin Commands}).
+If @var{shopt_option} is present, @option{-O} sets the value of that option;
+@option{+O} unsets it.  
+If @var{shopt_option} is not supplied, the names and values of the shell
+options accepted by @code{shopt} are printed on the standard output.
+If the invocation option is @option{+O}, the output is displayed in a format
+that may be reused as input.
+
+@item --
+A @code{--} signals the end of options and disables further option
+processing.
+Any arguments after the @code{--} are treated as filenames and arguments.
+
+@end table
+
+@cindex login shell
+A @emph{login} shell is one whose first character of argument zero is
+@samp{-}, or one invoked with the @option{--login} option.
+
+@cindex interactive shell
+An @emph{interactive} shell is one started without non-option arguments,
+unless @option{-s} is specified,
+without specifying the @option{-c} option, and whose input and output are both
+connected to terminals (as determined by @code{isatty(3)}), or one
+started with the @option{-i} option.  @xref{Interactive Shells}, for more
+information.
+
+If arguments remain after option processing, and neither the
+@option{-c} nor the @option{-s}
+option has been supplied, the first argument is assumed to
+be the name of a file containing shell commands (@pxref{Shell Scripts}).
+When Bash is invoked in this fashion, @code{$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 script.  If no commands are executed, the exit status is 0.
+
+@node Bash Startup Files
+@section Bash Startup Files
+@cindex startup files
+
+This section describs how Bash executes its startup files.
+If any of the files exist but cannot be read, Bash reports an error.
+Tildes are expanded in file names as described above under
+Tilde Expansion (@pxref{Tilde Expansion}).
+
+Interactive shells are described in @ref{Interactive Shells}.
+
+@subsubheading Invoked as an interactive login shell, or with @option{--login}
+
+When Bash is invoked as an interactive login shell, or as a
+non-interactive shell with the @option{--login} option, it first reads and
+executes commands from the file @file{/etc/profile}, if that file exists.
+After reading that file, it looks for @file{~/.bash_profile},
+@file{~/.bash_login}, and @file{~/.profile}, in that order, and reads
+and executes commands from the first one that exists and is readable.
+The @option{--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 @file{~/.bash_logout}, if it exists.
+
+@subsubheading 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 @file{~/.bashrc}, if that file exists.
+This may be inhibited by using the @option{--norc} option.
+The @option{--rcfile @var{file}} option will force Bash to read and
+execute commands from @var{file} instead of @file{~/.bashrc}.
+
+So, typically, your @file{~/.bash_profile} contains the line
+@example
+@code{if [ -f ~/.bashrc ]; then . ~/.bashrc; fi}
+@end example
+@noindent
+after (or before) any login-specific initializations.
+
+@subsubheading Invoked non-interactively
+
+When Bash is started non-interactively, to run a shell script,
+for example, it looks for the variable @env{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:
+@example
+@code{if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi}
+@end example
+@noindent
+but the value of the @env{PATH} variable is not used to search for the
+file name.
+
+As noted above, if a non-interactive shell is invoked with the
+@option{--login} option, Bash attempts to read and execute commands from the
+login shell startup files. 
+
+@subsubheading Invoked with name @code{sh}
+
+If Bash is invoked with the name @code{sh}, it tries to mimic the
+startup behavior of historical versions of @code{sh} as closely as
+possible, while conforming to the @sc{posix} standard as well.
+
+When invoked as an interactive login shell, or as a non-interactive
+shell with the @option{--login} option, it first attempts to read
+and execute commands from @file{/etc/profile} and @file{~/.profile}, in
+that order.
+The @option{--noprofile} option may be used to inhibit this behavior.
+When invoked as an interactive shell with the name @code{sh}, Bash
+looks for the variable @env{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 @code{sh} does not attempt to read and execute
+commands from any other startup files, the @option{--rcfile} option has
+no effect.
+A non-interactive shell invoked with the name @code{sh} does not attempt
+to read any other startup files.
+
+When invoked as @code{sh}, Bash enters @sc{posix} mode after
+the startup files are read.
+
+@subsubheading Invoked in @sc{posix} mode
+
+When Bash is started in @sc{posix} mode, as with the
+@option{--posix} command line option, it follows the @sc{posix} standard
+for startup files.
+In this mode, interactive shells expand the @env{ENV} variable
+and commands are read and executed from the file whose name is the
+expanded value.
+No other startup files are read.
+
+@subsubheading Invoked by remote shell daemon
+
+Bash attempts to determine when it is being run by the remote shell
+daemon, usually @code{rshd}.  If Bash determines it is being run by
+rshd, it reads and executes commands from @file{~/.bashrc}, if that
+file exists and is readable.
+It will not do this if invoked as @code{sh}.
+The @option{--norc} option may be used to inhibit this behavior, and the
+@option{--rcfile} option may be used to force another file to be read, but
+@code{rshd} does not generally invoke the shell with those options or
+allow them to be specified.
+
+@subsubheading Invoked with unequal effective and real @sc{uid/gid}s
+
+If Bash is started with the effective user (group) id not equal to the
+real user (group) id, and the @code{-p} option is not supplied, no startup
+files are read, shell functions are not inherited from the environment,
+the @env{SHELLOPTS} variable, if it appears in the environment, is ignored,
+and the effective user id is set to the real user id.
+If the @code{-p} option is supplied at invocation, the startup behavior is
+the same, but the effective user id is not reset.
+
+@node Interactive Shells
+@section Interactive Shells
+@cindex interactive shell
+@cindex shell, interactive
+
+@menu
+* What is an Interactive Shell?::      What determines whether a shell is Interactive.
+* Is this Shell Interactive?:: How to tell if a shell is interactive.
+* Interactive Shell Behavior:: What changes in a interactive shell?
+@end menu
+
+@node What is an Interactive Shell?
+@subsection What is an Interactive Shell?
+
+An interactive shell
+is one started without non-option arguments, unless @option{-s} is
+specified, without specifiying the @option{-c} option, and
+whose input and output are both
+connected to terminals (as determined by @code{isatty(3)}),
+or one started with the @option{-i} option.
+
+An interactive shell generally reads from and writes to a user's
+terminal.
+
+The @option{-s} invocation option may be used to set the positional parameters
+when an interactive shell is started.
+
+@node Is this Shell Interactive?
+@subsection Is this Shell Interactive?
+
+To determine within a startup script whether or not Bash is
+running interactively,
+test the value of the @samp{-} special parameter.
+It contains @code{i} when the shell is interactive.  For example:
+
+@example
+case "$-" in
+*i*)   echo This shell is interactive ;;
+*)     echo This shell is not interactive ;;
+esac
+@end example
+
+Alternatively, startup scripts may examine the variable
+@env{PS1}; it is unset in non-interactive shells, and set in
+interactive shells.  Thus:
+
+@example
+if [ -z "$PS1" ]; then
+        echo This shell is not interactive
+else
+        echo This shell is interactive
+fi
+@end example
+
+@node Interactive Shell Behavior
+@subsection Interactive Shell Behavior
+
+When the shell is running interactively, it changes its behavior in
+several ways.
+
+@enumerate
+@item
+Startup files are read and executed as described in @ref{Bash Startup Files}.
+
+@item
+Job Control (@pxref{Job Control}) is enabled by default.  When job
+control is in effect, Bash ignores the keyboard-generated job control
+signals @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}.
+
+@item
+Bash expands and displays @env{PS1} before reading the first line
+of a command, and expands and displays @env{PS2} before reading the
+second and subsequent lines of a multi-line command.
+
+@item
+Bash executes the value of the @env{PROMPT_COMMAND} variable as a command
+before printing the primary prompt, @env{$PS1}
+(@pxref{Bash Variables}).
+
+@item
+Readline (@pxref{Command Line Editing}) is used to read commands from
+the user's terminal.
+
+@item
+Bash inspects the value of the @code{ignoreeof} option to @code{set -o}
+instead of exiting immediately when it receives an @code{EOF} on its
+standard input when reading a command (@pxref{The Set Builtin}).
+
+@item
+Command history (@pxref{Bash History Facilities})
+and history expansion (@pxref{History Interaction})
+are enabled by default.
+Bash will save the command history to the file named by @env{$HISTFILE}
+when an interactive shell exits.
+
+@item
+Alias expansion (@pxref{Aliases}) is performed by default.
+
+@item
+In the absence of any traps, Bash ignores @code{SIGTERM}
+(@pxref{Signals}).
+
+@item
+In the absence of any traps, @code{SIGINT} is caught and handled
+((@pxref{Signals}).
+@code{SIGINT} will interrupt some shell builtins.
+
+@item
+An interactive login shell sends a @code{SIGHUP} to all jobs on exit
+if the @code{hupoxexit} shell option has been enabled (@pxref{Signals}).
+
+@item
+The @option{-n} invocation option is ignored, and @samp{set -n} has
+no effect (@pxref{The Set Builtin}).
+
+@item
+Bash will check for mail periodically, depending on the values of the
+@env{MAIL}, @env{MAILPATH}, and @env{MAILCHECK} shell variables
+(@pxref{Bash Variables}).
+
+@item
+Expansion errors due to references to unbound shell variables after
+@samp{set -u} has been enabled will not cause the shell to exit
+(@pxref{The Set Builtin}).
+
+@item
+The shell will not exit on expansion errors caused by @var{var} being unset
+or null in @code{$@{@var{var}:?@var{word}@}} expansions
+(@pxref{Shell Parameter Expansion}).
+
+@item
+Redirection errors encountered by shell builtins will not cause the
+shell to exit.
+
+@item
+When running in @sc{posix} mode, a special builtin returning an error
+status will not cause the shell to exit (@pxref{Bash POSIX Mode}).
+@item
+A failed @code{exec} will not cause the shell to exit
+(@pxref{Bourne Shell Builtins}).
+
+@item
+Parser syntax errors will not cause the shell to exit.
+
+@item
+Simple spelling correction for directory arguments to the @code{cd}
+builtin is enabled by default (see the description of the @code{cdspell}
+option to the @code{shopt} builtin in @ref{Bash Builtins}).
+
+@item
+The shell will check the value of the @env{TMOUT} variable and exit
+if a command is not read within the specified number of seconds after
+printing @env{$PS1} (@pxref{Bash Variables}).
+
+@end enumerate
+
+@node Bash Conditional Expressions
+@section Bash Conditional Expressions
+@cindex expressions, conditional
+
+Conditional expressions are used by the @code{[[} compound command
+and the @code{test} and @code{[} 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 @var{file} argument to one of the primaries is of the form
+@file{/dev/fd/@var{N}}, then file descriptor @var{N} is checked.
+If the @var{file} argument to one of the primaries is one of
+@file{/dev/stdin}, @file{/dev/stdout}, or @file{/dev/stderr}, file
+descriptor 0, 1, or 2, respectively, is checked.
+
+@table @code
+@item -a @var{file}
+True if @var{file} exists.
+
+@item -b @var{file}
+True if @var{file} exists and is a block special file.
+
+@item -c @var{file}
+True if @var{file} exists and is a character special file.
+
+@item -d @var{file}
+True if @var{file} exists and is a directory.
+
+@item -e @var{file}
+True if @var{file} exists.
+
+@item -f @var{file}
+True if @var{file} exists and is a regular file.
+
+@item -g @var{file}
+True if @var{file} exists and its set-group-id bit is set.
+
+@item -h @var{file}
+True if @var{file} exists and is a symbolic link.
+
+@item -k @var{file}
+True if @var{file} exists and its "sticky" bit is set.
+
+@item -p @var{file}
+True if @var{file} exists and is a named pipe (FIFO).
+
+@item -r @var{file}
+True if @var{file} exists and is readable.
+
+@item -s @var{file}
+True if @var{file} exists and has a size greater than zero.
+
+@item -t @var{fd}
+True if file descriptor @var{fd} is open and refers to a terminal.
+
+@item -u @var{file}
+True if @var{file} exists and its set-user-id bit is set.
+
+@item -w @var{file}
+True if @var{file} exists and is writable.
+
+@item -x @var{file}
+True if @var{file} exists and is executable.
+
+@item -O @var{file}
+True if @var{file} exists and is owned by the effective user id.
+
+@item -G @var{file}
+True if @var{file} exists and is owned by the effective group id.
+
+@item -L @var{file}
+True if @var{file} exists and is a symbolic link.
+
+@item -S @var{file}
+True if @var{file} exists and is a socket.
+
+@item -N @var{file}
+True if @var{file} exists and has been modified since it was last read.
+
+@item @var{file1} -nt @var{file2}
+True if @var{file1} is newer (according to modification date)
+than @var{file2}, or if @var{file1} exists and @var{file2} does not.
+
+@item @var{file1} -ot @var{file2}
+True if @var{file1} is older than @var{file2},
+or if @var{file2} exists and @var{file1} does not.
+
+@item @var{file1} -ef @var{file2}
+True if @var{file1} and @var{file2} refer to the same device and
+inode numbers.
+
+@item -o @var{optname}
+True if shell option @var{optname} is enabled.
+The list of options appears in the description of the @option{-o}
+option to the @code{set} builtin (@pxref{The Set Builtin}).
+
+@item -z @var{string}
+True if the length of @var{string} is zero.
+
+@item -n @var{string}
+@itemx @var{string}
+True if the length of @var{string} is non-zero.
+
+@item @var{string1} == @var{string2}
+True if the strings are equal.
+@samp{=} may be used in place of @samp{==} for strict @sc{posix} compliance.
+
+@item @var{string1} != @var{string2}
+True if the strings are not equal.
+
+@item @var{string1} < @var{string2}
+True if @var{string1} sorts before @var{string2} lexicographically
+in the current locale.
+
+@item @var{string1} > @var{string2}
+True if @var{string1} sorts after @var{string2} lexicographically
+in the current locale.
+
+@item @var{arg1} OP @var{arg2}
+@code{OP} is one of 
+@samp{-eq}, @samp{-ne}, @samp{-lt}, @samp{-le}, @samp{-gt}, or @samp{-ge}.
+These arithmetic binary operators return true if @var{arg1}
+is equal to, not equal to, less than, less than or equal to,
+greater than, or greater than or equal to @var{arg2},
+respectively.  @var{Arg1} and @var{arg2}
+may be positive or negative integers.
+
+@end table
+
+@node Shell Arithmetic
+@section Shell Arithmetic
+@cindex arithmetic, shell
+@cindex shell arithmetic
+@cindex expressions, arithmetic
+@cindex evaluation, arithmetic
+@cindex arithmetic evaluation
+
+The shell allows arithmetic expressions to be evaluated, as one of
+the shell expansions or by the @code{let} and the @option{-i} option
+to the @code{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. 
+
+@table @code
+
+@item @var{id}++ @var{id}--
+variable post-increment and post-decrement 
+
+@item ++@var{id} --@var{id}
+variable pre-increment and pre-decrement
+
+@item - +
+unary minus and plus
+
+@item ! ~
+logical and bitwise negation
+
+@item **
+exponentiation
+
+@item * / %
+multiplication, division, remainder
+
+@item + -
+addition, subtraction
+
+@item << >>
+left and right bitwise shifts
+
+@item <= >= < >
+comparison
+
+@item == !=
+equality and inequality
+
+@item &
+bitwise AND
+
+@item ^
+bitwise exclusive OR
+
+@item |
+bitwise OR
+
+@item &&
+logical AND
+
+@item ||
+logical OR
+
+@item expr ? expr : expr
+conditional operator
+
+@item = *= /= %= += -= <<= >>= &= ^= |=
+assignment
+
+@item expr1 , expr2
+comma
+@end table
+
+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.
+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  
+@var{integer} attribute using @samp{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 @samp{0x} or @samp{0X} denotes hexadecimal.  Otherwise,
+numbers take the form [@var{base}@code{#}]@var{n}, where @var{base}
+is a decimal number between 2 and 64 representing the arithmetic
+base, and @var{n} is a number in that base.  If @var{base}@code{#} is
+omitted, then base 10 is used.
+The digits greater than 9 are represented by the lowercase letters,
+the uppercase letters, @samp{@@}, and @samp{_}, in that order.
+If @var{base} is less than or equal to 36, lowercase and uppercase
+letters may be used interchangably 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 above.
+
+@node Aliases
+@section Aliases
+@cindex alias expansion
+
+@var{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 @code{alias} and @code{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 alias name and the replacement text may contain any valid
+shell input, including shell metacharacters, with the exception
+that the alias name may not contain @samp{=}.
+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
+@code{ls} to @code{"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
+space or tab character, then the next command word following the
+alias is also checked for alias expansion.
+
+Aliases are created and listed with the @code{alias}
+command, and removed with the @code{unalias} command.
+
+There is no mechanism for using arguments in the replacement text,
+as in @code{csh}.
+If arguments are needed, a shell function should be used
+(@pxref{Shell Functions}).
+
+Aliases are not expanded when the shell is not interactive,
+unless the @code{expand_aliases} shell option is set using
+@code{shopt} (@pxref{Bash Builtins}).
+
+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 compound 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 @code{alias}
+in compound commands.
+
+For almost every purpose, shell functions are preferred over aliases.
+
+@node Arrays
+@section Arrays
+@cindex arrays
+
+Bash provides one-dimensional array variables.  Any variable may be used as
+an array; the @code{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.  Arrays are zero-based.
+
+An array is created automatically if any variable is assigned to using
+the syntax
+@example
+name[@var{subscript}]=@var{value}
+@end example
+
+@noindent
+The @var{subscript}
+is treated as an arithmetic expression that must evaluate to a number
+greater than or equal to zero.  To explicitly declare an array, use
+@example
+declare -a @var{name}
+@end example
+@noindent
+The syntax
+@example
+declare -a @var{name}[@var{subscript}]
+@end example
+@noindent
+is also accepted; the @var{subscript} is ignored.  Attributes may be
+specified for an array variable using the @code{declare} and
+@code{readonly} builtins.  Each attribute applies to all members of
+an array.
+
+Arrays are assigned to using compound assignments of the form
+@example
+name=(value@var{1} @dots{} value@var{n})
+@end example
+@noindent
+where each
+@var{value} is of the form @code{[[@var{subscript}]=]}@var{string}.  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.
+This syntax is also accepted by the @code{declare}
+builtin.  Individual array elements may be assigned to using the
+@code{name[}@var{subscript}@code{]=}@var{value} syntax introduced above.
+
+Any element of an array may be referenced using
+@code{$@{name[}@var{subscript}@code{]@}}.
+The braces are required to avoid
+conflicts with the shell's filename expansion operators.  If the
+@var{subscript} is @samp{@@} or @samp{*}, the word expands to all members
+of the array @var{name}.  These subscripts differ only when the word
+appears within double quotes.  If the word is double-quoted,
+@code{$@{name[*]@}} expands to a single word with
+the value of each array member separated by the first character of the
+@env{IFS} variable, and @code{$@{name[@@]@}} expands each element of
+@var{name} to a separate word.  When there are no array members,
+@code{$@{name[@@]@}} expands to nothing.  This is analogous to the
+expansion of the special parameters @samp{@@} and @samp{*}. 
+@code{$@{#name[}@var{subscript}@code{]@}} expands to the length of
+@code{$@{name[}@var{subscript}@code{]@}}.
+If @var{subscript} is @samp{@@} or
+@samp{*}, the expansion is the number of elements in the array. 
+Referencing an array variable without a subscript is equivalent to
+referencing element zero. 
+
+The @code{unset} builtin is used to destroy arrays.
+@code{unset} @var{name}[@var{subscript}]
+destroys the array element at index @var{subscript}.
+@code{unset} @var{name}, where @var{name} is an array, removes the
+entire array. A subscript of @samp{*} or @samp{@@} also removes the
+entire array.
+
+The @code{declare}, @code{local}, and @code{readonly}
+builtins each accept a @option{-a}
+option to specify an array.  The @code{read}
+builtin accepts a @option{-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 @code{set} and @code{declare}
+builtins display array values in a way that allows them to be
+reused as input.
+
+@node The Directory Stack
+@section The Directory Stack
+@cindex directory stack
+
+@menu
+* Directory Stack Builtins::           Bash builtin commands to manipulate
+                                       the directory stack.
+@end menu
+
+The directory stack is a list of recently-visited directories.  The
+@code{pushd} builtin adds directories to the stack as it changes
+the current directory, and the @code{popd} builtin removes specified
+directories from the stack and changes the current directory to
+the directory removed.  The @code{dirs} builtin displays the contents
+of the directory stack.
+
+The contents of the directory stack are also visible
+as the value of the @env{DIRSTACK} shell variable.
+
+@node Directory Stack Builtins
+@subsection Directory Stack Builtins
+
+@table @code
+
+@item dirs
+@btindex dirs
+@example
+dirs [+@var{N} | -@var{N}] [-clpv]
+@end example
+Display the list of currently remembered directories.  Directories
+are added to the list with the @code{pushd} command; the
+@code{popd} command removes directories from the list.
+@table @code
+@item +@var{N}
+Displays the @var{N}th directory (counting from the left of the
+list printed by @code{dirs} when invoked without options), starting
+with zero.
+@item -@var{N}
+Displays the @var{N}th directory (counting from the right of the
+list printed by @code{dirs} when invoked without options), starting
+with zero.
+@item -c
+Clears the directory stack by deleting all of the elements.
+@item -l
+Produces a longer listing; the default listing format uses a 
+tilde to denote the home directory.
+@item -p
+Causes @code{dirs} to print the directory stack with one entry per
+line.
+@item -v
+Causes @code{dirs} to print the directory stack with one entry per
+line, prefixing each entry with its index in the stack.
+@end table
+
+@item popd
+@btindex popd
+@example
+popd [+@var{N} | -@var{N}] [-n]
+@end example
+
+Remove the top entry from the directory stack, and @code{cd}
+to the new top directory.
+When no arguments are given, @code{popd}
+removes the top directory from the stack and
+performs a @code{cd} to the new top directory.  The
+elements are numbered from 0 starting at the first directory listed with
+@code{dirs}; i.e., @code{popd} is equivalent to @code{popd +0}.
+@table @code
+@item +@var{N}
+Removes the @var{N}th directory (counting from the left of the
+list printed by @code{dirs}), starting with zero.
+@item -@var{N}
+Removes the @var{N}th directory (counting from the right of the
+list printed by @code{dirs}), starting with zero.
+@item -n
+Suppresses the normal change of directory when removing directories
+from the stack, so that only the stack is manipulated.
+@end table
+
+@btindex pushd
+@item pushd
+@example
+pushd [@var{dir} | @var{+N} | @var{-N}] [-n]
+@end example
+
+Save the current directory on the top of the directory stack
+and then @code{cd} to @var{dir}.
+With no arguments, @code{pushd} exchanges the top two directories.
+
+@table @code
+@item +@var{N}
+Brings the @var{N}th directory (counting from the left of the
+list printed by @code{dirs}, starting with zero) to the top of
+the list by rotating the stack.
+@item -@var{N}
+Brings the @var{N}th directory (counting from the right of the
+list printed by @code{dirs}, starting with zero) to the top of
+the list by rotating the stack.
+@item -n
+Suppresses the normal change of directory when adding directories
+to the stack, so that only the stack is manipulated.
+@item @var{dir}
+Makes the current working directory be the top of the stack, and then
+executes the equivalent of `@code{cd} @var{dir}'.
+@code{cd}s to @var{dir}.
+@end table
+
+@end table
+
+@node Printing a Prompt
+@section Controlling the Prompt
+@cindex prompting
+
+The value of the variable @env{PROMPT_COMMAND} is examined just before
+Bash prints each primary prompt.  If @env{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:
+
+@table @code
+@item \a
+A bell character.
+@item \d
+The date, in "Weekday Month Date" format (e.g., "Tue May 26").
+@item \D@{@var{format}@}
+The @var{format} is passed to @code{strftime}(3) and the result is inserted
+into the prompt string; an empty @var{format} results in a locale-specific
+time representation.  The braces are required.
+@item \e
+An escape character.
+@item \h
+The hostname, up to the first `.'.
+@item \H
+The hostname.
+@item \j
+The number of jobs currently managed by the shell.
+@item \l
+The basename of the shell's terminal device name.
+@item \n
+A newline.
+@item \r
+A carriage return.
+@item \s
+The name of the shell, the basename of @code{$0} (the portion
+following the final slash).
+@item \t
+The time, in 24-hour HH:MM:SS format.
+@item \T
+The time, in 12-hour HH:MM:SS format.
+@item \@@
+The time, in 12-hour am/pm format.
+@item \A
+The time, in 24-hour HH:MM format.
+@item \u
+The username of the current user.
+@item \v
+The version of Bash (e.g., 2.00)          
+@item \V
+The release of Bash, version + patchlevel (e.g., 2.00.0)
+@item \w
+The current working directory.
+@item \W
+The basename of @env{$PWD}.
+@item \!
+The history number of this command.
+@item \#
+The command number of this command.
+@item \$
+If the effective uid is 0, @code{#}, otherwise @code{$}.
+@item \@var{nnn}
+The character whose ASCII code is the octal value @var{nnn}.
+@item \\
+A backslash.
+@item \[
+Begin a sequence of non-printing characters.  This could be used to
+embed a terminal control sequence into the prompt.
+@item \]
+End a sequence of non-printing characters.
+@end table
+
+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
+(@pxref{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
+parameter expansion, command substitution, arithmetic
+expansion, and quote removal, subject to the value of the
+@code{promptvars} shell option (@pxref{Bash Builtins}).
+
+@node The Restricted Shell
+@section The Restricted Shell
+@cindex restricted shell
+
+If Bash is started with the name @code{rbash}, or the
+@option{--restricted}
+or
+@option{-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 @code{bash}
+with the exception that the following are disallowed or not performed:
+
+@itemize @bullet
+@item
+Changing directories with the @code{cd} builtin.
+@item
+Setting or unsetting the values of the @env{SHELL}, @env{PATH},
+@env{ENV}, or @env{BASH_ENV} variables.
+@item
+Specifying command names containing slashes.
+@item
+Specifying a filename containing a slash as an argument to the @code{.}
+builtin command.
+@item
+Specifying a filename containing a slash as an argument to the @option{-p}
+option to the @code{hash} builtin command.
+@item
+Importing function definitions from the shell environment at startup.
+@item
+Parsing the value of @env{SHELLOPTS} from the shell environment at startup.
+@item
+Redirecting output using the @samp{>}, @samp{>|}, @samp{<>}, @samp{>&},
+@samp{&>}, and @samp{>>} redirection operators.
+@item
+Using the @code{exec} builtin to replace the shell with another command.
+@item
+Adding or deleting builtin commands with the
+@option{-f} and @option{-d} options to the @code{enable} builtin.
+@item
+Using the @code{enable} builtin command to enable disabled shell builtins.
+@item
+Specifying the @option{-p} option to the @code{command} builtin.
+@item
+Turning off restricted mode with @samp{set +r} or @samp{set +o restricted}.
+@end itemize
+
+These restrictions are enforced after any startup files are read.
+
+When a command that is found to be a shell script is executed
+(@pxref{Shell Scripts}), @code{rbash} turns off any restrictions in
+the shell spawned to execute the script.
+
+@node Bash POSIX Mode
+@section Bash POSIX Mode
+@cindex POSIX Mode
+
+Starting Bash with the @option{--posix} command-line option or executing
+@samp{set -o posix} while Bash is running will cause Bash to conform more
+closely to the @sc{posix} 1003.2 standard by changing the behavior to
+match that specified by @sc{posix} in areas where the Bash default differs.
+
+When invoked as @code{sh}, Bash enters @sc{posix} mode after reading the
+startup files.
+
+The following list is what's changed when `@sc{posix} mode' is in effect:
+
+@enumerate
+@item
+When a command in the hash table no longer exists, Bash will re-search
+@env{$PATH} to find the new location.  This is also available with
+@samp{shopt -s checkhash}.
+
+@item
+The message printed by the job control code and builtins when a job
+exits with a non-zero status is `Done(status)'.
+
+@item
+The message printed by the job control code and builtins when a job
+is stopped is `Stopped(@var{signame})', where @var{signame} is, for
+example, @code{SIGTSTP}.
+
+@item
+Reserved words may not be aliased.
+
+@item
+The @sc{posix} 1003.2 @env{PS1} and @env{PS2} expansions of @samp{!} to
+the history number and @samp{!!} to @samp{!} are enabled,
+and parameter expansion is performed on the values of @env{PS1} and
+@env{PS2} regardless of the setting of the @code{promptvars} option.
+
+@item
+Interactive comments are enabled by default.  (Bash has them on by
+default anyway.)
+
+@item
+The @sc{posix} 1003.2 startup files are executed (@env{$ENV}) rather than
+the normal Bash files.
+
+@item
+Tilde expansion is only performed on assignments preceding a command
+name, rather than on all assignment statements on the line.
+
+@item
+The default history file is @file{~/.sh_history} (this is the
+default value of @env{$HISTFILE}).
+
+@item
+The output of @samp{kill -l} prints all the signal names on a single line,
+separated by spaces.
+
+@item
+Non-interactive shells exit if @var{filename} in @code{.} @var{filename}
+is not found.
+
+@item
+Non-interactive shells exit if a syntax error in an arithmetic expansion
+results in an invalid expression.
+
+@item
+Redirection operators do not perform filename expansion on the word
+in the redirection unless the shell is interactive.
+
+@item
+Redirection operators do not perform word splitting on the word in the
+redirection.
+
+@item
+Function names must be valid shell @code{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.
+
+@item
+@sc{posix} 1003.2 `special' builtins are found before shell functions
+during command lookup.
+
+@item
+If a @sc{posix} 1003.2 special builtin returns an error status, a
+non-interactive shell exits.  The fatal errors are those listed in
+the POSIX.2 standard, and include things like passing incorrect options,
+redirection errors, variable assignment errors for assignments preceding
+the command name, and so on.
+
+@item
+If the @code{cd} builtin finds a directory to change to
+using @env{$CDPATH}, the
+value it assigns to the @env{PWD} variable does not contain any
+symbolic links, as if @samp{cd -P} had been executed.
+
+@item
+If @env{CDPATH} is set, the @code{cd} builtin will not implicitly
+append the current directory to it.  This means that @code{cd} will
+fail if no valid directory name can be constructed from
+any of the entries in @env{$CDPATH}, even if the a directory with
+the same name as the name given as an argument to @code{cd} exists
+in the current directory.
+
+@item
+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.
+
+@item
+A non-interactive shell exits with an error status if the iteration
+variable in a @code{for} statement or the selection variable in a
+@code{select} statement is a readonly variable.
+
+@item
+Process substitution is not available.
+
+@item
+Assignment statements preceding @sc{posix} 1003.2 special builtins
+persist in the shell environment after the builtin completes.
+
+@item
+Assignment statements preceding shell function calls persist in the
+shell environment after the function returns, as if a @sc{posix}
+special builtin command had been executed.
+
+@item
+The @code{export} and @code{readonly} builtin commands display their
+output in the format required by @sc{posix} 1003.2.
+
+@item
+The @code{trap} builtin displays signal names without the leading
+@code{SIG}.
+
+@item
+The @code{.} and @code{source} builtins do not search the current directory
+for the filename argument if it is not found by searching @env{PATH}.
+
+@item
+Subshells spawned to execute command substitutions inherit the value of
+the @option{-e} option from the parent shell.  When not in @sc{posix} mode,
+Bash clears the @option{-e} option in such subshells.
+
+@item
+Alias expansion is always enabled, even in non-interactive shells.
+
+@item
+When the @code{set} builtin is invoked without options, it does not display
+shell function names and definitions.
+
+@item
+When the @code{set} builtin is invoked without options, it displays
+variable values without quotes, unless they contain shell metacharacters,
+even if the result contains nonprinting characters.
+
+@item
+When the @code{cd} builtin is invoked in @var{logical} mode, and the pathname
+constructed from @code{$PWD} and the directory name supplied as an argument
+does not refer to an existing directory, @code{cd} will fail instead of
+falling back to @var{physical} mode.
+@end enumerate
+
+There is other @sc{posix} 1003.2 behavior that Bash does not implement.
+Specifically:
+
+@enumerate
+@item
+Assignment statements affect the execution environment of all
+builtins, not just special ones.
+
+@item
+When a subshell is created to execute a shell script with execute permission,
+but without a leading @samp{#!}, Bash sets @code{$0} to the full pathname of
+the script as found by searching @code{$PATH}, rather than the command as
+typed by the user.
+
+@item
+When using @samp{.} to source a shell script found in @code{$PATH}, bash
+checks execute permission bits rather than read permission bits, just as
+if it were searching for a command.
+
+@end enumerate
+
+@node Job Control
+@chapter Job Control
+
+This chapter discusses what job control is, how it works, and how
+Bash allows you to access its facilities.
+
+@menu
+* Job Control Basics::         How job control works.
+* Job Control Builtins::       Bash builtin commands used to interact
+                               with job control.
+* Job Control Variables::      Variables Bash uses to customize job
+                               control.
+@end menu
+
+@node Job Control Basics
+@section Job Control Basics
+@cindex job control
+@cindex foreground
+@cindex background
+@cindex suspending jobs
+
+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 system's terminal driver and Bash.
+
+The shell associates a @var{job} with each pipeline.  It keeps a
+table of currently executing jobs, which may be listed with the
+@code{jobs} command.  When Bash starts a job
+asynchronously, it prints a line that looks
+like:
+@example
+[1] 25647
+@end example
+@noindent
+indicating that this job is job number 1 and that the process @sc{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 @var{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 @sc{id}.  Members of this process group (processes whose
+process group @sc{id} is equal to the current terminal process group
+@sc{id}) receive keyboard-generated signals such as @code{SIGINT}. 
+These processes are said to be in the foreground.  Background
+processes are those whose process group @sc{id} differs from the
+terminal's; such processes are immune to keyboard-generated
+signals.  Only foreground processes are allowed to read from or
+write to the terminal.  Background processes which attempt to
+read from (write to) the terminal are sent a @code{SIGTTIN}
+(@code{SIGTTOU}) signal by the 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
+@var{suspend} character (typically @samp{^Z}, Control-Z) while a
+process is running causes that process to be stopped and returns
+control to Bash.  Typing the @var{delayed suspend} character
+(typically @samp{^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 @code{bg} command to continue it in the
+background, the @code{fg} command to continue it in the
+foreground, or the @code{kill} command to kill it.  A @samp{^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 @samp{%} introduces a job name.
+
+Job number @code{n} may be referred to as @samp{%n}.
+The symbols @samp{%%} and
+@samp{%+} 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.  The
+previous job may be referenced using @samp{%-}.  In output
+pertaining to jobs (e.g., the output of the @code{jobs} command),
+the current job is always flagged with a @samp{+}, and the
+previous job with a @samp{-}. 
+
+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, @samp{%ce} refers
+to a stopped @code{ce} job. Using @samp{%?ce}, on the
+other hand, refers to any job containing the string @samp{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:
+@samp{%1} is a synonym for @samp{fg %1}, bringing job 1 from the
+background into the foreground.  Similarly, @samp{%1 &} resumes
+job 1 in the background, equivalent to @samp{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 @option{-b} option to the @code{set} builtin is enabled,
+Bash reports such changes immediately (@pxref{The Set Builtin}).
+Any trap on @code{SIGCHLD} is executed for each child process
+that exits.
+
+If an attempt to exit Bash is while jobs are stopped, the
+shell prints a message warning that there are stopped jobs.
+The @code{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 the stopped jobs are terminated.
+
+@node Job Control Builtins
+@section Job Control Builtins
+
+@table @code
+
+@item bg
+@btindex bg
+@example
+bg [@var{jobspec}]
+@end example
+Resume the suspended job @var{jobspec} in the background, as if it
+had been started with @samp{&}.
+If @var{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, if @var{jobspec} was
+not found or @var{jobspec} specifies a job that was started without
+job control.
+
+@item fg
+@btindex fg
+@example
+fg [@var{jobspec}]
+@end example
+Resume the job @var{jobspec} in the foreground and make it the current job.
+If @var{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, @var{jobspec} does not specify a valid job or
+@var{jobspec} specifies a job that was started without job control.
+
+@item jobs
+@btindex jobs
+@example
+jobs [-lnprs] [@var{jobspec}]
+jobs -x @var{command} [@var{arguments}]
+@end example
+
+The first form lists the active jobs.  The options have the
+following meanings:
+
+@table @code
+@item -l
+List process @sc{id}s in addition to the normal information.
+
+@item -n
+Display information only about jobs that have changed status since
+the user was last notified of their status.
+
+@item -p
+List only the process @sc{id} of the job's process group leader.
+
+@item -r
+Restrict output to running jobs.
+
+@item -s
+Restrict output to stopped jobs.
+@end table
+
+If @var{jobspec} is given,
+output is restricted to information about that job. 
+If @var{jobspec} is not supplied, the status of all jobs is
+listed.
+
+If the @option{-x} option is supplied, @code{jobs} replaces any
+@var{jobspec} found in @var{command} or @var{arguments} with the
+corresponding process group @sc{id}, and executes @var{command},
+passing it @var{argument}s, returning its exit status. 
+
+@item kill
+@btindex kill
+@example
+kill [-s @var{sigspec}] [-n @var{signum}] [-@var{sigspec}] @var{jobspec} or @var{pid}
+kill -l [@var{exit_status}]
+@end example
+Send a signal specified by @var{sigspec} or @var{signum} to the process
+named by job specification @var{jobspec} or process @sc{id} @var{pid}.
+@var{sigspec} is either a signal name such as @code{SIGINT} (with or without
+the @code{SIG} prefix) or a signal number; @var{signum} is a signal number.
+If @var{sigspec} and @var{signum} are not present, @code{SIGTERM} is used.
+The @option{-l} option lists the signal names.
+If any arguments are supplied when @option{-l} is given, the names of the
+signals corresponding to the arguments are listed, and the return status
+is zero.
+@var{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.
+
+@item wait
+@btindex wait
+@example
+wait [@var{jobspec} or @var{pid}]
+@end example
+Wait until the child process specified by process @sc{id} @var{pid} or job
+specification @var{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 neither @var{jobspec} nor @var{pid} specifies an active child process
+of the shell, the return status is 127.
+
+@item disown
+@btindex disown
+@example
+disown [-ar] [-h] [@var{jobspec} @dots{}]
+@end example
+Without options, each @var{jobspec} is removed from the table of
+active jobs.
+If the @option{-h} option is given, the job is not removed from the table,
+but is marked so that @code{SIGHUP} is not sent to the job if the shell
+receives a @code{SIGHUP}.
+If @var{jobspec} is not present, and neither the @option{-a} nor @option{-r}
+option is supplied, the current job is used.
+If no @var{jobspec} is supplied, the @option{-a} option means to remove or
+mark all jobs; the @option{-r} option without a @var{jobspec}
+argument restricts operation to running jobs.
+
+@item suspend
+@btindex suspend
+@example
+suspend [-f]
+@end example
+Suspend the execution of this shell until it receives a
+@code{SIGCONT} signal.  The @option{-f} option means to suspend
+even if the shell is a login shell.
+
+@end table
+
+When job control is not active, the @code{kill} and @code{wait}
+builtins do not accept @var{jobspec} arguments.  They must be
+supplied process @sc{id}s.
+
+@node Job Control Variables
+@section Job Control Variables
+
+@vtable @code
+
+@item 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 @samp{exact},
+the string supplied must match the name of a stopped job exactly;
+if set to @samp{substring},
+the string supplied needs to match a substring of the name of a
+stopped job.  The @samp{substring} value provides functionality
+analogous to the @samp{%?} job @sc{id} (@pxref{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 @samp{%} job @sc{id}.
+
+@end vtable
+
+@set readline-appendix
+@set history-appendix
+@cindex Readline, how to use
+@include rluser.texi
+@cindex History, how to use
+@include hsuser.texi
+@clear readline-appendix
+@clear history-appendix
+
+@node Installing Bash
+@chapter Installing Bash
+
+This chapter provides basic instructions for installing Bash on
+the various supported platforms.  The distribution supports the
+@sc{gnu} operating systems, nearly every version of Unix, and several
+non-Unix systems such as BeOS and Interix.
+Other independent ports exist for
+@sc{ms-dos}, @sc{os/2}, Windows @sc{95/98}, and Windows @sc{nt}.
+
+@menu
+* Basic Installation:: Installation instructions.
+
+* Compilers and Options::      How to set special options for various
+                               systems.
+
+* Compiling For Multiple Architectures::       How to compile Bash for more
+                                               than one kind of system from
+                                               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.
+@end menu
+
+@node Basic Installation
+@section Basic Installation
+@cindex installation
+@cindex configuration
+@cindex Bash installation
+@cindex Bash configuration
+
+These are installation instructions for Bash.
+
+The simplest way to compile Bash is:
+
+@enumerate
+@item
+@code{cd} to the directory containing the source code and type
+@samp{./configure} to configure Bash for your system.  If you're
+using @code{csh} on an old version of System V, you might need to
+type @samp{sh ./configure} instead to prevent @code{csh} from trying
+to execute @code{configure} itself.
+
+Running @code{configure} takes some time.
+While running, it prints messages telling which features it is
+checking for.
+
+@item
+Type @samp{make} to compile Bash and build the @code{bashbug} bug
+reporting script.
+
+@item
+Optionally, type @samp{make tests} to run the Bash test suite.
+
+@item
+Type @samp{make install} to install @code{bash} and @code{bashbug}.
+This will also install the manual pages and Info file.
+
+@end enumerate
+
+The @code{configure} shell script attempts to guess correct
+values for various system-dependent variables used during
+compilation.  It uses those values to create a @file{Makefile} in
+each directory of the package (the top directory, the
+@file{builtins}, @file{doc}, and @file{support} directories,
+each directory under @file{lib}, and several others).  It also creates a
+@file{config.h} file containing system-dependent definitions. 
+Finally, it creates a shell script named @code{config.status} that you
+can run in the future to recreate the current configuration, a
+file @file{config.cache} that saves the results of its tests to
+speed up reconfiguring, and a file @file{config.log} containing
+compiler output (useful mainly for debugging @code{configure}). 
+If at some point
+@file{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
+@code{configure} script understands, type 
+
+@example
+bash-2.04$ ./configure --help
+@end example
+
+@noindent
+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 @code{configure} could check whether or not
+to do them, and mail diffs or instructions to
+@email{bash-maintainers@@gnu.org} so they can be
+considered for the next release.
+
+The file @file{configure.in} is used to create @code{configure}
+by a program called Autoconf.  You only need
+@file{configure.in} if you want to change it or regenerate
+@code{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 @samp{make clean}.  To also remove the
+files that @code{configure} created (so you can compile Bash for
+a different kind of computer), type @samp{make distclean}.
+
+@node Compilers and Options
+@section Compilers and Options
+
+Some systems require unusual options for compilation or linking
+that the @code{configure} script does not know about.  You can
+give @code{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:
+
+@example
+CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+@end example
+
+On systems that have the @code{env} program, you can do it like this:
+
+@example
+env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+@end example
+
+The configuration process uses GCC to build Bash if it
+is available.
+
+@node Compiling For Multiple Architectures
+@section Compiling For Multiple Architectures
+
+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 @code{make} that
+supports the @code{VPATH} variable, such as GNU @code{make}.
+@code{cd} to the
+directory where you want the object files and executables to go and run
+the @code{configure} script from the source directory.  You may need to
+supply the @option{--srcdir=PATH} argument to tell @code{configure} where the
+source files are.  @code{configure} automatically checks for the
+source code in the directory that @code{configure} is in and in `..'.
+
+If you have to use a @code{make} that does not supports the @code{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 @samp{make distclean} before
+reconfiguring for another architecture.
+
+Alternatively, if your system supports symbolic links, you can use the
+@file{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 @file{/usr/gnu/src/bash-2.0}:
+
+@example
+bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
+@end example
+
+@noindent
+The @code{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.
+
+@node Installation Names
+@section Installation Names
+
+By default, @samp{make install} will install into
+@file{/usr/local/bin}, @file{/usr/local/man}, etc.  You can
+specify an installation prefix other than @file{/usr/local} by
+giving @code{configure} the option @option{--prefix=@var{PATH}},
+or by specifying a value for the @code{DESTDIR} @samp{make}
+variable when running @samp{make install}.
+
+You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. 
+If you give @code{configure} the option
+@option{--exec-prefix=@var{PATH}}, @samp{make install} will use
+@var{PATH} as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix. 
+
+@node Specifying the System Type
+@section Specifying the System Type
+
+There may be some features @code{configure} can not figure out
+automatically, but need to determine by the type of host Bash
+will run on.  Usually @code{configure} can figure that
+out, but if it prints a message saying it can not guess the host
+type, give it the @option{--host=TYPE} option.  @samp{TYPE} can
+either be a short name for the system type, such as @samp{sun4},
+or a canonical name with three fields: @samp{CPU-COMPANY-SYSTEM}
+(e.g., @samp{i386-unknown-freebsd4.2}).
+
+See the file @file{support/config.sub} for the possible
+values of each field. 
+
+@node Sharing Defaults
+@section Sharing Defaults
+
+If you want to set default values for @code{configure} scripts to
+share, you can create a site shell script called
+@code{config.site} that gives default values for variables like
+@code{CC}, @code{cache_file}, and @code{prefix}.  @code{configure}
+looks for @file{PREFIX/share/config.site} if it exists, then
+@file{PREFIX/etc/config.site} if it exists.  Or, you can set the
+@code{CONFIG_SITE} environment variable to the location of the site
+script.  A warning: the Bash @code{configure} looks for a site script,
+but not all @code{configure} scripts do.
+
+@node Operation Controls
+@section Operation Controls
+
+@code{configure} recognizes the following options to control how it
+operates.
+
+@table @code
+
+@item --cache-file=@var{file}
+Use and save the results of the tests in
+@var{file} instead of @file{./config.cache}.  Set @var{file} to
+@file{/dev/null} to disable caching, for debugging
+@code{configure}. 
+
+@item --help
+Print a summary of the options to @code{configure}, and exit.
+
+@item --quiet
+@itemx --silent
+@itemx -q
+Do not print messages saying which checks are being made.
+
+@item --srcdir=@var{dir}
+Look for the Bash source code in directory @var{dir}.  Usually
+@code{configure} can determine that directory automatically.
+
+@item --version
+Print the version of Autoconf used to generate the @code{configure}
+script, and exit.
+@end table
+
+@code{configure} also accepts some other, not widely used, boilerplate
+options.  @samp{configure --help} prints the complete list.
+
+@node Optional Features
+@section Optional Features
+
+The Bash @code{configure} has a number of @option{--enable-@var{feature}}
+options, where @var{feature} indicates an optional part of Bash.
+There are also several @option{--with-@var{package}} options,
+where @var{package} is something like @samp{bash-malloc} or @samp{purify}.
+To turn off the default use of a package, use
+@option{--without-@var{package}}.  To configure Bash without a feature
+that is enabled by default, use @option{--disable-@var{feature}}.
+
+Here is a complete list of the @option{--enable-} and
+@option{--with-} options that the Bash @code{configure} recognizes. 
+
+@table @code
+@item --with-afs
+Define if you are using the Andrew File System from Transarc.
+
+@item --with-bash-malloc
+Use the Bash version of
+@code{malloc} in @file{lib/malloc/malloc.c}.  This is not the same
+@code{malloc} that appears in @sc{gnu} libc, but an older version
+derived from the 4.2 @sc{bsd} @code{malloc}.  This @code{malloc} is
+very fast, but wastes some space on each allocation.
+This option is enabled by default.
+The @file{NOTES} file contains a list of systems for
+which this should be turned off, and @code{configure} disables this
+option automatically for a number of systems.
+
+@item --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.
+
+@item --with-gnu-malloc
+A synonym for @code{--with-bash-malloc}.
+
+@item --with-installed-readline[=@var{PREFIX}]
+Define this to make Bash link with a locally-installed version of Readline
+rather than the version in @file{lib/readline}.  This works only with
+Readline 4.3 and later versions.  If @var{PREFIX} is @code{yes} or not
+supplied, @code{configure} uses the values of the make variables
+@code{includedir} and @code{libdir}, which are subdirectories of @code{prefix}
+by default, to find the installed version of Readline if it is not in
+the standard system include and library directories.
+If @var{PREFIX} is @code{no}, Bash links with the version in
+@file{lib/readline}.
+If @var{PREFIX} is set to any other value, @code{configure} treats it as
+a directory pathname and looks for
+the installed version of Readline in subdirectories of that directory
+(include files in @var{PREFIX}/@code{include} and the library in
+@var{PREFIX}/@code{lib}).
+
+@item --with-purify
+Define this to use the Purify memory allocation checker from Rational
+Software.
+
+@item --enable-minimal-config
+This produces a shell with minimal features, close to the historical
+Bourne shell.
+@end table
+
+There are several @option{--enable-} options that alter how Bash is
+compiled and linked, rather than changing run-time features.
+
+@table @code
+@item --enable-largefile
+Enable support for @uref{http://www.sas.com/standards/large_file/x_open.20Mar96.html,
+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.
+
+@item --enable-profiling
+This builds a Bash binary that produces profiling information to be
+processed by @code{gprof} each time it is executed.
+
+@item --enable-static-link
+This causes Bash to be linked statically, if @code{gcc} is being used.
+This could be used to build a version to use as root's shell.
+@end table
+
+The @samp{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 @samp{enable-@var{feature}}. 
+
+All of the following options except for @samp{disabled-builtins} and
+@samp{xpg-echo-default} are
+enabled by default, unless the operating system does not provide the
+necessary support.
+
+@table @code
+@item --enable-alias
+Allow alias expansion and include the @code{alias} and @code{unalias}
+builtins (@pxref{Aliases}).
+
+@item --enable-arith-for-command
+Include support for the alternate form of the @code{for} command
+that behaves like the C language @code{for} statement
+(@pxref{Looping Constructs}).
+
+@item --enable-array-variables
+Include support for one-dimensional array shell variables
+(@pxref{Arrays}).
+
+@item --enable-bang-history
+Include support for @code{csh}-like history substitution
+(@pxref{History Interaction}).
+
+@item --enable-brace-expansion
+Include @code{csh}-like brace expansion
+( @code{b@{a,b@}c} @expansion{} @code{bac bbc} ).
+See @ref{Brace Expansion}, for a complete description.
+
+@item --enable-command-timing
+Include support for recognizing @code{time} as a reserved word and for
+displaying timing statistics for the pipeline following @code{time}
+(@pxref{Pipelines}).
+This allows pipelines as well as shell builtins and functions to be timed.
+
+@item --enable-cond-command
+Include support for the @code{[[} conditional command
+(@pxref{Conditional Constructs}).
+
+@item --enable-directory-stack
+Include support for a @code{csh}-like directory stack and the
+@code{pushd}, @code{popd}, and @code{dirs} builtins
+(@pxref{The Directory Stack}).
+
+@item --enable-disabled-builtins
+Allow builtin commands to be invoked via @samp{builtin xxx}
+even after @code{xxx} has been disabled using @samp{enable -n xxx}.
+See @ref{Bash Builtins}, for details of the @code{builtin} and
+@code{enable} builtin commands.
+
+@item --enable-dparen-arithmetic
+Include support for the @code{((@dots{}))} command
+(@pxref{Conditional Constructs}).
+
+@item --enable-extended-glob
+Include support for the extended pattern matching features described
+above under @ref{Pattern Matching}.
+
+@item --enable-help-builtin
+Include the @code{help} builtin, which displays help on shell builtins and
+variables (@pxref{Bash Builtins}).
+
+@item --enable-history
+Include command history and the @code{fc} and @code{history}
+builtin commands (@pxref{Bash History Facilities}).
+
+@item --enable-job-control
+This enables the job control features (@pxref{Job Control}),
+if the operating system supports them.
+
+@item --enable-multibyte
+This enables support for multibyte characters if the operating
+system provides the necessary support.
+
+@item --enable-net-redirections
+This enables the special handling of filenames of the form
+@code{/dev/tcp/@var{host}/@var{port}} and
+@code{/dev/udp/@var{host}/@var{port}}
+when used in redirections (@pxref{Redirections}).
+
+@item --enable-process-substitution
+This enables process substitution (@pxref{Process Substitution}) if
+the operating system provides the necessary support.
+
+@item --enable-prompt-string-decoding
+Turn on the interpretation of a number of backslash-escaped characters
+in the @env{$PS1}, @env{$PS2}, @env{$PS3}, and @env{$PS4} prompt
+strings.  See @ref{Printing a Prompt}, for a complete list of prompt
+string escape sequences.
+
+@item --enable-progcomp
+Enable the programmable completion facilities
+(@pxref{Programmable Completion}).
+If Readline is not enabled, this option has no effect.
+
+@item --enable-readline
+Include support for command-line editing and history with the Bash
+version of the Readline library (@pxref{Command Line Editing}).
+
+@item --enable-restricted
+Include support for a @dfn{restricted shell}.  If this is enabled, Bash,
+when called as @code{rbash}, enters a restricted mode.  See
+@ref{The Restricted Shell}, for a description of restricted mode.
+
+@item --enable-select
+Include the @code{select} builtin, which allows the generation of simple
+menus (@pxref{Conditional Constructs}).
+
+@item --enable-usg-echo-default
+A synonym for @code{--enable-xpg-echo-default}.
+
+@item --enable-xpg-echo-default
+Make the @code{echo} builtin expand backslash-escaped characters by default,
+without requiring the @option{-e} option.
+This sets the default value of the @code{xpg_echo} shell option to @code{on},
+which makes the Bash @code{echo} behave more like the version specified in
+the Single Unix Specification, version 2.
+@xref{Bash Builtins}, for a description of the escape sequences that
+@code{echo} recognizes.
+
+@end table
+
+The file @file{config-top.h} contains C Preprocessor
+@samp{#define} statements for options which are not settable from
+@code{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.
+
+@node Reporting Bugs
+@appendix 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
+@uref{ftp://ftp.gnu.org/pub/bash/}.
+
+Once you have determined that a bug actually exists, use the
+@code{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 @email{bug-bash@@gnu.org} or posted to the Usenet
+newsgroup @code{gnu.bash.bug}.
+
+All bug reports should include:
+@itemize @bullet
+@item
+The version number of Bash.
+@item
+The hardware and operating system.
+@item
+The compiler used to compile Bash.
+@item
+A description of the bug behaviour.
+@item
+A short script or `recipe' which exercises the bug and may be used
+to reproduce it.
+@end itemize
+
+@noindent
+@code{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
+@email{chet@@po.CWRU.Edu}.
+
+@node Major Differences From The Bourne Shell
+@appendix Major Differences From The Bourne Shell
+
+Bash implements essentially the same grammar, parameter and
+variable expansion, redirection, and quoting as the Bourne Shell. 
+Bash uses the @sc{posix} 1003.2 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 @code{sh} included in SVR4.2 as
+the baseline reference.
+
+@itemize @bullet
+
+@item
+Bash is @sc{posix}-conformant, even where the @sc{posix} specification
+differs from traditional @code{sh} behavior (@pxref{Bash POSIX Mode}).
+
+@item
+Bash has multi-character invocation options (@pxref{Invoking Bash}).
+
+@item
+Bash has command-line editing (@pxref{Command Line Editing}) and
+the @code{bind} builtin.
+
+@item
+Bash provides a programmable word completion mechanism
+(@pxref{Programmable Completion}), and two builtin commands,
+@code{complete} and @code{compgen}, to manipulate it.
+
+@item
+Bash has command history (@pxref{Bash History Facilities}) and the
+@code{history} and @code{fc} builtins to manipulate it.
+
+@item
+Bash implements @code{csh}-like history expansion
+(@pxref{History Interaction}).
+
+@item
+Bash has one-dimensional array variables (@pxref{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.
+
+@item
+The @code{$'@dots{}'} quoting syntax, which expands ANSI-C
+backslash-escaped characters in the text between the single quotes,
+is supported (@pxref{ANSI-C Quoting}).
+
+@item
+Bash supports the @code{$"@dots{}"} quoting syntax to do
+locale-specific translation of the characters between the double
+quotes.  The @option{-D}, @option{--dump-strings}, and @option{--dump-po-strings}
+invocation options list the translatable strings found in a script
+(@pxref{Locale Translation}).
+
+@item
+Bash implements the @code{!} keyword to negate the return value of
+a pipeline (@pxref{Pipelines}).
+Very useful when an @code{if} statement needs to act only if a test fails.
+
+@item
+Bash has the @code{time} reserved word and command timing (@pxref{Pipelines}).
+The display of the timing statistics may be controlled with the
+@env{TIMEFORMAT} variable.
+
+@item
+Bash implements the @code{for (( @var{expr1} ; @var{expr2} ; @var{expr3} ))}
+arithmetic for command, similar to the C language (@pxref{Looping Constructs}).
+
+@item
+Bash includes the @code{select} compound command, which allows the
+generation of simple menus (@pxref{Conditional Constructs}).
+
+@item
+Bash includes the @code{[[} compound command, which makes conditional
+testing part of the shell grammar (@pxref{Conditional Constructs}).
+
+@item
+Bash includes brace expansion (@pxref{Brace Expansion}) and tilde
+expansion (@pxref{Tilde Expansion}).
+
+@item
+Bash implements command aliases and the @code{alias} and @code{unalias}
+builtins (@pxref{Aliases}).
+
+@item
+Bash provides shell arithmetic, the @code{((} compound command
+(@pxref{Conditional Constructs}),
+and arithmetic expansion (@pxref{Shell Arithmetic}).
+
+@item
+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 @code{export}
+command.
+
+@item
+Bash includes the @sc{posix} pattern removal @samp{%}, @samp{#}, @samp{%%}
+and @samp{##} expansions to remove leading or trailing substrings from
+variable values (@pxref{Shell Parameter Expansion}).
+
+@item
+The expansion @code{$@{#xx@}}, which returns the length of @code{$@{xx@}},
+is supported (@pxref{Shell Parameter Expansion}).
+
+@item
+The expansion @code{$@{var:}@var{offset}@code{[:}@var{length}@code{]@}},
+which expands to the substring of @code{var}'s value of length
+@var{length}, beginning at @var{offset}, is present
+(@pxref{Shell Parameter Expansion}).
+
+@item
+The expansion
+@code{$@{var/[/]}@var{pattern}@code{[/}@var{replacement}@code{]@}},
+which matches @var{pattern} and replaces it with @var{replacement} in
+the value of @code{var}, is available (@pxref{Shell Parameter Expansion}).
+
+@item
+The expansion @code{$@{!@var{prefix@}*}} expansion, which expands to
+the names of all shell variables whose names begin with @var{prefix},
+is available (@pxref{Shell Parameter Expansion}).
+
+@item
+Bash has @var{indirect} variable expansion using @code{$@{!word@}}
+(@pxref{Shell Parameter Expansion}).
+
+@item
+Bash can expand positional parameters beyond @code{$9} using
+@code{$@{@var{num}@}}.
+
+@item
+The @sc{posix} @code{$()} form of command substitution
+is implemented (@pxref{Command Substitution}),
+and preferred to the Bourne shell's @code{``} (which
+is also implemented for backwards compatibility).
+
+@item
+Bash has process substitution (@pxref{Process Substitution}).
+
+@item
+Bash automatically assigns variables that provide information about the
+current user (@env{UID}, @env{EUID}, and @env{GROUPS}), the current host
+(@env{HOSTTYPE}, @env{OSTYPE}, @env{MACHTYPE}, and @env{HOSTNAME}),
+and the instance of Bash that is running (@env{BASH},
+@env{BASH_VERSION}, and @env{BASH_VERSINFO}).  @xref{Bash Variables},
+for details.
+
+@item
+The @env{IFS} variable is used to split only the results of expansion,
+not all words (@pxref{Word Splitting}).
+This closes a longstanding shell security hole.
+
+@item
+Bash implements the full set of @sc{posix} 1003.2 filename expansion operators,
+including @var{character classes}, @var{equivalence classes}, and
+@var{collating symbols} (@pxref{Filename Expansion}).
+
+@item
+Bash implements extended pattern matching features when the @code{extglob}
+shell option is enabled (@pxref{Pattern Matching}).
+
+@item
+It is possible to have a variable and a function with the same name;
+@code{sh} does not separate the two name spaces.
+
+@item
+Bash functions are permitted to have local variables using the
+@code{local} builtin, and thus useful recursive functions may be written
+(@pxref{Bash Builtins}).
+
+@item
+Variable assignments preceding commands affect only that command, even
+builtins and functions (@pxref{Environment}).
+In @code{sh}, all variable assignments 
+preceding commands are global unless the command is executed from the
+file system.
+
+@item
+Bash performs filename expansion on filenames specified as operands
+to input and output redirection operators (@pxref{Redirections}).
+
+@item
+Bash contains the @samp{<>} redirection operator, allowing a file to be
+opened for both reading and writing, and the @samp{&>} redirection
+operator, for directing standard output and standard error to the same
+file (@pxref{Redirections}).
+
+@item
+Bash treats a number of filenames specially when they are
+used in redirection operators (@pxref{Redirections}).
+
+@item
+Bash can open network connections to arbitrary machines and services
+with the redirection operators (@pxref{Redirections}).
+
+@item
+The @code{noclobber} option is available to avoid overwriting existing
+files with output redirection (@pxref{The Set Builtin}).
+The @samp{>|} redirection operator may be used to override @code{noclobber}.
+
+@item
+The Bash @code{cd} and @code{pwd} builtins (@pxref{Bourne Shell Builtins})
+each take @option{-L} and @option{-P} options to switch between logical and
+physical modes.
+
+@item
+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
+@code{builtin} and @code{command} builtins (@pxref{Bash Builtins}).
+
+@item
+The @code{command} builtin allows selective disabling of functions
+when command lookup is performed (@pxref{Bash Builtins}).
+
+@item
+Individual builtins may be enabled or disabled using the @code{enable}
+builtin (@pxref{Bash Builtins}).
+
+@item
+The Bash @code{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
+(@pxref{Bourne Shell Builtins}).
+
+@item
+Shell functions may be exported to children via the environment
+using @code{export -f} (@pxref{Shell Functions}).
+
+@item
+The Bash @code{export}, @code{readonly}, and @code{declare} builtins can
+take a @option{-f} option to act on shell functions, a @option{-p} option to
+display variables with various attributes set in a format that can be
+used as shell input, a @option{-n} option to remove various variable
+attributes, and @samp{name=value} arguments to set variable attributes
+and values simultaneously.
+
+@item
+The Bash @code{hash} builtin allows a name to be associated with
+an arbitrary filename, even when that filename cannot be found by
+searching the @env{$PATH}, using @samp{hash -p}
+(@pxref{Bourne Shell Builtins}).
+
+@item
+Bash includes a @code{help} builtin for quick reference to shell
+facilities (@pxref{Bash Builtins}).
+
+@item
+The @code{printf} builtin is available to display formatted output
+(@pxref{Bash Builtins}).
+
+@item
+The Bash @code{read} builtin (@pxref{Bash Builtins})
+will read a line ending in @samp{\} with
+the @option{-r} option, and will use the @env{REPLY} variable as a
+default if no non-option arguments are supplied.
+The Bash @code{read} builtin
+also accepts a prompt string with the @option{-p} option and will use
+Readline to obtain the line when given the @option{-e} option.
+The @code{read} builtin also has additional options to control input:
+the @option{-s} option will turn off echoing of input characters as
+they are read, the @option{-t} option will allow @code{read} to time out
+if input does not arrive within a specified number of seconds, the
+@option{-n} option will allow reading only a specified number of
+characters rather than a full line, and the @option{-d} option will read
+until a particular character rather than newline.
+
+@item
+The @code{return} builtin may be used to abort execution of scripts
+executed with the @code{.} or @code{source} builtins
+(@pxref{Bourne Shell Builtins}).
+
+@item
+Bash includes the @code{shopt} builtin, for finer control of shell
+optional capabilities (@pxref{Bash Builtins}), and allows these options
+to be set and unset at shell invocation (@pxref{Invoking Bash}).
+
+@item
+Bash has much more optional behavior controllable with the @code{set}
+builtin (@pxref{The Set Builtin}).
+
+@item
+The @code{test} builtin (@pxref{Bourne Shell Builtins})
+is slightly different, as it implements the @sc{posix} algorithm,
+which specifies the behavior based on the number of arguments.
+
+@item
+The @code{trap} builtin (@pxref{Bourne Shell Builtins}) allows a
+@code{DEBUG} pseudo-signal specification, similar to @code{EXIT}.
+Commands specified with a @code{DEBUG} trap are executed before every
+simple command, @code{for} command, @code{case} command,
+@code{select} command, every arithmetic @code{for} command, and before
+the first command executes in a shell function.
+The @code{DEBUG} trap is not inherited by shell functions unless the
+function has been given the @code{trace} attribute or the
+@code{functrace} option has been enabled using the @code{shopt} builtin.
+The @code{extdebug} shell option has additional effects on the
+@code{DEBUG} trap.
+
+The @code{trap} builtin (@pxref{Bourne Shell Builtins}) allows an
+@code{ERR} pseudo-signal specification, similar to @code{EXIT} and @code{DEBUG}.
+Commands specified with an @code{ERR} trap are executed after a simple
+command fails, with a few exceptions.
+The @code{ERR} trap is not inherited by shell functions unless the
+@code{-o errtrace} option to the @code{set} builtin is enabled.
+
+The @code{trap} builtin (@pxref{Bourne Shell Builtins}) allows a
+@code{RETURN} pseudo-signal specification, similar to
+@code{EXIT} and @code{DEBUG}.
+Commands specified with an @code{RETURN} trap are executed before
+execution resumes after a shell function or a shell script executed with
+@code{.} or @code{source} returns.
+The @code{RETURN} trap is not inherited by shell functions.
+
+@item
+The Bash @code{type} builtin is more extensive and gives more information
+about the names it finds (@pxref{Bash Builtins}).
+
+@item
+The Bash @code{umask} builtin permits a @option{-p} option to cause
+the output to be displayed in the form of a @code{umask} command
+that may be reused as input (@pxref{Bourne Shell Builtins}).
+
+@item
+Bash implements a @code{csh}-like directory stack, and provides the
+@code{pushd}, @code{popd}, and @code{dirs} builtins to manipulate it
+(@pxref{The Directory Stack}).
+Bash also makes the directory stack visible as the value of the
+@env{DIRSTACK} shell variable.
+
+@item
+Bash interprets special backslash-escaped characters in the prompt
+strings when interactive (@pxref{Printing a Prompt}).
+
+@item
+The Bash restricted mode is more useful (@pxref{The Restricted Shell});
+the SVR4.2 shell restricted mode is too limited.
+
+@item
+The @code{disown} builtin can remove a job from the internal shell
+job table (@pxref{Job Control Builtins}) or suppress the sending
+of @code{SIGHUP} to a job when the shell exits as the result of a
+@code{SIGHUP}.
+
+@item
+The SVR4.2 shell has two privilege-related builtins
+(@code{mldmode} and @code{priv}) not present in Bash.
+
+@item
+Bash does not have the @code{stop} or @code{newgrp} builtins.
+
+@item
+Bash does not use the @env{SHACCT} variable or perform shell accounting.
+
+@item
+The SVR4.2 @code{sh} uses a @env{TIMEOUT} variable like Bash uses
+@env{TMOUT}.
+
+@end itemize
+
+@noindent
+More features unique to Bash may be found in @ref{Bash Features}.
+
+
+@appendixsec Implementation Differences From The SVR4.2 Shell
+
+Since Bash is a completely new implementation, it does not suffer from
+many of the limitations of the SVR4.2 shell.  For instance:
+
+@itemize @bullet
+
+@item
+Bash does not fork a subshell when redirecting into or out of
+a shell control structure such as  an @code{if} or @code{while}
+statement.
+
+@item
+Bash does not allow unbalanced quotes.  The SVR4.2 shell will silently
+insert a needed closing quote at @code{EOF} under certain circumstances.
+This can be the cause of some hard-to-find errors.
+
+@item
+The SVR4.2 shell uses a baroque memory management scheme based on
+trapping @code{SIGSEGV}.  If the shell is started from a process with
+@code{SIGSEGV} blocked (e.g., by using the @code{system()} C library
+function call), it misbehaves badly.
+
+@item
+In a questionable attempt at security, the SVR4.2 shell,
+when invoked without the @option{-p} option, will alter its real
+and effective @sc{uid} and @sc{gid} if they are less than some
+magic threshold value, commonly 100.
+This can lead to unexpected results.
+
+@item
+The SVR4.2 shell does not allow users to trap @code{SIGSEGV},
+@code{SIGALRM}, or @code{SIGCHLD}.
+
+@item
+The SVR4.2 shell does not allow the @env{IFS}, @env{MAILCHECK},
+@env{PATH}, @env{PS1}, or @env{PS2} variables to be unset.
+
+@item
+The SVR4.2 shell treats @samp{^} as the undocumented equivalent of
+@samp{|}.
+
+@item
+Bash allows multiple option arguments when it is invoked (@code{-x -v});
+the SVR4.2 shell allows only one option argument (@code{-xv}).  In
+fact, some versions of the shell dump core if the second argument begins
+with a @samp{-}.
+
+@item
+The SVR4.2 shell exits a script if any builtin fails; Bash exits
+a script only if one of the @sc{posix} 1003.2 special builtins fails, and
+only for certain failures, as enumerated in the @sc{posix} 1003.2 standard.
+
+@item 
+The SVR4.2 shell behaves differently when invoked as @code{jsh}
+(it turns on job control).
+@end itemize
+
+@node Copying This Manual
+@appendix Copying This Manual
+
+@menu
+* GNU Free Documentation License::      License for copying this manual.
+@end menu
+
+@include fdl.texi
+
+@node Builtin Index
+@unnumbered Index of Shell Builtin Commands
+@printindex bt
+
+@node Reserved Word Index
+@unnumbered Index of Shell Reserved Words
+@printindex rw
+
+@node Variable Index
+@unnumbered Parameter and Variable Index
+@printindex vr
+
+@node Function Index
+@unnumbered Function Index
+@printindex fn
+
+@node Concept Index
+@unnumbered Concept Index
+@printindex cp
+
+@bye
index e7dd3c8..8e04226 100644 (file)
@@ -474,12 +474,12 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               to _\bl_\ba_\bs_\bt is selected from the history list.  _\bF_\bi_\br_\bs_\bt and  _\bl_\ba_\bs_\bt  may
               be  specified  as a string (to locate the last 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 cur-
-              rent command number).  If _\bl_\ba_\bs_\bt is not specified it is set to the
-              current  command  for  listing (so that ``fc -l -10'' prints the
-              last 10 commands) and to _\bf_\bi_\br_\bs_\bt otherwise.  If _\bf_\bi_\br_\bs_\bt is not spec-
-              ified  it is set to the previous command for editing and -16 for
-              listing.
+              list,  where  a  negative  number  is used as an offset from the
+              current command number).  If _\bl_\ba_\bs_\bt is not specified it is set  to
+              the  current  command  for listing (so that ``fc -l -10'' prints
+              the last 10 commands) and to _\bf_\bi_\br_\bs_\bt otherwise.  If _\bf_\bi_\br_\bs_\bt  is  not
+              specified  it is set to the previous command for editing and -16
+              for listing.
 
               The -\b-n\bn option suppresses the command numbers when listing.   The
               -\b-r\br  option reverses the order of the commands.  If the -\b-l\bl option
@@ -1043,8 +1043,8 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       formed.
               c\bch\bhe\bec\bck\bkw\bwi\bin\bns\bsi\biz\bze\be
                       If  set,  b\bba\bas\bsh\bh checks the window size after each command
-                      and, if necessary, updates the values of L\bLI\bIN\bNE\bES\bS and  C\bCO\bOL\bL-\b-
-                      U\bUM\bMN\bNS\bS.
+                      and, if necessary,  updates  the  values  of  L\bLI\bIN\bNE\bES\bS  and
+                      C\bCO\bOL\bLU\bUM\bMN\bNS\bS.
               c\bcm\bmd\bdh\bhi\bis\bst\bt If  set,  b\bba\bas\bsh\bh attempts to save all lines of a multiple-
                       line command in the same  history  entry.   This  allows
                       easy re-editing of multi-line commands.
index ba6b767..0a877ce 100644 (file)
@@ -1,6 +1,6 @@
 %!PS-Adobe-3.0
 %%Creator: groff version 1.18.1
-%%CreationDate: Tue Jun 29 10:37:28 2004
+%%CreationDate: Mon Jul 19 16:04:16 2004
 %%DocumentNeededResources: font Times-Roman
 %%+ font Times-Bold
 %%+ font Times-Italic
diff --git a/doc/mkinstall-tmp b/doc/mkinstall-tmp
new file mode 100755 (executable)
index 0000000..37d7863
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+#
+# mkinstall - make the INSTALL file from the `Installing Bash' node of the
+#            texinfo manual
+#
+
+NODE="Installing Bash"
+SUBNODE="Basic Installation"
+TEXI=bashref.texi
+TMPINFO=temp.info
+TMPOUT=INSTALL.tmp
+
+OUT=${1:-INSTALL}
+
+trap 'rm -f $TMPOUT $TMPINFO $OUT; trap '' 0; exit 1' 1 2 3 6 15
+#trap 'rm -f $TMPOUT $TMPINFO' 0
+
+# create an info file without paragraph indentation
+makeinfo --no-split -I../lib/readline/doc --paragraph-indent 0 -o $TMPINFO $TEXI
+
+# write out the text from the `Installing Bash' node to INSTALL.tmp
+info --file $TMPINFO --node "$NODE" --subnodes --output $TMPOUT
+
+exit 0
+# remove the info traversal information and the initial menu, and squeeze
+# out multiple consecutive blank lines like `cat -s'
+awk 'BEGIN { printline = 0; newlines = 0; }
+
+/^File: '$TMPINFO'/    { next; }
+
+/^'"$SUBNODE"'/        { printline = 1; }
+
+/^$/                   { if (printline) newlines = 1; next; }
+
+/$/                    { if (printline) {
+                               if (newlines) {
+                                       printf "\n";
+                                       newlines = 0;
+                               }
+                               print $0;
+                         }
+                       }' < $TMPOUT > $OUT
+
+exit 0
index 2c74129..9b05e0f 100644 (file)
@@ -30,8 +30,8 @@ R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL
        +\bo      parsing  the  value  of  S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS from the shell environment at
               startup
 
-       +\bo      redirecting output using the >, >|, <>, >&, &>, and >> redirect-
-              ion operators
+       +\bo      redirecting output using the >, >|, <>, >&, &>, and >>  redirec-
+              tion operators
 
        +\bo      using the e\bex\bxe\bec\bc builtin command to replace the shell with another
               command
index 5174faf..3ccaa69 100644 (file)
@@ -1,6 +1,6 @@
 %!PS-Adobe-3.0
 %%Creator: groff version 1.18.1
-%%CreationDate: Tue Jun 29 10:37:29 2004
+%%CreationDate: Mon Jul 19 16:04:16 2004
 %%DocumentNeededResources: font Times-Roman
 %%+ font Times-Bold
 %%DocumentSuppliedResources: procset grops 1.18 1
deleted file mode 100644 (file)
index 555a07707ab51cfc96be6d28d837654fbf287915..0000000000000000000000000000000000000000
+++ /dev/null
-% 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{2003-02-03.16}
-%
-% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 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 2, 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 texinfo.tex file; see the file COPYING.  If not, write
-% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-% Boston, MA 02111-1307, USA.
-%
-% In other words, you are welcome to use, share and improve this program.
-% You are forbidden to forbid anyone else to use, share and improve
-% what you give them.   Help stamp out software-hoarding!
-%
-% Please try the latest version of texinfo.tex before submitting bug
-% reports; you can get the latest version from:
-%   ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex
-%     (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
-%   ftp://tug.org/tex/texinfo.tex
-%     (and all CTAN mirrors, see http://www.ctan.org),
-%   and /home/gd/gnu/doc/texinfo.tex on the GNU machines.
-% 
-% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
-% 
-% The texinfo.tex in any given Texinfo 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.
-
-\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}
-
-\message{Basics,}
-\chardef\other=12
-
-% We never want plain's outer \+ definition in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-
-% Save some parts of plain tex 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\ptexgtr=>
-\let\ptexhat=^
-\let\ptexi=\i
-\let\ptexlbrace=\{
-\let\ptexless=<
-\let\ptexplus=+
-\let\ptexrbrace=\}
-\let\ptexstar=\*
-\let\ptext=\t
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% 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\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\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi
-\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
-\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi
-
-% In some macros, we cannot use the `\? notation---the left quote is
-% in some cases the escape char.
-\chardef\colonChar = `\:
-\chardef\commaChar = `\,
-\chardef\dotChar   = `\.
-\chardef\equalChar = `\=
-\chardef\exclamChar= `\!
-\chardef\questChar = `\?
-\chardef\semiChar  = `\;
-\chardef\spaceChar = `\ %
-\chardef\underChar = `\_
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-% True if #1 is the empty string, i.e., called like `\ifempty{}'.
-%
-\def\ifempty#1{\ifemptyx #1\emptymarkA\emptymarkB}%
-\def\ifemptyx#1#2\emptymarkB{\ifx #1\emptymarkA}%
-
-% Hyphenation fixes.
-\hyphenation{ap-pen-dix}
-\hyphenation{mini-buf-fer mini-buf-fers}
-\hyphenation{eshell}
-\hyphenation{white-space}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen\bindingoffset
-\newdimen\normaloffset
-\newdimen\pagewidth \newdimen\pageheight
-
-% 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\undefined\else % etex gives us more logging
-    \tracingscantokens1
-    \tracingifs1
-    \tracinggroups1
-    \tracingnesting2
-    \tracingassigns1
-  \fi
-  \tracingcommands3  % 3 gives us more in etex
-  \errorcontextlines\maxdimen
-}%
-
-% 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}
-
-% For @cropmarks command.
-% 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
-
-% 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).
-  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
-  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \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.
-    %
-    \escapechar = `\\     % use backslash in output files.
-    \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.
-    \shipout\vbox{%
-      % Do this early so pdf references go to the beginning of the page.
-      \ifpdfmakepagedest \pdfmkdest{\the\pageno} \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 \oddfootingxxx.)
-        % The \baselineskip=24pt in plain's \makefootline has no effect.
-        \vskip 2\baselineskip
-        \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 \normalturnoffactive
-  \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 \unvbox#1
-\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#1{%
-  \let\next = #1%
-  \begingroup
-    \obeylines
-    \futurelet\temp\parseargx
-}
-
-% If the next token is an obeyed space (from an @example environment or
-% the like), remove it and recurse.  Otherwise, we're done.
-\def\parseargx{%
-  % \obeyedspace is defined far below, after the definition of \sepspaces.
-  \ifx\obeyedspace\temp
-    \expandafter\parseargdiscardspace
-  \else
-    \expandafter\parseargline
-  \fi
-}
-
-% Remove a single space (as the delimiter token to the macro call).
-{\obeyspaces %
- \gdef\parseargdiscardspace {\futurelet\temp\parseargx}}
-
-{\obeylines %
-  \gdef\parseargline#1^^M{%
-    \endgroup % End of the group started in \parsearg.
-    %
-    % First remove any @c comment, then any @comment.
-    % Result of each macro is put in \toks0.
-    \argremovec #1\c\relax %
-    \expandafter\argremovecomment \the\toks0 \comment\relax %
-    %
-    % Call the caller's macro, saved as \next in \parsearg.
-    \expandafter\next\expandafter{\the\toks0}%
-  }%
-}
-
-% Since all \c{,omment} does is throw away the argument, we can let TeX
-% do that for us.  The \relax here is matched by the \relax in the call
-% in \parseargline; it could be more or less anything, its purpose is
-% just to delimit the argument to the \c.
-\def\argremovec#1\c#2\relax{\toks0 = {#1}}
-\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}}
-
-% \argremovec{,omment} might leave us with trailing spaces, though; e.g.,
-%    @end itemize  @c foo
-% will have two active spaces as part of the argument with the
-% `itemize'.  Here we remove all active spaces from #1, and assign the
-% result to \toks0.
-%
-% This loses if there are any *other* active characters besides spaces
-% in the argument -- _ ^ +, for example -- since they get expanded.
-% Fortunately, Texinfo does not define any such commands.  (If it ever
-% does, the catcode of the characters in questionwill have to be changed
-% here.)  But this means we cannot call \removeactivespaces as part of
-% \argremovec{,omment}, since @c uses \parsearg, and thus the argument
-% that \parsearg gets might well have any character at all in it.
-%
-\def\removeactivespaces#1{%
-  \begingroup
-    \ignoreactivespaces
-    \edef\temp{#1}%
-    \global\toks0 = \expandafter{\temp}%
-  \endgroup
-}
-
-% Change the active space to expand to nothing.
-%
-\begingroup
-  \obeyspaces
-  \gdef\ignoreactivespaces{\obeyspaces\let =\empty}
-\endgroup
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-%% These are used to keep @begin/@end levels from running away
-%% Call \inENV within environments (after a \begingroup)
-\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
-\def\ENVcheck{%
-\ifENV\errmessage{Still within an environment; press RETURN to continue}
-\endgroup\fi} % This is not perfect, but it should reduce lossage
-
-% @begin foo  is the same as @foo, for now.
-\newhelp\EMsimple{Press RETURN to continue.}
-
-\outer\def\begin{\parsearg\beginxxx}
-
-\def\beginxxx #1{%
-\expandafter\ifx\csname #1\endcsname\relax
-{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
-\csname #1\endcsname\fi}
-
-% @end foo executes the definition of \Efoo.
-%
-\def\end{\parsearg\endxxx}
-\def\endxxx #1{%
-  \removeactivespaces{#1}%
-  \edef\endthing{\the\toks0}%
-  %
-  \expandafter\ifx\csname E\endthing\endcsname\relax
-    \expandafter\ifx\csname \endthing\endcsname\relax
-      % There's no \foo, i.e., no ``environment'' foo.
-      \errhelp = \EMsimple
-      \errmessage{Undefined command `@end \endthing'}%
-    \else
-      \unmatchedenderror\endthing
-    \fi
-  \else
-    % Everything's ok; the right environment has been started.
-    \csname E\endthing\endcsname
-  \fi
-}
-
-% There is an environment #1, but it hasn't been started.  Give an error.
-%
-\def\unmatchedenderror#1{%
-  \errhelp = \EMsimple
-  \errmessage{This `@end #1' doesn't have a matching `@#1'}%
-}
-
-% Define the control sequence \E#1 to give an unmatched @end error.
-%
-\def\defineunmatchedend#1{%
-  \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
-}
-
-
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
-  % Definitions to produce \{ and \} commands for indices,
-  % and @{ and @} for the aux file.
-  \catcode`\{ = \other \catcode`\} = \other
-  \catcode`\[ = 1 \catcode`\] = 2
-  \catcode`\! = 0 \catcode`\\ = \other
-  !gdef!lbracecmd[\{]%
-  !gdef!rbracecmd[\}]%
-  !gdef!lbraceatcmd[@{]%
-  !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
-  \def\temp{#1}%
-  \ifx\temp\imacro \ptexi
-  \else\ifx\temp\jmacro \j
-  \else \errmessage{@dotless can be used only with i or j}%
-  \fi\fi
-}
-
-% 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\*{\hfil\break\hbox{}\ignorespaces}
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=3000 }
-
-% @! is an end-of-sentence bang.
-\def\!{!\spacefactor=3000 }
-
-% @? is an end-of-sentence query.
-\def\?{?\spacefactor=3000 }
-
-% @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}
-%
-\def\group{\begingroup
-  \ifnum\catcode13=\active \else
-    \errhelp = \groupinvalidhelp
-    \errmessage{@group invalid in context where filling is enabled}%
-  \fi
-  %
-  % The \vtop we start below 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.  (See p.82 of
-  % the TeXbook.)  Thus, space below is not quite equal to space
-  % above.  But it's pretty close.
-  \def\Egroup{%
-    \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
-    \copy\groupbox
-    \endgroup         % End the \group.
-  }%
-  %
-  \setbox\groupbox = \vtop\bgroup
-    % We have to put a strut on the last line in case the @group is in
-    % the midst of an example, rather than completely enclosing it.
-    % Otherwise, the interline space between the last line of the group
-    % and the first line afterwards is too small.  But we can't put the
-    % strut in \Egroup, since there it would be on a line by itself.
-    % Hence this just inserts a strut at the beginning of each line.
-    \everypar = {\strut}%
-    %
-    % Since we have a strut on every line, we don't need any of TeX's
-    % normal interline spacing.
-    \offinterlineskip
-    %
-    % OK, but now we have to do something about blank
-    % lines in the input in @example-like environments, which normally
-    % just turn into \lisppar, which will insert no space now that we've
-    % turned off the interline space.  Simplest is to make them be an
-    % empty paragraph.
-    \ifx\par\lisppar
-      \edef\par{\leavevmode \par}%
-      %
-      % Reset ^^M's definition to new definition of \par.
-      \obeylines
-    \fi
-    %
-    % 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
-}
-%
-% 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
-
-\def\need{\parsearg\needx}
-
-% Old definition--didn't work.
-%\def\needx #1{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
-\def\needx#1{%
-  % 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
-
-\let\br = \par
-
-% @dots{} output an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in a typewriter
-% font as three actual period characters.
-%
-\def\dots{%
-  \leavevmode
-  \hbox to 1.5em{%
-    \hskip 0pt plus 0.25fil minus 0.25fil
-    .\hss.\hss.%
-    \hskip 0pt plus 0.5fil minus 0.5fil
-  }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
-  \leavevmode
-  \hbox to 2em{%
-    \hskip 0pt plus 0.25fil minus 0.25fil
-    .\hss.\hss.\hss.%
-    \hskip 0pt plus 0.5fil minus 0.5fil
-  }%
-  \spacefactor=3000
-}
-
-
-% @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.
-\def\exdent{\parsearg\exdentyyy}
-\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
-
-% This defn is used inside nofill environments such as @example.
-\def\nofillexdent{\parsearg\nofillexdentyyy}
-\def\nofillexdentyyy #1{{\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'.
-%
-\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
-}
-
-% @include file    insert text of that file as input.
-% Allow normal characters that  we make active in the argument (a file name).
-\def\include{\begingroup
-  \catcode`\\=\other
-  \catcode`~=\other
-  \catcode`^=\other
-  \catcode`_=\other
-  \catcode`|=\other
-  \catcode`<=\other
-  \catcode`>=\other
-  \catcode`+=\other
-  \parsearg\includezzz}
-% Restore active chars for included file.
-\def\includezzz#1{\endgroup\begingroup
-  % Read the included file in a group so nested @include's work.
-  \def\thisfile{#1}%
-  \let\value=\expandablevalue
-  \input\thisfile
-\endgroup}
-
-\def\thisfile{}
-
-% @center line
-% outputs that line, centered.
-%
-\def\center{\parsearg\docenter}
-\def\docenter#1{{%
-  \ifhmode \hfil\break \fi
-  \advance\hsize by -\leftskip
-  \advance\hsize by -\rightskip
-  \line{\hfil \ignorespaces#1\unskip \hfil}%
-  \ifhmode \break \fi
-}}
-
-% @sp n   outputs n lines of vertical space
-
-\def\sp{\parsearg\spxxx}
-\def\spxxx #1{\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.
-% We cannot implement @paragraphindent asis, though.
-% 
-\def\asisword{asis} % no translation, these are keywords
-\def\noneword{none}
-%
-\def\paragraphindent{\parsearg\doparagraphindent}
-\def\doparagraphindent#1{%
-  \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.
-\def\exampleindent{\parsearg\doexampleindent}
-\def\doexampleindent#1{%
-  \def\temp{#1}%
-  \ifx\temp\asisword
-  \else
-    \ifx\temp\noneword
-      \lispnarrowing = 0pt
-    \else
-      \lispnarrowing = #1em
-    \fi
-  \fi
-}
-
-% @asis just yields its argument.  Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-% We don't use $'s directly in the definition of \math because we need
-% to set catcodes according to plain TeX first, to allow for subscripts,
-% superscripts, special math chars, etc.
-% 
-\let\implicitmath = $%$ font-lock fix
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
-% _ within @math be active (mathcode "8000), and distinguish by seeing
-% if the current family is \slfam, which is what @var uses.
-% 
-{\catcode\underChar = \active
-\gdef\mathunderscore{%
-  \catcode\underChar=\active
-  \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
-}}
-%
-% Another complication: we want \\ (and @\) to output a \ character.
-% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-% this is not advertised and we don't care.  Texinfo does not
-% otherwise define @\.
-% 
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
-  \tex
-  \mathcode`\_="8000 \mathunderscore
-  \let\\ = \mathbackslash
-  \mathactive
-  \implicitmath\finishmath}
-\def\finishmath#1{#1\implicitmath\Etex}
-
-% 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 set the catcodes (such as @item or @section).
-% 
-{
-  \catcode`^ = \active
-  \catcode`< = \active
-  \catcode`> = \active
-  \catcode`+ = \active
-  \gdef\mathactive{%
-    \let^ = \ptexhat
-    \let< = \ptexless
-    \let> = \ptexgtr
-    \let+ = \ptexplus
-  }
-}
-
-% @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{\implicitmath\ptexbullet\implicitmath}
-\def\minus{\implicitmath-\implicitmath}
-
-% @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{%
-   \iflinks
-     \readauxfile
-   \fi % \openindices needs to do some work in any case.
-   \openindices
-   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
-   \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
-   %
-   % If texinfo.cnf is present on the system, read it.
-   % Useful for site-wide @afourpaper, etc.
-   % Just to be on the safe side, close the input stream before the \input.
-   \openin 1 texinfo.cnf
-   \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi
-   \closein1
-   \temp
-   %
-   \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
-
-\ifx\pdfoutput\undefined
-  \pdffalse
-  \let\pdfmkdest = \gobble
-  \let\pdfurl = \gobble
-  \let\endlink = \relax
-  \let\linkcolor = \relax
-  \let\pdfmakeoutlines = \relax
-\else
-  \pdftrue
-  \pdfoutput = 1
-  \input pdfcolor
-  \def\dopdfimage#1#2#3{%
-    \def\imagewidth{#2}%
-    \def\imageheight{#3}%
-    % without \immediate, 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
-      \ifx\empty\imagewidth\else width \imagewidth \fi
-      \ifx\empty\imageheight\else height \imageheight \fi
-      \ifnum\pdftexversion<13
-         #1.pdf%
-       \else
-         {#1.pdf}%
-       \fi
-    \ifnum\pdftexversion < 14 \else
-      \pdfrefximage \pdflastximage
-    \fi}
-  \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}}
-  \def\pdfmkpgn#1{#1}
-  \let\linkcolor = \Blue  % was Cyan, but that seems light?
-  \def\endlink{\Black\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 by1
-    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
-  \def\pdfmakeoutlines{{%
-    \openin 1 \jobname.toc
-    \ifeof 1\else\begingroup
-      \closein 1 
-      % Thanh's hack / proper braces in bookmarks  
-      \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
-      \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
-      %
-      \def\chapentry ##1##2##3{}
-      \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
-      \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
-      \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
-      \let\appendixentry = \chapentry
-      \let\unnumbchapentry = \chapentry
-      \let\unnumbsecentry = \secentry
-      \let\unnumbsubsecentry = \subsecentry
-      \let\unnumbsubsubsecentry = \subsubsecentry
-      \input \jobname.toc
-      \def\chapentry ##1##2##3{%
-        \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
-      \def\secentry ##1##2##3##4{%
-        \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
-      \def\subsecentry ##1##2##3##4##5{%
-        \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
-      \def\subsubsecentry ##1##2##3##4##5##6{%
-        \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
-      \let\appendixentry = \chapentry
-      \let\unnumbchapentry = \chapentry
-      \let\unnumbsecentry = \secentry
-      \let\unnumbsubsecentry = \subsecentry
-      \let\unnumbsubsubsecentry = \subsubsecentry
-      %
-      % Make special characters normal for writing to the pdf file.
-      % 
-      \indexnofonts
-      \let\tt=\relax
-      \turnoffactive
-      \input \jobname.toc
-    \endgroup\fi
-  }}
-  \def\makelinks #1,{%
-    \def\params{#1}\def\E{END}%
-    \ifx\params\E
-      \let\nextmakelinks=\relax
-    \else
-      \let\nextmakelinks=\makelinks
-      \ifnum\lnkcount>0,\fi
-      \picknum{#1}%
-      \startlink attr{/Border [0 0 0]} 
-        goto name{\pdfmkpgn{\the\pgn}}%
-      \linkcolor #1%
-      \advance\lnkcount by 1%
-      \endlink
-    \fi
-    \nextmakelinks
-  }
-  \def\picknum#1{\expandafter\pn#1}
-  \def\pn#1{%
-    \def\p{#1}%
-    \ifx\p\lbrace
-      \let\nextpn=\ppn
-    \else
-      \let\nextpn=\ppnn
-      \def\first{#1}
-    \fi
-    \nextpn
-  }
-  \def\ppn#1{\pgn=#1\gobble}
-  \def\ppnn{\pgn=\first}
-  \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
-  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
-  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
-    \ifx\PP\D\let\nextsp\relax
-    \else\let\nextsp\skipspaces
-      \ifx\p\space\else\addtokens{\filename}{\PP}%
-        \advance\filenamelength by 1
-      \fi
-    \fi
-    \nextsp}
-  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
-  \ifnum\pdftexversion < 14
-    \let \startlink \pdfannotlink
-  \else
-    \let \startlink \pdfstartlink
-  \fi
-  \def\pdfurl#1{%
-    \begingroup
-      \normalturnoffactive\def\@{@}%
-      \let\value=\expandablevalue
-      \leavevmode\Red
-      \startlink attr{/Border [0 0 0]}%
-        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
-        % #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|
-    \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}}
-    \linkcolor #1\endlink}
-  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\fi % \ifx\pdfoutput
-
-
-\message{fonts,}
-% Font-change commands.
-
-% Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf analogous to plain's \rm, etc.
-\newfam\sffam
-\def\sf{\fam=\sffam \tensf}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-% We don't need math for this one.
-\def\ttsl{\tenttsl}
-
-% Default leading.
-\newdimen\textleading  \textleading = 13.2pt
-
-% 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}
-%
-\def\setleading#1{%
-  \normalbaselineskip = #1\relax
-  \normallineskip = \lineskipfactor\normalbaselineskip
-  \normalbaselines
-  \setbox\strutbox =\hbox{%
-    \vrule width0pt height\strutheightpercent\baselineskip
-                    depth \strutdepthpercent \baselineskip
-  }%
-}
-
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
-% #3 is the font's design size, #4 is a scale factor
-\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
-
-% Use cm as the default font prefix.
-% To specify the font prefix, you must define \fontprefix
-% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
-\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}
-
-\newcount\mainmagstep
-\ifx\bigger\relax
-  % not really supported.
-  \mainmagstep=\magstep1
-  \setfont\textrm\rmshape{12}{1000}
-  \setfont\texttt\ttshape{12}{1000}
-\else
-  \mainmagstep=\magstephalf
-  \setfont\textrm\rmshape{10}{\mainmagstep}
-  \setfont\texttt\ttshape{10}{\mainmagstep}
-\fi
-% Instead of cmb10, you may want to use cmbx10.
-% cmbx10 is a prettier font on its own, but cmb10
-% looks better when embedded in a line with cmr10
-% (in Bob's opinion).
-\setfont\textbf\bfshape{10}{\mainmagstep}
-\setfont\textit\itshape{10}{\mainmagstep}
-\setfont\textsl\slshape{10}{\mainmagstep}
-\setfont\textsf\sfshape{10}{\mainmagstep}
-\setfont\textsc\scshape{10}{\mainmagstep}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-
-% A few fonts for @defun, etc.
-\setfont\defbf\bxshape{10}{\magstep1} %was 1314
-\setfont\deftt\ttshape{10}{\magstep1}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\setfont\smallrm\rmshape{9}{1000}
-\setfont\smalltt\ttshape{9}{1000}
-\setfont\smallbf\bfshape{10}{900}
-\setfont\smallit\itshape{9}{1000}
-\setfont\smallsl\slshape{9}{1000}
-\setfont\smallsf\sfshape{9}{1000}
-\setfont\smallsc\scshape{10}{900}
-\setfont\smallttsl\ttslshape{10}{900}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-
-% Fonts for small examples (8pt).
-\setfont\smallerrm\rmshape{8}{1000}
-\setfont\smallertt\ttshape{8}{1000}
-\setfont\smallerbf\bfshape{10}{800}
-\setfont\smallerit\itshape{8}{1000}
-\setfont\smallersl\slshape{8}{1000}
-\setfont\smallersf\sfshape{8}{1000}
-\setfont\smallersc\scshape{10}{800}
-\setfont\smallerttsl\ttslshape{10}{800}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-
-% Fonts for title page:
-\setfont\titlerm\rmbshape{12}{\magstep3}
-\setfont\titleit\itbshape{10}{\magstep4}
-\setfont\titlesl\slbshape{10}{\magstep4}
-\setfont\titlett\ttbshape{12}{\magstep3}
-\setfont\titlettsl\ttslshape{10}{\magstep4}
-\setfont\titlesf\sfbshape{17}{\magstep1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\authorrm{\secrm}
-\def\authortt{\sectt}
-
-% Chapter (and unnumbered) fonts (17.28pt).
-\setfont\chaprm\rmbshape{12}{\magstep2}
-\setfont\chapit\itbshape{10}{\magstep3}
-\setfont\chapsl\slbshape{10}{\magstep3}
-\setfont\chaptt\ttbshape{12}{\magstep2}
-\setfont\chapttsl\ttslshape{10}{\magstep3}
-\setfont\chapsf\sfbshape{17}{1000}
-\let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-
-% Section fonts (14.4pt).
-\setfont\secrm\rmbshape{12}{\magstep1}
-\setfont\secit\itbshape{10}{\magstep2}
-\setfont\secsl\slbshape{10}{\magstep2}
-\setfont\sectt\ttbshape{12}{\magstep1}
-\setfont\secttsl\ttslshape{10}{\magstep2}
-\setfont\secsf\sfbshape{12}{\magstep1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-
-% Subsection fonts (13.15pt).
-\setfont\ssecrm\rmbshape{12}{\magstephalf}
-\setfont\ssecit\itbshape{10}{1315}
-\setfont\ssecsl\slbshape{10}{1315}
-\setfont\ssectt\ttbshape{12}{\magstephalf}
-\setfont\ssecttsl\ttslshape{10}{1315}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{\magstep1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled 1315
-% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
-% but that is not a standard magnification.
-
-% 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 so that font changes will continue to work
-% in math mode, where it is the current \fam that is relevant in most
-% cases, not the current font.  Plain TeX does \def\bf{\fam=\bffam
-% \tenbf}, for example.  By redefining \tenbf, we obviate the need to
-% redefine \bf itself.
-\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
-  \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
-  \resetmathfonts \setleading{25pt}}
-\def\titlefont#1{{\titlefonts\rm #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
-  \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
-  \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
-  \resetmathfonts \setleading{15pt}}
-\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf?
-\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
-  \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
-  \resetmathfonts \setleading{9.5pt}}
-
-% 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 \smallerfonts (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
-% 
-% I wish we used A4 paper on this side of the Atlantic.
-% 
-% --karl, 24jan03.
-
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\textfonts
-
-% Define these so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}
-\setfont\shortcontbf\bxshape{12}{1000}
-\setfont\shortcontsl\slshape{12}{1000}
-\setfont\shortconttt\ttshape{12}{1000}
-
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
-
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
-\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
-
-\let\i=\smartitalic
-\let\var=\smartslanted
-\let\dfn=\smartslanted
-\let\emph=\smartitalic
-\let\cite=\smartslanted
-
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% 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\frenchspacing{%
-    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
-    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
-  }
-\catcode`@=\other
-
-\def\t#1{%
-  {\tt \rawbackslash \frenchspacing #1}%
-  \null
-}
-\let\ttfont=\t
-\def\samp#1{`\tclose{#1}'\null}
-\setfont\keyrm\rmshape{8}{1000}
-\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}}}}
-% The old definition, with no lozenge:
-%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @file, @option are the same as @samp.
-\let\file=\samp
-\let\option=\samp
-
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
-\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
-    \frenchspacing
-    #1%
-  }%
-  \null
-}
-
-% We *must* turn on hyphenation at `-' and `_' in \code.
-% 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
-  %
-  \global\def\code{\begingroup
-    \catcode`\-=\active \let-\codedash
-    \catcode`\_=\active \let_\codeunder
-    \codex
-  }
-  %
-  % If we end up with any active - characters when handling the index,
-  % just treat them as a normal -.
-  \global\def\indexbreaks{\catcode`\-=\active \let-\realdash}
-}
-
-\def\realdash{-}
-\def\codedash{-\discretionary{}{}{}}
-\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{}{}{}}%
-            {\_}%
-}
-\def\codex #1{\tclose{#1}\endgroup}
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-
-% @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).
-\def\kbdinputstyle{\parsearg\kbdinputstylexxx}
-\def\kbdinputstylexxx#1{%
-  \def\arg{#1}%
-  \ifx\arg\worddistinct
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
-  \else\ifx\arg\wordexample
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
-  \else\ifx\arg\wordcode
-    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @kbdinputstyle `\arg'}%
-  \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct.'
-\kbdinputstyle distinct
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\look}}\fi
-\else{\tclose{\kbdfont\look}}\fi}
-
-% For @url, @env, @command quotes seem unnecessary, so use \code.
-\let\url=\code
-\let\env=\code
-\let\command=\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.  Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#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}
-
-% 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
-
-% 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 }
-
-% 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}
-
-\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
-
-% @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}
-
-% 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
-
-% @acronym downcases the argument and prints in smallcaps.
-\def\acronym#1{{\smallcaps \lowercase{#1}}}
-
-% @pounds{} is a sterling sign.
-\def\pounds{{\it\$}}
-
-
-\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
-
-\def\shorttitlepage{\parsearg\shorttitlepagezzz}
-\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
-        \endgroup\page\hbox{}\page}
-
-\def\titlepage{\begingroup \parindent=0pt \textfonts
-   \let\subtitlerm=\tenrm
-   \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
-   %
-   \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
-                   \let\tt=\authortt}%
-   %
-   % Leave some space at the very top of the page.
-   \vglue\titlepagetopglue
-   %
-   % Now you can print the title using @title.
-   \def\title{\parsearg\titlezzz}%
-   \def\titlezzz##1{\leftline{\titlefonts\rm ##1}
-                    % print a rule at the page bottom also.
-                    \finishedtitlepagefalse
-                    \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
-   % No rule at page bottom unless we print one at the top with @title.
-   \finishedtitlepagetrue
-   %
-   % Now you can put text using @subtitle.
-   \def\subtitle{\parsearg\subtitlezzz}%
-   \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
-   %
-   % @author should come last, but may come many times.
-   \def\author{\parsearg\authorzzz}%
-   \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
-      {\authorfont \leftline{##1}}}%
-   %
-   % 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
-      \oldpage
-      \let\page = \oldpage
-      \hbox{}}%
-%   \def\page{\oldpage \hbox{}}
-}
-
-\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
-}
-
-%%% 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\oddheading{\parsearg\oddheadingxxx}
-\def\everyheading{\parsearg\everyheadingxxx}
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\everyfooting{\parsearg\everyfootingxxx}
-
-{\catcode`\@=0 %
-
-\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
-\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
-\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
-
-\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
-\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
-\gdef\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 -\baselineskip
-  \global\advance\vsize by -\baselineskip
-}
-
-\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}}
-%
-}% unbind the catcode of @.
-
-% @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{
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
-% 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\undefined
-\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\settitlezzz}
-\def\settitlezzz #1{\gdef\thistitle{#1}}
-
-
-\message{tables,}
-% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(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, @vtable, 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\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
-\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
-
-\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
-\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
-
-\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
-                 \itemzzz {#1}}
-
-\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
-                 \itemzzz {#1}}
-
-\def\itemzzz #1{\begingroup %
-  \advance\hsize by -\rightskip
-  \advance\hsize by -\tableindent
-  \setbox0=\hbox{\itemfont{#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
-      \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.  (Unfortunately
-    % we can't prevent a possible page break at the following
-    % \baselineskip glue.)  However, if what follows is an environment
-    % such as @example, there will be no \parskip glue; then
-    % the negative vskip we just 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.
-    % (Possibly there are other commands that could be followed by
-    % @example which need the same treatment, but not section titles; or
-    % maybe section titles are the only special case and they should be
-    % penalty 10001...)
-    \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 table}}
-\def\itemx{\errmessage{@itemx while not in a table}}
-\def\kitem{\errmessage{@kitem while not in a table}}
-\def\kitemx{\errmessage{@kitemx while not in a table}}
-\def\xitem{\errmessage{@xitem while not in a table}}
-\def\xitemx{\errmessage{@xitemx while not in a table}}
-
-% Contains a kludge to get @end[description] to work.
-\def\description{\tablez{\dontindex}{1}{}{}{}{}}
-
-% @table, @ftable, @vtable.
-\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
-{\obeylines\obeyspaces%
-\gdef\tablex #1^^M{%
-\tabley\dontindex#1        \endtabley}}
-
-\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
-{\obeylines\obeyspaces%
-\gdef\ftablex #1^^M{%
-\tabley\fnitemindex#1        \endtabley
-\def\Eftable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
-{\obeylines\obeyspaces%
-\gdef\vtablex #1^^M{%
-\tabley\vritemindex#1        \endtabley
-\def\Evtable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\dontindex #1{}
-\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
-\def\vritemindex #1{\doind {vr}{\code{#1}}}%
-
-{\obeyspaces %
-\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
-\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
-
-\def\tablez #1#2#3#4#5#6{%
-\aboveenvbreak %
-\begingroup %
-\def\Edescription{\Etable}% Necessary kludge.
-\let\itemindex=#1%
-\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
-\ifnum 0#4>0 \tableindent=#4\mil \fi %
-\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
-\def\itemfont{#2}%
-\itemmax=\tableindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \tableindent %
-\exdentamount=\tableindent
-\parindent = 0pt
-\parskip = \smallskipamount
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def\Etable{\endgraf\afterenvbreak\endgroup}%
-\let\item = \internalBitem %
-\let\itemx = \internalBitemx %
-\let\kitem = \internalBkitem %
-\let\kitemx = \internalBkitemx %
-\let\xitem = \internalBxitem %
-\let\xitemx = \internalBxitemx %
-}
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\def\itemize{\parsearg\itemizezzz}
-
-\def\itemizezzz #1{%
-  \begingroup % ended by the @end itemize
-  \itemizey {#1}{\Eitemize}
-}
-
-\def\itemizey #1#2{%
-\aboveenvbreak %
-\itemmax=\itemindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \itemindent %
-\exdentamount=\itemindent
-\parindent = 0pt %
-\parskip = \smallskipamount %
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def#2{\endgraf\afterenvbreak\endgroup}%
-\def\itemcontents{#1}%
-\let\item=\itemizeitem}
-
-% \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'.
-%
-\def\enumerate{\parsearg\enumeratezzz}
-\def\enumeratezzz #1{\enumeratey #1  \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
-  \begingroup % ended by the @end enumerate
-  %
-  % 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 <number>.
-    %
-    \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 itemizey, 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
-  \itemizey{#1.}\Eenumerate\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}
-
-% Definition of @item while inside @itemize.
-
-\def\itemizeitem{%
-\advance\itemno by 1
-{\let\par=\endgraf \smallbreak}%
-\ifhmode \errmessage{In hmode at itemizeitem}\fi
-{\parskip=0in \hskip 0pt
-\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
-\vadjust{\penalty 1200}}%
-\flushcr}
-
-% @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.
-%
-% For those who want to use more than one line's worth of words in
-% the preamble, break the line within one argument and it
-% will parse correctly, i.e.,
-%
-%     @multitable {Column 1 template} {Column 2 template} {Column 3
-%      template}
-% Not:
-%     @multitable {Column 1 template} {Column 2 template}
-%      {Column 3 template}
-
-% 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, @multitable or @end multitable 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 part of the @columnfraction before the decimal point, which
-% is presumably either 0 or the empty string (but we don't check, we
-% just throw it away).  #2 is the decimal part, which we use as the
-% percent of \hsize for this column.
-\def\pickupwholefraction#1.#2 {%
-  \global\advance\colcount by 1
-  \expandafter\xdef\csname col\the\colcount\endcsname{.#2\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 ... @end multitable definitions:
-%
-\def\multitable{\parsearg\dotable}
-\def\dotable#1{\bgroup
-  \vskip\parskip
-  \let\item=\crcrwithfootnotes
-  % 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 encounter the problem it was intended to solve again.  --karl,
-  % nathan@acm.org, 20apr99.
-  \let\tab=&%
-  \let\startfootins=\startsavedfootnote
-  \tolerance=9500
-  \hbadness=9500
-  \setmultitablespacing
-  \parskip=\multitableparskip
-  \parindent=\multitableparindent
-  \overfullrule=0pt
-  \global\colcount=0
-  \def\Emultitable{%
-    \global\setpercentfalse
-    \crcrwithfootnotes\crcr
-    \egroup\egroup
-  }%
-  %
-  % To parse everything between @multitable and @item:
-  \setuptable#1 \endsetuptable
-  %
-  % \everycr will reset column counter, \colcount, at the end of
-  % each line. Every column entry will cause \colcount to advance by one.
-  % The table preamble
-  % looks at the current \colcount to find the correct column width.
-  \everycr{\noalign{%
-  %
-  % \filbreak%% keeps underfull box messages off when table breaks over pages.
-  % 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.
-    \global\colcount=0\relax}}%
-  %
-  % 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\relax
-    \multistrut\vtop{\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\setmultitablespacing{% test to see if user has set \multitablelinespace.
-% If so, do nothing. If not, give it an appropriate dimension based on
-% current baselineskip.
-\ifdim\multitablelinespace=0pt
-\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
-\global\advance\multitablelinespace by-\ht0
-%% strut to put in table in case some entry doesn't have descenders,
-%% to keep lines equally spaced
-\let\multistrut = \strut
-\else
-%% FIXME: what is \box0 supposed to be?
-\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
-width0pt\relax} \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}
-
-% In case 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.  Otherwise, the insertion is lost, it never migrates to the
-% main vertical list.  --kasal, 22jan03.
-%
-\newbox\savedfootnotes
-%
-% \dotable \let's \startfootins to this, so that \dofootnote will call
-% it instead of starting the insertion right away.
-\def\startsavedfootnote{%
-  \global\setbox\savedfootnotes = \vbox\bgroup
-    \unvbox\savedfootnotes
-}
-\def\crcrwithfootnotes{%
-  \crcr
-  \ifvoid\savedfootnotes \else
-    \noalign{\insert\footins{\box\savedfootnotes}}%
-  \fi
-}
-
-\message{conditionals,}
-% Prevent errors for section commands.
-% Used in @ignore and in failing conditionals.
-\def\ignoresections{%
-  \let\chapter=\relax
-  \let\unnumbered=\relax
-  \let\top=\relax
-  \let\unnumberedsec=\relax
-  \let\unnumberedsection=\relax
-  \let\unnumberedsubsec=\relax
-  \let\unnumberedsubsection=\relax
-  \let\unnumberedsubsubsec=\relax
-  \let\unnumberedsubsubsection=\relax
-  \let\section=\relax
-  \let\subsec=\relax
-  \let\subsubsec=\relax
-  \let\subsection=\relax
-  \let\subsubsection=\relax
-  \let\appendix=\relax
-  \let\appendixsec=\relax
-  \let\appendixsection=\relax
-  \let\appendixsubsec=\relax
-  \let\appendixsubsection=\relax
-  \let\appendixsubsubsec=\relax
-  \let\appendixsubsubsection=\relax
-  \let\contents=\relax
-  \let\smallbook=\relax
-  \let\titlepage=\relax
-}
-
-% Used in nested conditionals, where we have to parse the Texinfo source
-% and so want to turn off most commands, in case they are used
-% incorrectly.
-%
-% We use \empty instead of \relax for the @def... commands, so that \end
-% doesn't throw an error.  For instance:
-% @ignore
-% @deffn ...
-% @end deffn
-% @end ignore
-% 
-% The @end deffn is going to get expanded, because we're trying to allow
-% nested conditionals.  But we don't want to expand the actual @deffn,
-% since it might be syntactically correct and intended to be ignored.
-% Since \end checks for \relax, using \empty does not cause an error.
-% 
-\def\ignoremorecommands{%
-  \let\defcodeindex = \relax
-  \let\defcv = \empty
-  \let\defcvx = \empty
-  \let\Edefcv = \empty
-  \let\deffn = \empty
-  \let\deffnx = \empty
-  \let\Edeffn = \empty
-  \let\defindex = \relax
-  \let\defivar = \empty
-  \let\defivarx = \empty
-  \let\Edefivar = \empty
-  \let\defmac = \empty
-  \let\defmacx = \empty
-  \let\Edefmac = \empty
-  \let\defmethod = \empty
-  \let\defmethodx = \empty
-  \let\Edefmethod = \empty
-  \let\defop = \empty
-  \let\defopx = \empty
-  \let\Edefop = \empty
-  \let\defopt = \empty
-  \let\defoptx = \empty
-  \let\Edefopt = \empty
-  \let\defspec = \empty
-  \let\defspecx = \empty
-  \let\Edefspec = \empty
-  \let\deftp = \empty
-  \let\deftpx = \empty
-  \let\Edeftp = \empty
-  \let\deftypefn = \empty
-  \let\deftypefnx = \empty
-  \let\Edeftypefn = \empty
-  \let\deftypefun = \empty
-  \let\deftypefunx = \empty
-  \let\Edeftypefun = \empty
-  \let\deftypeivar = \empty
-  \let\deftypeivarx = \empty
-  \let\Edeftypeivar = \empty
-  \let\deftypemethod = \empty
-  \let\deftypemethodx = \empty
-  \let\Edeftypemethod = \empty
-  \let\deftypeop = \empty
-  \let\deftypeopx = \empty
-  \let\Edeftypeop = \empty
-  \let\deftypevar = \empty
-  \let\deftypevarx = \empty
-  \let\Edeftypevar = \empty
-  \let\deftypevr = \empty
-  \let\deftypevrx = \empty
-  \let\Edeftypevr = \empty
-  \let\defun = \empty
-  \let\defunx = \empty
-  \let\Edefun = \empty
-  \let\defvar = \empty
-  \let\defvarx = \empty
-  \let\Edefvar = \empty
-  \let\defvr = \empty
-  \let\defvrx = \empty
-  \let\Edefvr = \empty
-  \let\clear = \relax
-  \let\down = \relax
-  \let\evenfooting = \relax
-  \let\evenheading = \relax
-  \let\everyfooting = \relax
-  \let\everyheading = \relax
-  \let\headings = \relax
-  \let\include = \relax
-  \let\item = \relax
-  \let\lowersections = \relax
-  \let\oddfooting = \relax
-  \let\oddheading = \relax
-  \let\printindex = \relax
-  \let\pxref = \relax
-  \let\raisesections = \relax
-  \let\ref = \relax
-  \let\set = \relax
-  \let\setchapternewpage = \relax
-  \let\setchapterstyle = \relax
-  \let\settitle = \relax
-  \let\up = \relax
-  \let\verbatiminclude = \relax
-  \let\xref = \relax
-}
-
-% Ignore @ignore, @ifhtml, @ifinfo, and the like.
-%
-\def\direntry{\doignore{direntry}}
-\def\documentdescriptionword{documentdescription}
-\def\documentdescription{\doignore{documentdescription}}
-\def\html{\doignore{html}}
-\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}}
-
-% @dircategory CATEGORY  -- specify a category of the dir file
-% which this file should belong to.  Ignore this in TeX.
-\let\dircategory = \comment
-
-% Ignore text until a line `@end #1'.
-%
-\def\doignore#1{\begingroup
-  % Don't complain about control sequences we have declared \outer.
-  \ignoresections
-  %
-  % Define a command to swallow text until we reach `@end #1'.
-  % This @ is a catcode 12 token (that is the normal catcode of @ in
-  % this texinfo.tex file).  We change the catcode of @ below to match.
-  \long\def\doignoretext##1@end #1{\enddoignore}%
-  %
-  % Make sure that spaces turn into tokens that match what \doignoretext wants.
-  \catcode\spaceChar = 10
-  %
-  % Ignore braces, too, so mismatched braces don't cause trouble.
-  \catcode`\{ = 9
-  \catcode`\} = 9
-  %
-  % We must not have @c interpreted as a control sequence.
-  \catcode`\@ = 12
-  %
-  \def\ignoreword{#1}%
-  \ifx\ignoreword\documentdescriptionword
-    % The c kludge breaks documentdescription, since
-    % `documentdescription' contains a `c'.  Means not everything will
-    % be ignored inside @documentdescription, but oh well...
-  \else
-    % Make the letter c a comment character so that the rest of the line
-    % will be ignored. This way, the document can have (for example)
-    %   @c @end ifinfo
-    % and the @end ifinfo will be properly ignored.
-    % (We've just changed @ to catcode 12.)
-    \catcode`\c = 14
-  \fi
-  %
-  % And now expand the command defined above.
-  \doignoretext
-}
-
-% What we do to finish off ignored text.
-%
-\def\enddoignore{\endgroup\ignorespaces}%
-
-\newif\ifwarnedobs\warnedobsfalse
-\def\obstexwarn{%
-  \ifwarnedobs\relax\else
-  % We need to warn folks that they may have trouble with TeX 3.0.
-  % This uses \immediate\write16 rather than \message to get newlines.
-    \immediate\write16{}
-    \immediate\write16{WARNING: for users of Unix TeX 3.0!}
-    \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
-    \immediate\write16{If you are running another version of TeX, relax.}
-    \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
-    \immediate\write16{  Then upgrade your TeX installation if you can.}
-    \immediate\write16{  (See ftp://ftp.gnu.org/non-gnu/TeX.README.)}
-    \immediate\write16{If you are stuck with version 3.0, run the}
-    \immediate\write16{  script ``tex3patch'' from the Texinfo distribution}
-    \immediate\write16{  to use a workaround.}
-    \immediate\write16{}
-    \global\warnedobstrue
-    \fi
-}
-
-% **In TeX 3.0, setting text in \nullfont hangs tex.  For a
-% workaround (which requires the file ``dummy.tfm'' to be installed),
-% uncomment the following line:
-%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
-
-% Ignore text, except that we keep track of conditional commands for
-% purposes of nesting, up to an `@end #1' command.
-%
-\def\nestedignore#1{%
-  \obstexwarn
-  % We must actually expand the ignored text to look for the @end
-  % command, so that nested ignore constructs work.  Thus, we put the
-  % text into a \vbox and then do nothing with the result.  To minimize
-  % the chance of memory overflow, we follow the approach outlined on
-  % page 401 of the TeXbook.
-  %
-  \setbox0 = \vbox\bgroup
-    % Don't complain about control sequences we have declared \outer.
-    \ignoresections
-    %
-    % Define `@end #1' to end the box, which will in turn undefine the
-    % @end command again.
-    \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
-    %
-    % We are going to be parsing Texinfo commands.  Most cause no
-    % trouble when they are used incorrectly, but some commands do
-    % complicated argument parsing or otherwise get confused, so we
-    % undefine them.
-    %
-    % We can't do anything about stray @-signs, unfortunately;
-    % they'll produce `undefined control sequence' errors.
-    \ignoremorecommands
-    %
-    % Set the current font to be \nullfont, a TeX primitive, and define
-    % all the font commands to also use \nullfont.  We don't use
-    % dummy.tfm, as suggested in the TeXbook, because some sites
-    % might not have that installed.  Therefore, math mode will still
-    % produce output, but that should be an extremely small amount of
-    % stuff compared to the main input.
-    %
-    \nullfont
-    \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
-    \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
-    \let\tensf=\nullfont
-    % Similarly for index fonts.
-    \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
-    \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
-    \let\smallsf=\nullfont
-    % Similarly for smallexample fonts.
-    \let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont
-    \let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont
-    \let\smallersf=\nullfont
-    %
-    % Don't complain when characters are missing from the fonts.
-    \tracinglostchars = 0
-    %
-    % Don't bother to do space factor calculations.
-    \frenchspacing
-    %
-    % Don't report underfull hboxes.
-    \hbadness = 10000
-    %
-    % Do minimal line-breaking.
-    \pretolerance = 10000
-    %
-    % Do not execute instructions in @tex.
-    \def\tex{\doignore{tex}}%
-    % Do not execute macro definitions.
-    % `c' is a comment character, so the word `macro' will get cut off.
-    \def\macro{\doignore{ma}}%
-}
-
-% @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.  Make sure the catcode of space is correct to avoid
-% losing inside @example, for instance.
-%
-\def\set{\begingroup\catcode` =10
-  \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
-  \parsearg\setxxx}
-\def\setxxx#1{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
-  \def\temp{#2}%
-  \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
-  \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
-  \fi
-  \endgroup
-}
-% Can't use \xdef to pre-expand #2 and save some time, since \temp or
-% \next or other control sequences that we've defined might get us into
-% an infinite loop. Consider `@set foo @cite{bar}'.
-\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\def\clear{\parsearg\clearxxx}
-\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
-
-% @value{foo} gets the text saved in variable foo.
-{
-  \catcode`\_ = \active
-  %
-  % We might end up with active _ or - characters in the argument if
-  % we're called from @code, as @code{@value{foo-bar_}}.  So \let any
-  % such active characters to their normal equivalents.
-  \gdef\value{\begingroup
-    \catcode`\-=\other \catcode`\_=\other
-    \indexbreaks \let_\normalunderscore
-    \valuexxx}
-}
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
-
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we \let\value to this in \indexdummies).  Ones
-% whose names contain - or _ still won't work, but we can't do anything
-% about that.  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).
-%
-\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.
-%
-\def\ifset{\parsearg\doifset}
-\def\doifset#1{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    \let\next=\ifsetfail
-  \else
-    \let\next=\ifsetsucceed
-  \fi
-  \next
-}
-\def\ifsetsucceed{\conditionalsucceed{ifset}}
-\def\ifsetfail{\nestedignore{ifset}}
-\defineunmatchedend{ifset}
-
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-\def\ifclear{\parsearg\doifclear}
-\def\doifclear#1{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-    \let\next=\ifclearsucceed
-  \else
-    \let\next=\ifclearfail
-  \fi
-  \next
-}
-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
-\def\ifclearfail{\nestedignore{ifclear}}
-\defineunmatchedend{ifclear}
-
-% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
-% read the text following, through the first @end iftex (etc.).  Make
-% `@end iftex' (etc.) valid only after an @iftex.
-%
-\def\iftex{\conditionalsucceed{iftex}}
-\def\ifnothtml{\conditionalsucceed{ifnothtml}}
-\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
-\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}}
-\defineunmatchedend{iftex}
-\defineunmatchedend{ifnothtml}
-\defineunmatchedend{ifnotinfo}
-\defineunmatchedend{ifnotplaintext}
-
-% True conditional.  Since \set globally defines its variables, we can
-% just start and end a group (to keep the @end definition undefined at
-% the outer level).
-%
-\def\conditionalsucceed#1{\begingroup
-  \expandafter\def\csname E#1\endcsname{\endgroup}%
-}
-
-% @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 \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
-
-% \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 \undefined
-    % 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{%
-  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
-  \def\ {\realbackslash\space }%
-  % Need these in case \tex is in effect and \{ is a \delimiter again.
-  % But can't use \lbracecmd and \rbracecmd because texindex assumes
-  % braces and backslashes are used only as delimiters.  
-  \let\{ = \mylbrace
-  \let\} = \myrbrace
-  %
-  % \definedummyword defines \#1 as \realbackslash #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{%
-    \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}%
-  }%
-  \def\definedummyletter##1{%
-    \expandafter\def\csname ##1\endcsname{\realbackslash ##1}%
-  }%
-  %
-  % Do the redefinitions.
-  \commondummies
-}
-
-% For the aux file, @ is the escape character.  So we want to redefine
-% everything using @ instead of \realbackslash.  When everything uses 
-% @, this will be simpler.
-% 
-\def\atdummies{%
-  \def\@{@@}%
-  \def\ {@ }%
-  \let\{ = \lbraceatcmd
-  \let\} = \rbraceatcmd
-  %
-  % (See comments in \indexdummies.)
-  \def\definedummyword##1{%
-    \expandafter\def\csname ##1\endcsname{@##1\space}%
-  }%
-  \def\definedummyletter##1{%
-    \expandafter\def\csname ##1\endcsname{@##1}%
-  }%
-  %
-  % Do the redefinitions.
-  \commondummies
-}
-
-% Called from \indexdummies and \atdummies.  \definedummyword and
-% \definedummyletter must be defined first.
-% 
-\def\commondummies{%
-  %
-  \normalturnoffactive
-  %
-  % Control letters and accents.
-  \definedummyletter{_}%
-  \definedummyletter{,}%
-  \definedummyletter{"}%
-  \definedummyletter{`}%
-  \definedummyletter{'}%
-  \definedummyletter{^}%
-  \definedummyletter{~}%
-  \definedummyletter{=}%
-  \definedummyword{u}%
-  \definedummyword{v}%
-  \definedummyword{H}%
-  \definedummyword{dotaccent}%
-  \definedummyword{ringaccent}%
-  \definedummyword{tieaccent}%
-  \definedummyword{ubaraccent}%
-  \definedummyword{udotaccent}%
-  \definedummyword{dotless}%
-  %
-  % Other non-English letters.
-  \definedummyword{AA}%
-  \definedummyword{AE}%
-  \definedummyword{L}%
-  \definedummyword{OE}%
-  \definedummyword{O}%
-  \definedummyword{aa}%
-  \definedummyword{ae}%
-  \definedummyword{l}%
-  \definedummyword{oe}%
-  \definedummyword{o}%
-  \definedummyword{ss}%
-  %
-  % 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}%
-  %
-  % Texinfo font commands.
-  \definedummyword{b}%
-  \definedummyword{i}%
-  \definedummyword{r}%
-  \definedummyword{sc}%
-  \definedummyword{t}%
-  %
-  \definedummyword{TeX}%
-  \definedummyword{acronym}%
-  \definedummyword{cite}%
-  \definedummyword{code}%
-  \definedummyword{command}%
-  \definedummyword{dfn}%
-  \definedummyword{dots}%
-  \definedummyword{emph}%
-  \definedummyword{env}%
-  \definedummyword{file}%
-  \definedummyword{kbd}%
-  \definedummyword{key}%
-  \definedummyword{math}%
-  \definedummyword{option}%
-  \definedummyword{samp}%
-  \definedummyword{strong}%
-  \definedummyword{uref}%
-  \definedummyword{url}%
-  \definedummyword{var}%
-  \definedummyword{w}%
-  %
-  % Assorted special characters.
-  \definedummyword{bullet}%
-  \definedummyword{copyright}%
-  \definedummyword{dots}%
-  \definedummyword{enddots}%
-  \definedummyword{equiv}%
-  \definedummyword{error}%
-  \definedummyword{expansion}%
-  \definedummyword{minus}%
-  \definedummyword{pounds}%
-  \definedummyword{point}%
-  \definedummyword{print}%
-  \definedummyword{result}%
-  %
-  % Handle some cases of @value -- where the variable name does not
-  % contain - or _, and the value does not contain any
-  % (non-fully-expandable) commands.
-  \let\value = \expandablevalue
-  %
-  % Normal spaces, not active ones.
-  \unsepspaces
-  %
-  % No macro expansion.
-  \turnoffmacros
-}
-
-% 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 \ ).
-{\obeyspaces
- \gdef\unsepspaces{\obeyspaces\let =\space}}
-
-
-% \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\indexdummytex{TeX}
-\def\indexdummydots{...}
-%
-\def\indexnofonts{%
-  \def\ { }%
-  \def\@{@}%
-  % how to handle braces?
-  \def\_{\normalunderscore}%
-  %
-  \let\,=\asis
-  \let\"=\asis
-  \let\`=\asis
-  \let\'=\asis
-  \let\^=\asis
-  \let\~=\asis
-  \let\==\asis
-  \let\u=\asis
-  \let\v=\asis
-  \let\H=\asis
-  \let\dotaccent=\asis
-  \let\ringaccent=\asis
-  \let\tieaccent=\asis
-  \let\ubaraccent=\asis
-  \let\udotaccent=\asis
-  \let\dotless=\asis
-  %
-  % Other non-English letters.
-  \def\AA{AA}%
-  \def\AE{AE}%
-  \def\L{L}%
-  \def\OE{OE}%
-  \def\O{O}%
-  \def\aa{aa}%
-  \def\ae{ae}%
-  \def\l{l}%
-  \def\oe{oe}%
-  \def\o{o}%
-  \def\ss{ss}%
-  \def\exclamdown{!}%
-  \def\questiondown{?}%
-  %
-  % 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
-  %
-  % Texinfo font commands.
-  \let\b=\asis
-  \let\i=\asis
-  \let\r=\asis
-  \let\sc=\asis
-  \let\t=\asis
-  %
-  \let\TeX=\indexdummytex
-  \let\acronym=\asis
-  \let\cite=\asis
-  \let\code=\asis
-  \let\command=\asis
-  \let\dfn=\asis
-  \let\dots=\indexdummydots
-  \let\emph=\asis
-  \let\env=\asis
-  \let\file=\asis
-  \let\kbd=\asis
-  \let\key=\asis
-  \let\math=\asis
-  \let\option=\asis
-  \let\samp=\asis
-  \let\strong=\asis
-  \let\uref=\asis
-  \let\url=\asis
-  \let\var=\asis
-  \let\w=\asis
-}
-
-\let\indexbackslash=0  %overridden during \printindex.
-\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-
-% For \ifx comparisons.
-\def\emptymacro{\empty}
-
-% Most index entries go through here, but \dosubind is the general case.
-%
-\def\doind#1#2{\dosubind{#1}{#2}\empty}
-
-% 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 defuns, which call us directly.
-%
-\def\dosubind#1#2#3{%
-  % Put the index entry in the margin if desired.
-  \ifx\SETmarginindex\relax\else
-    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
-  \fi
-  {%
-    \count255=\lastpenalty
-    {%
-      \indexdummies % Must do this here, since \bf, etc expand at this stage
-      \escapechar=`\\
-      {%
-        \let\folio = 0% We will expand all macros now EXCEPT \folio.
-        \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
-        % so it will be output as is; and it will print as backslash.
-        %
-        % The main index entry text.
-        \toks0 = {#2}%
-        %
-        % If third arg is present, precede it with space in sort key.
-        \def\thirdarg{#3}%
-        \ifx\thirdarg\emptymacro \else
-           % If the third (subentry) arg is present, add it to the index
-           % line to write.
-          \toks0 = \expandafter{\the\toks0 \space #3}%
-        \fi
-        %
-        % 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\csname#1indfile\endcsname{%
-            \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
-        }%
-        %
-        % 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 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.
-        %
-        \iflinks
-          \ifvmode
-            \skip0 = \lastskip
-            \ifdim\lastskip = 0pt \else \nobreak\vskip-\skip0 \fi
-          \fi
-          %
-          \temp % do the write
-          %
-          \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi
-        \fi
-      }%
-    }%
-    \penalty\count255
-  }%
-}
-
-% 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).
-%
-\def\printindex{\parsearg\doprintindex}
-\def\doprintindex#1{\begingroup
-  \dobreak \chapheadingskip{10000}%
-  %
-  \smallfonts \rm
-  \tolerance = 9500
-  \indexbreaks
-  %
-  % 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{\rawbackslashxx}%
-      \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.
-  \penalty -300
-  %
-  % 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}%
-  \vskip .33\baselineskip plus .1\baselineskip
-  %
-  % Do our best not to break after the initial.
-  \nobreak
-}}
-
-% This typesets a paragraph consisting of #1, dot leaders, and then #2
-% flush to the right margin.  It is used for index and table of contents
-% entries.  The paragraph is indented by \leftskip.
-%
-\def\entry#1#2{\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
-  %
-  % Start a ``paragraph'' for the index entry so the line breaking
-  % parameters we've set above will have an effect.
-  \noindent
-  %
-  % Insert the text of the index entry.  TeX will do line-breaking on it.
-  #1%
-  % 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.
-  \def\tempa{{\rm }}%
-  \def\tempb{#2}%
-  \edef\tempc{\tempa}%
-  \edef\tempd{\tempb}%
-  \ifx\tempc\tempd\ \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#2.\ \the\toksA % The page number ends the paragraph.
-    \else
-      \ #2% The page number ends the paragraph.
-    \fi
-  \fi%
-  \par
-\endgroup}
-
-% Like \dotfill except takes at least 1 em.
-\def\indexdotfill{\cleaders
-  \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \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{%
-  \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.
-
-\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 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 this as the name of the chapter.
-% page headings and footings can use it.  @section does likewise.
-\def\thischapter{}
-\def\thissection{}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raise/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
-
-% Choose a numbered-heading macro
-% #1 is heading level if unmodified by @raisesections or @lowersections
-% #2 is text for heading
-\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
-  \chapterzzz{#2}
-\or
-  \seczzz{#2}
-\or
-  \numberedsubseczzz{#2}
-\or
-  \numberedsubsubseczzz{#2}
-\else
-  \ifnum \absseclevel<0
-    \chapterzzz{#2}
-  \else
-    \numberedsubsubseczzz{#2}
-  \fi
-\fi
-}
-
-% like \numhead, but chooses appendix heading levels
-\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
-  \appendixzzz{#2}
-\or
-  \appendixsectionzzz{#2}
-\or
-  \appendixsubseczzz{#2}
-\or
-  \appendixsubsubseczzz{#2}
-\else
-  \ifnum \absseclevel<0
-    \appendixzzz{#2}
-  \else
-    \appendixsubsubseczzz{#2}
-  \fi
-\fi
-}
-
-% like \numhead, but chooses numberless heading levels
-\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
-  \unnumberedzzz{#2}
-\or
-  \unnumberedseczzz{#2}
-\or
-  \unnumberedsubseczzz{#2}
-\or
-  \unnumberedsubsubseczzz{#2}
-\else
-  \ifnum \absseclevel<0
-    \unnumberedzzz{#2}
-  \else
-    \unnumberedsubsubseczzz{#2}
-  \fi
-\fi
-}
-
-% @chapter, @appendix, @unnumbered.
-\def\thischaptername{No Chapter Title}
-\outer\def\chapter{\parsearg\chapteryyy}
-\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz #1{%
-  \secno=0 \subsecno=0 \subsubsecno=0
-  \global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}%
-  \chapmacro {#1}{\the\chapno}%
-  \gdef\thissection{#1}%
-  \gdef\thischaptername{#1}%
-  % We don't substitute the actual chapter name into \thischapter
-  % because we don't want its macros evaluated now.
-  \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
-  \writetocentry{chap}{#1}{{\the\chapno}}
-  \donoderef
-  \global\let\section = \numberedsec
-  \global\let\subsection = \numberedsubsec
-  \global\let\subsubsection = \numberedsubsubsec
-}
-
-% we use \chapno to avoid indenting back
-\def\appendixbox#1{%
-  \setbox0 = \hbox{\putwordAppendix{} \the\chapno}%
-  \hbox to \wd0{#1\hss}}
-
-\outer\def\appendix{\parsearg\appendixyyy}
-\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
-\def\appendixzzz #1{%
-  \secno=0 \subsecno=0 \subsubsecno=0
-  \global\advance \appendixno by 1
-  \message{\putwordAppendix\space \appendixletter}%
-  \chapmacro {#1}{\appendixbox{\putwordAppendix{} \appendixletter}}%
-  \gdef\thissection{#1}%
-  \gdef\thischaptername{#1}%
-  \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
-  \writetocentry{appendix}{#1}{{\appendixletter}}
-  \appendixnoderef
-  \global\let\section = \appendixsec
-  \global\let\subsection = \appendixsubsec
-  \global\let\subsubsection = \appendixsubsubsec
-}
-
-% @centerchap is like @unnumbered, but the heading is centered.
-\outer\def\centerchap{\parsearg\centerchapyyy}
-\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}}
-
-% @top is like @unnumbered.
-\outer\def\top{\parsearg\unnumberedyyy}
-
-\outer\def\unnumbered{\parsearg\unnumberedyyy}
-\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
-\def\unnumberedzzz #1{%
-  \secno=0 \subsecno=0 \subsubsecno=0
-  %
-  % 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<toks register> to achieve this: TeX expands \the<toks> only once,
-  % simply yielding the contents of <toks register>.  (We also do this for
-  % the toc entries.)
-  \toks0 = {#1}\message{(\the\toks0)}%
-  %
-  \unnumbchapmacro {#1}%
-  \gdef\thischapter{#1}\gdef\thissection{#1}%
-  \writetocentry{unnumbchap}{#1}{{\the\chapno}}
-  \unnumbnoderef
-  \global\let\section = \unnumberedsec
-  \global\let\subsection = \unnumberedsubsec
-  \global\let\subsubsection = \unnumberedsubsubsec
-}
-
-% Sections.
-\outer\def\numberedsec{\parsearg\secyyy}
-\def\secyyy #1{\numhead1{#1}} % normally calls seczzz
-\def\seczzz #1{%
-  \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-  \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
-  \writetocentry{sec}{#1}{{\the\chapno}{\the\secno}}
-  \donoderef
-  \nobreak
-}
-
-\outer\def\appendixsection{\parsearg\appendixsecyyy}
-\outer\def\appendixsec{\parsearg\appendixsecyyy}
-\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
-\def\appendixsectionzzz #1{%
-  \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
-  \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
-  \writetocentry{sec}{#1}{{\appendixletter}{\the\secno}}
-  \appendixnoderef
-  \nobreak
-}
-
-\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
-\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
-\def\unnumberedseczzz #1{%
-  \plainsecheading {#1}\gdef\thissection{#1}%
-  \writetocentry{unnumbsec}{#1}{{\the\chapno}{\the\secno}}
-  \unnumbnoderef
-  \nobreak
-}
-
-% Subsections.
-\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
-\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz
-\def\numberedsubseczzz #1{%
-  \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-  \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
-  \writetocentry{subsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}}
-  \donoderef
-  \nobreak
-}
-
-\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy}
-\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz
-\def\appendixsubseczzz #1{%
-  \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
-  \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
-  \writetocentry{subsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}}
-  \appendixnoderef
-  \nobreak
-}
-
-\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
-\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
-\def\unnumberedsubseczzz #1{%
-  \plainsubsecheading {#1}\gdef\thissection{#1}%
-  \writetocentry{unnumbsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}}
-  \unnumbnoderef
-  \nobreak
-}
-
-% Subsubsections.
-\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
-\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz
-\def\numberedsubsubseczzz #1{%
-  \gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-  \subsubsecheading {#1}
-    {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-  \writetocentry{subsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}
-  \donoderef
-  \nobreak
-}
-
-\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy}
-\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz
-\def\appendixsubsubseczzz #1{%
-  \gdef\thissection{#1}\global\advance \subsubsecno by 1 %
-  \subsubsecheading {#1}
-    {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
-  \writetocentry{subsubsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}
-  \appendixnoderef
-  \nobreak
-}
-
-\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
-\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
-\def\unnumberedsubsubseczzz #1{%
-  \plainsubsubsecheading {#1}\gdef\thissection{#1}%
-  \writetocentry{unnumbsubsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}
-  \unnumbnoderef
-  \nobreak
-}
-
-% These are variants which are not "outer", so they can appear in @ifinfo.
-% Actually, they should now be obsolete; ordinary section commands should work.
-\def\infotop{\parsearg\unnumberedzzz}
-\def\infounnumbered{\parsearg\unnumberedzzz}
-\def\infounnumberedsec{\parsearg\unnumberedseczzz}
-\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
-\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
-
-\def\infoappendix{\parsearg\appendixzzz}
-\def\infoappendixsec{\parsearg\appendixseczzz}
-\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
-\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
-
-\def\infochapter{\parsearg\chapterzzz}
-\def\infosection{\parsearg\sectionzzz}
-\def\infosubsection{\parsearg\subsectionzzz}
-\def\infosubsubsection{\parsearg\subsubsectionzzz}
-
-% 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.
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
-
-% Define @majorheading, @heading and @subheading
-
-% NOTE on use of \vbox for chapter headings, section headings, and such:
-%       1) We use \vbox rather than the earlier \line to permit
-%          overlong headings to fold.
-%       2) \hyphenpenalty is set to 10000 because hyphenation in a
-%          heading is obnoxious; this forbids it.
-%       3) Likewise, headings look best if no \parindent is used, and
-%          if justification is not attempted.  Hence \raggedright.
-
-
-\def\majorheading{\parsearg\majorheadingzzz}
-\def\majorheadingzzz #1{%
-  {\advance\chapheadingskip by 10pt \chapbreak }%
-  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                    \parindent=0pt\raggedright
-                    \rm #1\hfill}}\bigskip \par\penalty 200}
-
-\def\chapheading{\parsearg\chapheadingzzz}
-\def\chapheadingzzz #1{\chapbreak %
-  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                    \parindent=0pt\raggedright
-                    \rm #1\hfill}}\bigskip \par\penalty 200}
-
-% @heading, @subheading, @subsubheading.
-\def\heading{\parsearg\plainsecheading}
-\def\subheading{\parsearg\plainsubsecheading}
-\def\subsubheading{\parsearg\plainsubsubsecheading}
-
-% 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}
-
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-
-%%% Define plain chapter starts, and page on/off switching for it
-% Parameter controlling skip before chapter headings (if needed)
-
-\newskip\chapheadingskip
-
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\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
-
-\def\CHAPFplain{
-\global\let\chapmacro=\chfplain
-\global\let\unnumbchapmacro=\unnchfplain
-\global\let\centerchapmacro=\centerchfplain}
-
-% Plain chapter opening.
-% #1 is the text, #2 the chapter number or empty if unnumbered.
-\def\chfplain#1#2{%
-  \pchapsepmacro
-  {%
-    \chapfonts \rm
-    \def\chapnum{#2}%
-    \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}%
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
-          \hangindent = \wd0 \centerparametersmaybe
-          \unhbox0 #1\par}%
-  }%
-  \nobreak\bigskip % no page break after a chapter title
-  \nobreak
-}
-
-% Plain opening for unnumbered.
-\def\unnchfplain#1{\chfplain{#1}{}}
-
-% @centerchap -- centered and unnumbered.
-\let\centerparametersmaybe = \relax
-\def\centerchfplain#1{{%
-  \def\centerparametersmaybe{%
-    \advance\rightskip by 3\rightskip
-    \leftskip = \rightskip
-    \parfillskip = 0pt
-  }%
-  \chfplain{#1}{}%
-}}
-
-\CHAPFplain % The default
-
-\def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt\raggedright
-                       \rm #1\hfill}}\bigskip \par\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 {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt
-                       \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
-}
-
-\def\CHAPFopen{
-\global\let\chapmacro=\chfopen
-\global\let\unnumbchapmacro=\unnchfopen
-\global\let\centerchapmacro=\centerchfopen}
-
-
-% Section titles.
-\newskip\secheadingskip
-\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
-\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}}
-\def\plainsecheading#1{\sectionheading{sec}{}{#1}}
-
-% Subsection titles.
-\newskip \subsecheadingskip
-\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
-\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}}
-\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}}
-
-% Subsubsection titles.
-\let\subsubsecheadingskip = \subsecheadingskip
-\let\subsubsecheadingbreak = \subsecheadingbreak
-\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}}
-\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}}
-
-
-% Print any size section title.
-%
-% #1 is the section type (sec/subsec/subsubsec), #2 is the section
-% number (maybe empty), #3 the text.
-\def\sectionheading#1#2#3{%
-  {%
-    \expandafter\advance\csname #1headingskip\endcsname by \parskip
-    \csname #1headingbreak\endcsname
-  }%
-  {%
-    % Switch to the right set of fonts.
-    \csname #1fonts\endcsname \rm
-    %
-    % Only insert the separating space if we have a section number.
-    \def\secnum{#2}%
-    \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}%
-    %
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
-          \hangindent = \wd0 % zero if no section number
-          \unhbox0 #3}%
-  }%
-  % Add extra space after the heading -- either a line space or a
-  % paragraph space, whichever is more.  (Some people like to set
-  % \parskip to large values for some reason.)  Don't allow stretch, though.
-  \nobreak
-  \ifdim\parskip>\normalbaselineskip
-    \kern\parskip
-  \else
-    \kern\normalbaselineskip
-  \fi
-  \nobreak
-}
-
-
-\message{toc,}
-% Table of contents.
-\newwrite\tocfile
-
-% Write an entry to the toc file, opening it if necessary.
-% Called from @chapter, etc.  We supply {\folio} at the end of the
-% argument, which will end up as the last argument to the \...entry macro.
-%
-% Usage: \writetocentry{chap}{The Name of The Game}{{\the\chapno}}
-% 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.
-%
-\newif\iftocfileopened
-\def\writetocentry#1#2#3{%
-  \iftocfileopened\else
-    \immediate\openout\tocfile = \jobname.toc
-    \global\tocfileopenedtrue
-  \fi
-  %
-  \iflinks
-    \toks0 = {#2}%
-    \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}#3{\folio}}}%
-    \temp
-  \fi
-  %
-  % Tell \shipout to create a page destination if we're doing pdf, which
-  % will be the target of the links in the table of contents.  We can't
-  % just do it 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 \pdfmakepagedesttrue \fi
-}
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\newcount\savepageno
-\newcount\lastnegativepageno \lastnegativepageno = -1
-
-% Finish up the main text and 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 <tege@matematik.su.se>
-   \contentsalignmacro
-   \immediate\closeout\tocfile
-   %
-   % Don't need to put `Contents' or `Short Contents' in the headline.
-   % It is abundantly clear what they are.
-   \unnumbchapmacro{#1}\def\thischapter{}%
-   \savepageno = \pageno
-   \begingroup                  % Set up to handle contents files properly.
-      \catcode`\\=0  \catcode`\{=1  \catcode`\}=2  \catcode`\@=11
-      % We can't do this, because then an actual ^ in a section
-      % title fails, e.g., @chapter ^ -- exponentiation.  --karl, 9jul97.
-      %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
-      \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
-}
-
-
-% Normal (long) toc.
-\def\contents{%
-   \startcontents{\putwordTOC}%
-     \openin 1 \jobname.toc
-     \ifeof 1 \else
-       \closein 1
-       \input \jobname.toc
-     \fi
-     \vfill \eject
-     \contentsalignmacro % in case @setchapternewpage odd is in effect
-     \pdfmakeoutlines
-   \endgroup
-   \lastnegativepageno = \pageno
-   \global\pageno = \savepageno
-}
-
-% And just the chapters.
-\def\summarycontents{%
-   \startcontents{\putwordShortTOC}%
-      %
-      \let\chapentry = \shortchapentry
-      \let\appendixentry = \shortappendixentry
-      \let\unnumbchapentry = \shortunnumberedentry
-      % 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\secentry ##1##2##3##4{}
-      \def\subsecentry ##1##2##3##4##5{}
-      \def\subsubsecentry ##1##2##3##4##5##6{}
-      \let\unnumbsecentry = \secentry
-      \let\unnumbsubsecentry = \subsecentry
-      \let\unnumbsubsubsecentry = \subsubsecentry
-      \openin 1 \jobname.toc
-      \ifeof 1 \else
-        \closein 1
-        \input \jobname.toc
-      \fi
-     \vfill \eject
-     \contentsalignmacro % in case @setchapternewpage odd is in effect
-   \endgroup
-   \lastnegativepageno = \pageno
-   \global\pageno = \savepageno
-}
-\let\shortcontents = \summarycontents
-
-\ifpdf
-  \pdfcatalog{/PageMode /UseOutlines}%
-\fi
-
-% 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, ...
-
-% Chapters, in the main contents.
-\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
-%
-% Chapters, in the short toc.
-% See comments in \dochapentry re vbox and related settings.
-\def\shortchapentry#1#2#3{%
-  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
-}
-
-% Appendices, in the main contents.
-\def\appendixentry#1#2#3{%
-  \dochapentry{\appendixbox{\putwordAppendix{} #2}\labelspace#1}{#3}}
-%
-% Appendices, in the short toc.
-\let\shortappendixentry = \shortchapentry
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter.
-% We could simplify the code here by writing out an \appendixentry
-% command in the toc file for appendices, instead of using \chapentry
-% for both, but it doesn't seem worth it.
-%
-\newdimen\shortappendixwidth
-%
-\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.)
-  \dimen0 = 1em
-  \hbox to \dimen0{#1\hss}%
-}
-
-% Unnumbered chapters.
-\def\unnumbchapentry#1#2#3{\dochapentry{#1}{#3}}
-\def\shortunnumberedentry#1#2#3{\tocentry{#1}{\doshortpageno\bgroup#3\egroup}}
-
-% Sections.
-\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
-\def\unnumbsecentry#1#2#3#4{\dosecentry{#1}{#4}}
-
-% Subsections.
-\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
-\def\unnumbsubsecentry#1#2#3#4#5{\dosubsecentry{#1}{#5}}
-
-% And subsubsections.
-\def\subsubsecentry#1#2#3#4#5#6{%
-  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
-\def\unnumbsubsubsecentry#1#2#3#4#5#6{\dosubsubsecentry{#1}{#6}}
-
-% This parameter controls the indentation of the various levels.
-\newdimen\tocindent \tocindent = 3pc
-
-% 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}
-
-% Final typesetting of a toc entry; we use the same \entry macro as for
-% the index entries, but we want to suppress hyphenation here.  (We
-% can't do that in the \entry macro, since index entries might consist
-% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
-\def\tocentry#1#2{\begingroup
-  \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
-  % Do not use \turnoffactive in these arguments.  Since the toc is
-  % typeset in cmr, characters such as _ would come out wrong; we
-  % have to do the usual translation tricks.
-  \entry{#1}{#2}%
-\endgroup}
-
-% 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}
-\let\subsecentryfonts = \textfonts
-\let\subsubsecentryfonts = \textfonts
-
-
-\message{environments,}
-% @foo ... @end foo.
-
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-% 
-% Since these characters are used in examples, it should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-%
-\def\point{$\star$}
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\lower.1ex\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 \tensf error\kern-1.5pt}
-%
-\global\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}
-
-% @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 tex @ character.
-
-\def\tex{\begingroup
-  \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
-  \escapechar=`\\
-  %
-  \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\{=\ptexlbrace
-  \let\+=\tabalign
-  \let\}=\ptexrbrace
-  \let\*=\ptexstar
-  \let\t=\ptext
-  %
-  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
-  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
-  \def\@{@}%
-\let\Etex=\endgroup}
-
-% Define @lisp ... @end lisp.
-% @lisp does a \begingroup 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}
-
-% 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.
-%
-{\obeyspaces %
-\gdef\sepspaces{\obeyspaces\let =\tie}}
-
-% Define \obeyedspace to be our active space, whatever it is.  This is
-% for use in \parsearg.
-{\sepspaces%
-\global\let\obeyedspace= }
-
-% 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, 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 \else \penalty-50 \fi
-      \vskip\envskipamount
-    \fi
-  \fi
-}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins.
-\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
-
-\def\cartouche{%
-\par  % can't be in the midst of a paragraph.
-\begingroup
-        \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=\comment
-        \vbox\bgroup
-                \baselineskip=0pt\parskip=0pt\lineskip=0pt
-                \carttop
-                \hbox\bgroup
-                        \hskip\lskip
-                        \vrule\kern3pt
-                        \vbox\bgroup
-                                \hsize=\cartinner
-                                \kern3pt
-                                \begingroup
-                                        \baselineskip=\normbskip
-                                        \lineskip=\normlskip
-                                        \parskip=\normpskip
-                                        \vskip -\parskip
-\def\Ecartouche{%
-                                \endgroup
-                                \kern3pt
-                        \egroup
-                        \kern3pt\vrule
-                        \hskip\rskip
-                \egroup
-                \cartbot
-        \egroup
-\endgroup
-}}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\def\nonfillstart{%
-  \aboveenvbreak
-  \inENV % This group ends at the end of the body
-  \hfuzz = 12pt % 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
-  \parindent = 0pt
-  \emergencystretch = 0pt % don't try to avoid overfull boxes
-  % @cartouche defines \nonarrowing to inhibit narrowing
-  % at next level down.
-  \ifx\nonarrowing\relax
-    \advance \leftskip by \lispnarrowing
-    \exdentamount=\lispnarrowing
-    \let\exdent=\nofillexdent
-    \let\nonarrowing=\relax
-  \fi
-}
-
-% Define the \E... control sequence only if we are inside the particular
-% environment, so the error checking in \end will work.
-%
-% To end an @example-like environment, we first end the paragraph (via
-% \afterenvbreak's vertical glue), and then the group.  That way we keep
-% the zero \parskip that the environments set -- \parskip glue will be
-% inserted at the beginning of the next paragraph in the document, after
-% the environment.
-%
-\def\nonfillfinish{\afterenvbreak\endgroup}
-
-% @lisp: indented, narrowed, typewriter font.
-\def\lisp{\begingroup
-  \nonfillstart
-  \let\Elisp = \nonfillfinish
-  \tt
-  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
-  \gobble       % eat return
-}
-
-% @example: Same as @lisp.
-\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
-
-% @smallexample and @smalllisp: use smaller fonts.
-% Originally contributed by Pavel@xerox.
-\def\smalllisp{\begingroup
-  \def\Esmalllisp{\nonfillfinish\endgroup}%
-  \def\Esmallexample{\nonfillfinish\endgroup}%
-  \smallexamplefonts
-  \lisp
-}
-\let\smallexample = \smalllisp
-
-
-% @display: same as @lisp except keep current font.
-%
-\def\display{\begingroup
-  \nonfillstart
-  \let\Edisplay = \nonfillfinish
-  \gobble
-}
-%
-% @smalldisplay: @display plus smaller fonts.
-%
-\def\smalldisplay{\begingroup
-  \def\Esmalldisplay{\nonfillfinish\endgroup}%
-  \smallexamplefonts \rm
-  \display
-}
-
-% @format: same as @display except don't narrow margins.
-%
-\def\format{\begingroup
-  \let\nonarrowing = t
-  \nonfillstart
-  \let\Eformat = \nonfillfinish
-  \gobble
-}
-%
-% @smallformat: @format plus smaller fonts.
-%
-\def\smallformat{\begingroup
-  \def\Esmallformat{\nonfillfinish\endgroup}%
-  \smallexamplefonts \rm
-  \format
-}
-
-% @flushleft (same as @format).
-%
-\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
-
-% @flushright.
-%
-\def\flushright{\begingroup
-  \let\nonarrowing = t
-  \nonfillstart
-  \let\Eflushright = \nonfillfinish
-  \advance\leftskip by 0pt plus 1fill
-  \gobble
-}
-
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.
-%
-\def\quotation{%
-  \begingroup\inENV %This group ends at the end of the @quotation body
-  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
-  \parindent=0pt
-  % We have retained a nonzero parskip for the environment, since we're
-  % doing normal filling. So to avoid extra space below the environment...
-  \def\Equotation{\parskip = 0pt \nonfillfinish}%
-  %
-  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
-  \ifx\nonarrowing\relax
-    \advance\leftskip by \lispnarrowing
-    \advance\rightskip by \lispnarrowing
-    \exdentamount = \lispnarrowing
-    \let\nonarrowing = \relax
-  \fi
-}
-
-
-% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
-% If we want to allow any <char> 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\"%
-}
-%
-% [Knuth] p. 380
-\def\uncatcodespecials{%
-  \def\do##1{\catcode`##1=12}\dospecials}
-%
-% [Knuth] pp. 380,381,391
-% Disable Spanish ligatures ?` and !` of \tt font
-\begingroup
-  \catcode`\`=\active\gdef`{\relax\lq}
-\endgroup
-%
-% 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}%
-  \catcode`\`=\active
-  \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
-%
-\def\starttabbox{\setbox0=\hbox\bgroup}
-\begingroup
-  \catcode`\^^I=\active
-  \gdef\tabexpand{%
-    \catcode`\^^I=\active
-    \def^^I{\leavevmode\egroup
-      \dimen0=\wd0 % the width so far, or since the previous tab
-      \divide\dimen0 by\tabw
-      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
-      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
-      \wd0=\dimen0 \box0 \starttabbox
-    }%
-  }
-\endgroup
-\def\setupverbatim{%
-  % Easiest (and conventionally used) font for verbatim
-  \tt
-  \def\par{\leavevmode\egroup\box0\endgraf}%
-  \catcode`\`=\active
-  \tabexpand
-  % 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'{'<char>#1<char>'}'{#1}
-%
-% [Knuth] p. 382; only eat outer {}
-\begingroup
-  \catcode`[=1\catcode`]=2\catcode`\{=12\catcode`\}=12
-  \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]
-%% Include LaTeX hack for completeness -- never know
-%% \begingroup
-%% \catcode`|=0 \catcode`[=1
-%% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active
-%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[
-%% #1|endgroup|def|Everbatim[]|end[verbatim]]
-%% |endgroup
-%
-\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.
-  \gdef\doverbatim#1^^M#2@end verbatim{#2\end{verbatim}}%
-\endgroup
-%
-\def\verbatim{%
-  \def\Everbatim{\nonfillfinish\endgroup}%
-  \begingroup
-    \nonfillstart
-    \advance\leftskip by -\defbodyindent
-    \begingroup\setupverbatim\doverbatim
-}
-
-% @verbatiminclude FILE - insert text of file in verbatim environment.
-%
-% Allow normal characters that we make active in the argument (a file name).
-\def\verbatiminclude{%
-  \begingroup
-    \catcode`\\=\other
-    \catcode`~=\other
-    \catcode`^=\other
-    \catcode`_=\other
-    \catcode`|=\other
-    \catcode`<=\other
-    \catcode`>=\other
-    \catcode`+=\other
-    \parsearg\doverbatiminclude
-}
-\def\setupverbatiminclude{%
-  \begingroup
-    \nonfillstart
-    \advance\leftskip by -\defbodyindent
-    \begingroup\setupverbatim
-}
-%
-\def\doverbatiminclude#1{%
-     % Restore active chars for included file.
-  \endgroup
-  \begingroup
-    \let\value=\expandablevalue
-    \def\thisfile{#1}%
-    \expandafter\expandafter\setupverbatiminclude\input\thisfile
-  \endgroup
-  \nonfillfinish
-  \endgroup
-}
-
-% @copying ... @end copying.
-% Save the text away for @insertcopying later.  Many commands won't be
-% allowed in this context, but that's ok.
-% 
-% 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{\begingroup
-  % Define a command to swallow text until we reach `@end copying'.
-  % \ is the escape char in this texinfo.tex file, so it is the
-  % delimiter for the command; @ will be the escape char when we read
-  % it, but that doesn't matter.
-  \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}%
-  %
-  % We must preserve ^^M's in the input file; see \insertcopying below.
-  \catcode`\^^M = \active
-  \docopying
-}
-
-% What we do to finish off the copying text.
-%
-\def\enddocopying{\endgroup\ignorespaces}
-
-% @insertcopying.  Here we must play games with ^^M's.  On the one hand,
-% we need them to delimit commands such as `@end quotation', so they
-% must be active.  On the other hand, we certainly don't want every
-% end-of-line to be a \par, as would happen with the normal active
-% definition of ^^M.  On the third hand, two ^^M's in a row should still
-% generate a \par.
-% 
-% Our approach is to make ^^M insert a space and a penalty1 normally;
-% then it can also check if \lastpenalty=1.  If it does, then manually
-% do \par.
-% 
-% This messes up the normal definitions of @c[omment], so we redefine
-% it.  Similarly for @ignore.  (These commands are used in the gcc
-% manual for man page generation.)
-% 
-% Seems pretty fragile, most line-oriented commands will presumably
-% fail, but for the limited use of getting the copying text (which
-% should be quite simple) inserted, we can hope it's ok.
-%
-{\catcode`\^^M=\active %
-\gdef\insertcopying{\begingroup %
-  \parindent = 0pt  % looks wrong on title page
-  \def^^M{%
-    \ifnum \lastpenalty=1 %
-      \par %
-    \else %
-      \space \penalty 1 %
-    \fi %
-  }%
-  %
-  % Fix @c[omment] for catcode 13 ^^M's.
-  \def\c##1^^M{\ignorespaces}%
-  \let\comment = \c %
-  %
-  % Don't bother jumping through all the hoops that \doignore does, it
-  % would be very hard since the catcodes are already set.
-  \long\def\ignore##1\end ignore{\ignorespaces}%
-  %
-  \copyingtext %
-\endgroup}%
-}
-
-\message{defuns,}
-% @defun etc.
-
-% Allow user to change definition object font (\df) internally
-\def\setdeffont#1 {\csname DEF#1\endcsname}
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-
-\newcount\parencount
-
-% 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 = )
-
-{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
-
-% 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.
-\global\let(=\lparen \global\let)=\rparen
-\global\let[=\lbrack \global\let]=\rbrack
-
-\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
-\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-% This is used to turn on special parens
-% but make & act ordinary (given that it's active).
-\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr}
-
-% Definitions of (, ) and & used in args for functions.
-% This is the definition of ( outside of all parentheses.
-\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested
-  \global\advance\parencount by 1
-}
-%
-% This is the definition of ( when already inside a level of parens.
-\gdef\opnested{\char`\(\global\advance\parencount by 1 }
-%
-\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
-  % also in that case restore the outer-level definition of (.
-  \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
-  \global\advance \parencount by -1 }
-% If we encounter &foo, then turn on ()-hacking afterwards
-\gdef\amprm#1 {{\rm\&#1}\let(=\oprm \let)=\clrm\ }
-%
-\gdef\normalparens{\boldbrax\let&=\ampnr}
-} % End of definition inside \activeparens
-%% These parens (in \boldbrax) actually are a little bolder than the
-%% contained text.  This is especially needed for [ and ]
-\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 }
-\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 }
-\let\ampnr = \&
-\def\lbrb{{\bf\char`\[}}
-\def\rbrb{{\bf\char`\]}}
-
-% Active &'s sneak into the index arguments, so make sure it's defined.
-{
-  \catcode`& = \active
-  \global\let& = \ampnr
-}
-
-% \defname, which formats the name of the @def (not the args).
-% #1 is the function name.
-% #2 is the type of definition, such as "Function".
-%
-\def\defname#1#2{%
-  % How we'll output the type name.  Putting it in brackets helps
-  % distinguish it from the body text that may end up on the next line
-  % just below it.
-  \ifempty{#2}%
-    \def\defnametype{}%
-  \else
-    \def\defnametype{[\rm #2]}%
-  \fi
-  %
-  % Get the values of \leftskip and \rightskip as they were outside the @def...
-  \dimen2=\leftskip
-  \advance\dimen2 by -\defbodyindent
-  %
-  % Figure out values for the paragraph shape.
-  \setbox0=\hbox{\hskip \deflastargmargin{\defnametype}}%
-  \dimen0=\hsize \advance \dimen0 by -\wd0  % compute size for first line
-  \dimen1=\hsize \advance \dimen1 by -\defargsindent  % size for continuations
-  \parshape 2 0in \dimen0 \defargsindent \dimen1
-  %
-  % Output arg 2 ("Function" or some such) but stuck inside a box of
-  % width 0 so it does not interfere with linebreaking.
-  \noindent
-  %
-  {% Adjust \hsize to exclude the ambient margins,
-   % so that \rightline will obey them.
-   \advance \hsize by -\dimen2
-   \dimen3 = 0pt  % was -1.25pc
-   \rlap{\rightline{\defnametype\kern\dimen3}}%
-  }%
-  %
-  % Allow all lines to be underfull without complaint:
-  \tolerance=10000 \hbadness=10000
-  \advance\leftskip by -\defbodyindent
-  \exdentamount=\defbodyindent
-  {\df #1}\enskip        % output function name
-  % \defunargs will be called next to output the arguments, if any.
-}
-
-% Common pieces to start any @def...
-% #1 is the \E... control sequence to end the definition (which we define).
-% #2 is the \...x control sequence (which our caller defines).
-% #3 is the control sequence to process the header, such as \defunheader.
-% 
-\def\parsebodycommon#1#2#3{%
-  \begingroup\inENV
-  % 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 want to allow a
-  % break after all.  Check for penalty 10002 (inserted by
-  % \defargscommonending) instead of 10000, since the sectioning
-  % commands insert a \penalty10000, and we don't want to allow a break
-  % between a section heading and a defun.
-  \ifnum\lastpenalty=10002 \penalty0 \fi
-  \medbreak
-  %
-  % Define the \E... end token that this defining construct specifies
-  % so that it will exit this group.
-  \def#1{\endgraf\endgroup\medbreak}%
-  %
-  \parindent=0in
-  \advance\leftskip by \defbodyindent
-  \exdentamount=\defbodyindent
-}
-
-% Common part of the \...x definitions.
-% 
-\def\defxbodycommon{%
-  % As with \parsebodycommon above, allow line break if we have multiple
-  % x headers in a row.  It's not a great place, though.
-  \ifnum\lastpenalty=10000 \penalty1000 \fi
-  %
-  \begingroup\obeylines
-}
-
-% Process body of @defun, @deffn, @defmac, etc.
-%
-\def\defparsebody#1#2#3{%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2{\defxbodycommon \activeparens \spacesplit#3}%
-  \catcode\equalChar=\active
-  \begingroup\obeylines\activeparens
-  \spacesplit#3%
-}
-
-% #1, #2, #3 are the common arguments (see \parsebodycommon above).
-% #4, delimited by the space, is the class name.
-%
-\def\defmethparsebody#1#2#3#4 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 {\defxbodycommon \activeparens \spacesplit{#3{##1}}}%
-  \begingroup\obeylines\activeparens
-  % The \empty here prevents misinterpretation of a construct such as
-  %   @deffn {whatever} {Enharmonic comma}
-  % See comments at \deftpparsebody, although in our case we don't have
-  % to remove the \empty afterwards, since it is empty.
-  \spacesplit{#3{#4}}\empty
-}
-
-% Used for @deftypemethod and @deftypeivar.
-% #1, #2, #3 are the common arguments (see \defparsebody).
-% #4, delimited by a space, is the class name.
-% #5 is the method's return type.
-%
-\def\deftypemethparsebody#1#2#3#4 #5 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 ##2 {\defxbodycommon \activeparens \spacesplit{#3{##1}{##2}}}%
-  \begingroup\obeylines\activeparens
-  \spacesplit{#3{#4}{#5}}%
-}
-
-% Used for @deftypeop.  The change from \deftypemethparsebody is an
-% extra argument at the beginning which is the `category', instead of it
-% being the hardwired string `Method' or `Instance Variable'.  We have
-% to account for this both in the \...x definition and in parsing the
-% input at hand.  Thus also need a control sequence (passed as #5) for
-% the \E... definition to assign the category name to.
-% 
-\def\deftypeopparsebody#1#2#3#4#5 #6 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 ##2 ##3 {\def#4{##1}%
-    \defxbodycommon \activeparens \spacesplit{#3{##2}{##3}}}%
-  \begingroup\obeylines\activeparens
-  \spacesplit{#3{#5}{#6}}%
-}
-
-% For @defop.
-\def\defopparsebody #1#2#3#4#5 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 ##2 {\def#4{##1}%
-    \defxbodycommon \activeparens \spacesplit{#3{##2}}}%
-  \begingroup\obeylines\activeparens
-  \spacesplit{#3{#5}}%
-}
-
-% These parsing functions are similar to the preceding ones
-% except that they do not make parens into active characters.
-% These are used for "variables" since they have no arguments.
-%
-\def\defvarparsebody #1#2#3{%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2{\defxbodycommon \spacesplit#3}%
-  \catcode\equalChar=\active
-  \begingroup\obeylines
-  \spacesplit#3%
-}
-
-% @defopvar.
-\def\defopvarparsebody #1#2#3#4#5 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 ##2 {\def#4{##1}%
-    \defxbodycommon \spacesplit{#3{##2}}}%
-  \begingroup\obeylines
-  \spacesplit{#3{#5}}%
-}
-
-\def\defvrparsebody#1#2#3#4 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
-  \begingroup\obeylines
-  \spacesplit{#3{#4}}%
-}
-
-% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
-% type is just `struct', because we lose the braces in `{struct
-% termios}' when \spacesplit reads its undelimited argument.  Sigh.
-% \let\deftpparsebody=\defvrparsebody
-%
-% So, to get around this, we put \empty in with the type name.  That
-% way, TeX won't find exactly `{...}' as an undelimited argument, and
-% won't strip off the braces.
-%
-\def\deftpparsebody #1#2#3#4 {%
-  \parsebodycommon{#1}{#2}{#3}%
-  \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
-  \begingroup\obeylines
-  \spacesplit{\parsetpheaderline{#3{#4}}}\empty
-}
-
-% Fine, but then we have to eventually remove the \empty *and* the
-% braces (if any).  That's what this does.
-%
-\def\removeemptybraces\empty#1\relax{#1}
-
-% After \spacesplit has done its work, this is called -- #1 is the final
-% thing to call, #2 the type name (which starts with \empty), and #3
-% (which might be empty) the arguments.
-%
-\def\parsetpheaderline#1#2#3{%
-  #1{\removeemptybraces#2\relax}{#3}%
-}%
-
-% Split up #2 (the rest of the input line) at the first space token.
-% call #1 with two arguments:
-%  the first is all of #2 before the space token,
-%  the second is all of #2 after that space token.
-% If #2 contains no space token, all of it is passed as the first arg
-% and the second is passed as empty.
-%
-{\obeylines %
- \gdef\spacesplit#1#2^^M{\endgroup\spacesplitx{#1}#2 \relax\spacesplitx}%
- \long\gdef\spacesplitx#1#2 #3#4\spacesplitx{%
-   \ifx\relax #3%
-     #1{#2}{}%
-   \else %
-     #1{#2}{#3#4}%
-   \fi}%
-}
-
-% Define @defun.
-
-% This is called to end the arguments processing for all the @def... commands.
-%
-\def\defargscommonending{%
-  \interlinepenalty = 10000
-  \advance\rightskip by 0pt plus 1fil
-  \endgraf
-  \nobreak\vskip -\parskip
-  \penalty 10002  % signal to \parsebodycommon.
-}
-
-% This expands the args and terminates the paragraph they comprise.
-% 
-\def\defunargs#1{\functionparens \sl
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Set the font temporarily and use \font in case \setfont made \tensl a macro.
-{\tensl\hyphenchar\font=0}%
-#1%
-{\tensl\hyphenchar\font=45}%
-\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi%
-  \defargscommonending
-}
-
-\def\deftypefunargs #1{%
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Use \boldbraxnoamp, not \functionparens, so that & is not special.
-\boldbraxnoamp
-\tclose{#1}% avoid \code because of side effects on active chars
-  \defargscommonending
-}
-
-% Do complete processing of one @defun or @defunx line already parsed.
-
-% @deffn Command forward-char nchars
-
-\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
-
-\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @defun == @deffn Function
-
-\def\defun{\defparsebody\Edefun\defunx\defunheader}
-
-\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDeffunc}%
-\defunargs {#2}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefun int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
-
-% #1 is the data type.  #2 is the name and args.
-\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
-% #1 is the data type, #2 the name, #3 the args.
-\def\deftypefunheaderx #1#2 #3\relax{%
-\doind {fn}{\code{#2}}% Make entry in function index
-\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}%
-\deftypefunargs {#3}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
-
-% \defheaderxcond#1\relax$.$
-% puts #1 in @code, followed by a space, but does nothing if #1 is null.
-\def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi}
-
-% #1 is the classification.  #2 is the data type.  #3 is the name and args.
-\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
-% #1 is the classification, #2 the data type, #3 the name, #4 the args.
-\def\deftypefnheaderx #1#2#3 #4\relax{%
-\doind {fn}{\code{#3}}% Make entry in function index
-\begingroup
-\normalparens % notably, turn off `&' magic, which prevents
-%               at least some C++ text from working
-\defname {\defheaderxcond#2\relax$.$#3}{#1}%
-\deftypefunargs {#4}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @defmac == @deffn Macro
-
-\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
-
-\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDefmac}%
-\defunargs {#2}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @defspec == @deffn Special Form
-
-\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
-
-\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDefspec}%
-\defunargs {#2}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @defop CATEGORY CLASS OPERATION ARG...
-%
-\def\defop #1 {\def\defoptype{#1}%
-\defopparsebody\Edefop\defopx\defopheader\defoptype}
-%
-\def\defopheader#1#2#3{%
-  \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% function index entry
-  \begingroup
-    \defname{#2}{\defoptype\ \putwordon\ #1}%
-    \defunargs{#3}%
-  \endgroup
-}
-
-% @deftypeop CATEGORY CLASS TYPE OPERATION ARG...
-%
-\def\deftypeop #1 {\def\deftypeopcategory{#1}%
-  \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader
-                       \deftypeopcategory}
-%
-% #1 is the class name, #2 the data type, #3 the operation name, #4 the args.
-\def\deftypeopheader#1#2#3#4{%
-  \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
-  \begingroup
-    \defname{\defheaderxcond#2\relax$.$#3}
-            {\deftypeopcategory\ \putwordon\ \code{#1}}%
-    \deftypefunargs{#4}%
-  \endgroup
-}
-
-% @deftypemethod CLASS TYPE METHOD ARG...
-%
-\def\deftypemethod{%
-  \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
-%
-% #1 is the class name, #2 the data type, #3 the method name, #4 the args.
-\def\deftypemethodheader#1#2#3#4{%
-  \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
-  \begingroup
-    \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}%
-    \deftypefunargs{#4}%
-  \endgroup
-}
-
-% @deftypeivar CLASS TYPE VARNAME
-%
-\def\deftypeivar{%
-  \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader}
-%
-% #1 is the class name, #2 the data type, #3 the variable name.
-\def\deftypeivarheader#1#2#3{%
-  \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
-  \begingroup
-    \defname{\defheaderxcond#2\relax$.$#3}
-            {\putwordInstanceVariableof\ \code{#1}}%
-    \defvarargs{#3}%
-  \endgroup
-}
-
-% @defmethod == @defop Method
-%
-\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
-%
-% #1 is the class name, #2 the method name, #3 the args.
-\def\defmethodheader#1#2#3{%
-  \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index
-  \begingroup
-    \defname{#2}{\putwordMethodon\ \code{#1}}%
-    \defunargs{#3}%
-  \endgroup
-}
-
-% @defcv {Class Option} foo-class foo-flag
-
-\def\defcv #1 {\def\defcvtype{#1}%
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
-
-\def\defcvarheader #1#2#3{%
-  \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% variable index entry
-  \begingroup
-    \defname{#2}{\defcvtype\ \putwordof\ #1}%
-    \defvarargs{#3}%
-  \endgroup
-}
-
-% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME
-%
-\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
-%
-\def\defivarheader#1#2#3{%
-  \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% entry in var index
-  \begingroup
-    \defname{#2}{\putwordInstanceVariableof\ #1}%
-    \defvarargs{#3}%
-  \endgroup
-}
-
-% @defvar
-% First, define the processing that is wanted for arguments of @defvar.
-% This is actually simple: just print them in roman.
-% This must expand the args and terminate the paragraph they make up
-\def\defvarargs #1{\normalparens #1%
-  \defargscommonending
-}
-
-% @defvr Counter foo-count
-
-\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
-
-\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
-
-% @defvar == @defvr Variable
-
-\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
-
-\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{\putwordDefvar}%
-\defvarargs {#2}\endgroup %
-}
-
-% @defopt == @defvr {User Option}
-
-\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
-
-\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{\putwordDefopt}%
-\defvarargs {#2}\endgroup %
-}
-
-% @deftypevar int foobar
-
-\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
-
-% #1 is the data type.  #2 is the name, perhaps followed by text that
-% is actually part of the data type, which should not be put into the index.
-\def\deftypevarheader #1#2{%
-\dovarind#2 \relax% Make entry in variables index
-\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}%
-  \defargscommonending
-\endgroup}
-\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}}
-
-% @deftypevr {Global Flag} int enable
-
-\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
-
-\def\deftypevrheader #1#2#3{\dovarind#3 \relax%
-\begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1}
-  \defargscommonending
-\endgroup}
-
-% Now define @deftp
-% Args are printed in bold, a slight difference from @defvar.
-
-\def\deftpargs #1{\bf \defvarargs{#1}}
-
-% @deftp Class window height width ...
-
-\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader}
-
-\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
-\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
-
-% These definitions are used if you use @defunx (etc.)
-% anywhere other than immediately after a @defun or @defunx.
-% 
-\def\defcvx#1 {\errmessage{@defcvx in invalid context}}
-\def\deffnx#1 {\errmessage{@deffnx in invalid context}}
-\def\defivarx#1 {\errmessage{@defivarx in invalid context}}
-\def\defmacx#1 {\errmessage{@defmacx in invalid context}}
-\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}}
-\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
-\def\defopx#1 {\errmessage{@defopx in invalid context}}
-\def\defspecx#1 {\errmessage{@defspecx in invalid context}}
-\def\deftpx#1 {\errmessage{@deftpx in invalid context}}
-\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}}
-\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}}
-\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}}
-\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}}
-\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}}
-\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}}
-\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}}
-\def\defunx#1 {\errmessage{@defunx in invalid context}}
-\def\defvarx#1 {\errmessage{@defvarx in invalid context}}
-\def\defvrx#1 {\errmessage{@defvrx in invalid context}}
-
-
-\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\undefined
- \newwrite\macscribble
- \def\scanmacro#1{%
-   \begingroup \newlinechar`\^^M
-   % Undo catcode changes of \startcontents and \doprintindex
-   \catcode`\@=0 \catcode`\\=\other \escapechar=`\@
-   % Append \endinput to make sure that TeX does not see the ending newline.
-   \toks0={#1\endinput}%
-   \immediate\openout\macscribble=\jobname.tmp
-   \immediate\write\macscribble{\the\toks0}%
-   \immediate\closeout\macscribble
-   \let\xeatspaces\eatspaces
-   \input \jobname.tmp
-   \endgroup
-}
-\else
-\def\scanmacro#1{%
-\begingroup \newlinechar`\^^M
-% Undo catcode changes of \startcontents and \doprintindex
-\catcode`\@=0 \catcode`\\=\other \escapechar=`\@
-\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup}
-\fi
-
-\newcount\paramno   % Count of parameters
-\newtoks\macname    % Macro name
-\newif\ifrecursive  % Is it recursive?
-\def\macrolist{}    % List of all defined macros in the form
-                    % \do\macro1\do\macro2...
-
-% Utility routines.
-% Thisdoes \let #1 = #2, except with \csnames.
-\def\cslet#1#2{%
-\expandafter\expandafter
-\expandafter\let
-\expandafter\expandafter
-\csname#1\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 \.
-
-% 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\macrobodyctxt{%
-  \catcode`\~=\other
-  \catcode`\^=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\+=\other
-  \catcode`\{=\other
-  \catcode`\}=\other
-  \catcode`\@=\other
-  \catcode`\^^M=\other
-  \usembodybackslash}
-
-\def\macroargctxt{%
-  \catcode`\~=\other
-  \catcode`\^=\other
-  \catcode`\_=\other
-  \catcode`\|=\other
-  \catcode`\<=\other
-  \catcode`\>=\other
-  \catcode`\+=\other
-  \catcode`\@=\other
-  \catcode`\\=\other}
-
-% \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\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%
-  \else
-     \expandafter\parsemargdef \argl;%
-  \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%
-     % Add the macroname to \macrolist
-     \toks0 = \expandafter{\macrolist\do}%
-     \xdef\macrolist{\the\toks0
-       \expandafter\noexpand\csname\the\macname\endcsname}%
-  \fi
-  \begingroup \macrobodyctxt
-  \ifrecursive \expandafter\parsermacbody
-  \else \expandafter\parsemacbody
-  \fi}
-
-\def\unmacro{\parsearg\dounmacro}
-\def\dounmacro#1{%
-  \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\do\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\do \noexpand #1%
-  \fi
-}
-
-% This makes use of the obscure feature that if the last token of a
-% <parameter list> 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}}
-
-% 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 be ##N where N is the position in that list.
-% 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.
-
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
-        \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
-\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}
-
-% These two commands read recursive and nonrecursive macro bodies.
-% (They're different since rec and nonrec macros end differently.)
-
-\long\def\parsemacbody#1@end macro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\long\def\parsermacbody#1@end rmacro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, 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 % many
-      \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}}%
-    \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 % many
-      \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}%
-    \fi
-  \fi}
-
-\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\next=#1\futurelet\nchar\braceorlinexxx}
-\def\braceorlinexxx{%
-  \ifx\nchar\bgroup\else
-    \expandafter\parsearg
-  \fi \next}
-
-% We mant to disable all macros during \shipout so that they are not
-% expanded by \write.
-\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
-  \edef\next{\macrolist}\expandafter\endgroup\next}
-
-
-% @alias.
-% We need some trickery to remove the optional spaces around the equal
-% sign.  Just make them active and then expand them all to nothing.
-\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx}
-\def\aliasxxx #1{\aliasyyy#1\relax}
-\def\aliasyyy #1=#2\relax{\ignoreactivespaces
-\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=%
-           \expandafter\noexpand\csname#2\endcsname}%
-\expandafter\endgroup\next}
-
-
-\message{cross references,}
-% @xref etc.
-
-\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 job is to define \lastnode.
-\def\node{\ENVcheck\parsearg\nodezzz}
-\def\nodezzz#1{\nodexxx [#1,]}
-\def\nodexxx[#1,#2]{\gdef\lastnode{#1}}
-\let\nwnode=\node
-\let\lastnode=\relax
-
-% The sectioning commands (@chapter, etc.) call these.
-\def\donoderef{%
-  \ifx\lastnode\relax\else
-    \expandafter\expandafter\expandafter\setref{\lastnode}%
-      {Ysectionnumberandtype}%
-    \global\let\lastnode=\relax
-  \fi
-}
-\def\unnumbnoderef{%
-  \ifx\lastnode\relax\else
-    \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}%
-    \global\let\lastnode=\relax
-  \fi
-}
-\def\appendixnoderef{%
-  \ifx\lastnode\relax\else
-    \expandafter\expandafter\expandafter\setref{\lastnode}%
-      {Yappendixletterandtype}%
-    \global\let\lastnode=\relax
-  \fi
-}
-
-
-% @anchor{NAME} -- define xref target at arbitrary point.
-%
-\newcount\savesfregister
-\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
-\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
-\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
-
-% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
-% anchor), namely NAME-title (the corresponding @chapter/etc. name),
-% NAME-pg (the page number), and NAME-snt (section number and type).
-% Called from \foonoderef.
-% 
-% We have to set \indexdummies so commands such as @code in a section
-% title aren't expanded.  It would be nicer not to expand the titles in
-% the first place, but there's so many layers that that is hard to do.
-%
-% Likewise, use \turnoffactive so that punctuation chars such as underscore
-% and backslash work in node names.
-% 
-\def\setref#1#2{{%
-  \atdummies
-  \pdfmkdest{#1}%
-  %
-  \turnoffactive
-  \dosetq{#1-title}{Ytitle}%
-  \dosetq{#1-pg}{Ypagenumber}%
-  \dosetq{#1-snt}{#2}%
-}}
-
-% @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,,,,,,,]}
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
-  \unsepspaces
-  \def\printedmanual{\ignorespaces #5}%
-  \def\printednodename{\ignorespaces #3}%
-  \setbox1=\hbox{\printedmanual}%
-  \setbox0=\hbox{\printednodename}%
-  \ifdim \wd0 = 0pt
-    % No printed node name was explicitly given.
-    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
-      % Use the node name inside the square brackets.
-      \def\printednodename{\ignorespaces #1}%
-    \else
-      % Use the actual chapter/section title appear inside
-      % the square brackets.  Use the real section title if we have it.
-      \ifdim \wd1 > 0pt
-        % It is in another manual, so we don't have it.
-        \def\printednodename{\ignorespaces #1}%
-      \else
-        \ifhavexrefs
-          % We know the real title if we have the xref values.
-          \def\printednodename{\refx{#1-title}{}}%
-        \else
-          % Otherwise just copy the Info node name.
-          \def\printednodename{\ignorespaces #1}%
-        \fi%
-      \fi
-    \fi
-  \fi
-  %
-  % If we use \unhbox0 and \unhbox1 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.
-  \ifpdf
-    \leavevmode
-    \getfilename{#4}%
-    {\turnoffactive \otherbackslash
-     \ifnum\filenamelength>0
-       \startlink attr{/Border [0 0 0]}%
-         goto file{\the\filename.pdf} name{#1}%
-     \else
-       \startlink attr{/Border [0 0 0]}%
-         goto name{#1}%
-     \fi
-    }%
-    \linkcolor
-  \fi
-  %
-  \ifdim \wd1 > 0pt
-    \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}%
-  \else
-    % _ (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 \otherbackslash
-     % 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
-    }%
-    % [mynode],
-    [\printednodename],\space
-    % page 3
-    \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
-  \fi
-  \endlink
-\endgroup}
-
-% \dosetq is called from \setref to do the actual \write (\iflinks).
-%
-\def\dosetq#1#2{%
-  {\let\folio=0%
-   \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
-   \iflinks \next \fi
-  }%
-}
-
-% \internalsetq{foo}{page} expands into
-%   CHARACTERS @xrdef{foo}{...expansion of \page...}
-\def\internalsetq#1#2{@xrdef{#1}{\csname #2\endcsname}}
-
-% Things to be expanded by \internalsetq.
-% 
-\def\Ypagenumber{\folio}
-\def\Ytitle{\thissection}
-\def\Ynothing{}
-\def\Ysectionnumberandtype{%
-  \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\Yappendixletterandtype{%
-  \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
-}
-
-% 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{\the\inputlineno:\space}
-\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 X#1\endcsname
-  }%
-  \ifx\thisrefX\relax
-    % If not defined, say something at least.
-    \angleleft un\-de\-fined\angleright
-    \iflinks
-      \ifhavexrefs
-        \message{\linenumber Undefined cross reference `#1'.}%
-      \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.
-%
-\def\xrdef#1{\expandafter\gdef\csname X#1\endcsname}
-
-% Read the last existing aux file, if any.  No error if none exists.
-\def\readauxfile{\begingroup
-  \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
-  %
-  % Make the characters 128-255 be printing characters
-  {%
-    \count 1=128
-    \def\loop{%
-      \catcode\count 1=\other
-      \advance\count 1 by 1
-      \ifnum \count 1<256 \loop \fi
-    }%
-  }%
-  %
-  % Turn off \ as an escape so we do not lose on
-  % entries which were dumped with control sequences in their names.
-  % For example, @xrdef{$\leq $-fun}{page ...} made by @defun ^^
-  % Reference to such entries still does not work the way one would wish,
-  % but at least they do not bomb out when the aux file is read in.
-  \catcode`\\=\other
-  %
-  % @ is our escape character in .aux files.
-  \catcode`\{=1
-  \catcode`\}=2
-  \catcode`\@=0
-  %
-  \openin 1 \jobname.aux
-  \ifeof 1 \else
-    \closein 1
-    \input \jobname.aux
-    \global\havexrefstrue
-    \global\warnedobstrue
-  \fi
-  % Open the new aux file.  TeX will close it automatically at exit.
-  \openout\auxfile=\jobname.aux
-\endgroup}
-
-
-% 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
-
-\let\ptexfootnote=\footnote
-
-{\catcode `\@=11
-%
-% Auto-number footnotes.  Otherwise like plain.
-\gdef\footnote{%
-  \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}\/\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 fail inside footnotes because the tokens are fixed when
-% the footnote is read.  --karl, 16nov96.
-%
-% The start of the footnote looks usually like this:
-\gdef\startfootins{\insert\footins\bgroup}
-%
-% ... but this macro is redefined inside @multitable.
-%
-\gdef\dofootnote{%
-  \startfootins
-  % 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
-  \futurelet\next\fo@t
-}
-}%end \catcode `\@=11
-
-% @| 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).
-%
-\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
-    }%
-  }%
-}
-
-% 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}
-
-% @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
-  \closein 1
-  % 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
-%
-% 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\undefined
-    \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 this 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
-    \nobreak\bigskip
-    % 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
-    \line\bgroup\hss
-  \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 \hss \egroup \bigbreak \fi  % space after the image
-\endgroup}
-
-
-\message{localization,}
-% and i18n.
-
-% @documentlanguage is usually given very early, just after
-% @setfilename.  If done too late, it may not override everything
-% properly.  Single argument is the language abbreviation.
-% It would be nice if we could set up a hyphenation file here.
-%
-\def\documentlanguage{\parsearg\dodocumentlanguage}
-\def\dodocumentlanguage#1{%
-  \tex % read txi-??.tex file in plain TeX.
-  % Read the file if it exists.
-  \openin 1 txi-#1.tex
-  \ifeof1
-    \errhelp = \nolanghelp
-    \errmessage{Cannot read language file txi-#1.tex}%
-    \let\temp = \relax
-  \else
-    \def\temp{\input txi-#1.tex }%
-  \fi
-  \temp
-  \endgroup
-}
-\newhelp\nolanghelp{The given language definition file cannot be found or
-is empty.  Maybe you need to install it?  In the current directory
-should work if nowhere else does.}
-
-
-% @documentencoding should change something in TeX eventually, most
-% likely, but for now just recognize it.
-\let\documentencoding = \comment
-
-
-% Page size parameters.
-%
-\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 so finicky about underfull hboxes, either.
-\hbadness = 2000
-
-% Following George Bush, just 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
-  \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{46\baselineskip}{6in}%
-                    {\voffset}{.25in}%
-                    {\bindingoffset}{36pt}%
-                    {11in}{8.5in}%
-}}
-
-% Use @smallbook to reset parameters for 7x9.5 (or so) format.
-\def\smallbook{{\globaldefs = 1
-  \parskip = 2pt plus 1pt
-  \textleading = 12pt
-  %
-  \internalpagesizes{7.5in}{5in}%
-                    {\voffset}{.25in}%
-                    {\bindingoffset}{16pt}%
-                    {9.25in}{7in}%
-  %
-  \lispnarrowing = 0.3in
-  \tolerance = 700
-  \hfuzz = 1pt
-  \contentsrightmargin = 0pt
-  \defbodyindent = .5cm
-}}
-
-% 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{51\baselineskip}{160mm}
-                    {\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.
-%
-\def\pagesizes{\parsearg\pagesizesxxx}
-\def\pagesizesxxx#1{\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
-  \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.}
-
-% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}%$ font-lock fix
-
-% This macro is used to make a character print one way in ttfont
-% where it can probably just be output, 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~{{\tt\char126}}
-\chardef\hat=`\^
-\catcode`\^=\active
-\def^{{\tt \hat}}
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-% 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<{{\tt \less}}
-\chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-\catcode`\$=\active
-\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
-
-% Set up an active definition for =, but don't enable it most of the time.
-{\catcode`\==\active
-\global\def={{\tt \char 61}}}
-
-\catcode`+=\active
-\catcode`\_=\active
-
-% 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}
-
-\catcode`\@=0
-
-% \rawbackslashxx outputs one backslash character in current font,
-% as in \char`\\.
-\global\chardef\rawbackslashxx=`\\
-
-% \rawbackslash defines an active \ to do \rawbackslashxx.
-% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
-{\catcode`\\=\active
- @gdef@rawbackslash{@let\=@rawbackslashxx}
- @gdef@otherbackslash{@let\=@realbackslash}
-}
-
-% \realbackslash is an actual character `\' with catcode other.
-{\catcode`\\=\other @gdef@realbackslash{\}}
-
-% \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\rawbackslashxx}}
-
-\catcode`\\=\active
-
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-@def@turnoffactive{%
-  @let"=@normaldoublequote
-  @let\=@realbackslash
-  @let~=@normaltilde
-  @let^=@normalcaret
-  @let_=@normalunderscore
-  @let|=@normalverticalbar
-  @let<=@normalless
-  @let>=@normalgreater
-  @let+=@normalplus
-  @let$=@normaldollar %$ font-lock fix
-}
-
-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.  (Thus, \ is not expandable when this is in
-% effect.)
-% 
-@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
-
-% 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 back turn 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 look ok in all fonts, so just make them not special.  
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
-
-@c Set initial fonts.
-@textfonts
-@rm
-
-
-@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:
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..1d74826dec13617304217d222ff558ca91920cb5
--- /dev/null
@@ -0,0 +1 @@
+texinfo.tex.20030205
\ No newline at end of file
diff --git a/examples/scripts/adventure.sh.save1 b/examples/scripts/adventure.sh.save1
new file mode 100755 (executable)
index 0000000..4e22393
--- /dev/null
@@ -0,0 +1,549 @@
+#!/bin/bash
+#      ash -- "Adventure shell"
+#      last edit:      86/04/21        D A Gwyn
+#      SCCS ID:        @(#)ash.sh      1.4
+
+OPATH=$PATH
+
+ask()
+{
+       echo -n "$@" '[y/n] '
+       read ans
+
+       case "$ans" in
+       y*|Y*)
+               return 0
+               ;;
+       *)
+               return 1
+               ;;
+       esac
+}
+       
+CAT=${PAGER:-more}
+
+ash_inst()
+{
+       cat <<- EOF
+
+                       Instructions for the Adventure shell
+
+       Welcome to the Adventure shell!  In this exploration of the UNIX file
+       system, I will act as your eyes and hands.  As you move around, I will
+       describe whatever is visible and will carry out your commands.  The
+       general form of a command is
+               Verb Object Extra_stuff.
+       Most commands pay no attention to the "Extra_stuff", and many do not
+       need an "Object".  A typical command is
+               get all
+       which picks up all files in the current "room" (directory).  You can
+       find out what you are carrying by typing the command
+               inventory
+       The command "help" results in a full description of all commands that I
+       understand.  To quit the Adventure shell, type
+               quit
+
+       There are UNIX monsters lurking in the background.  These are also
+       known as "commands with arguments".
+
+       Good luck!
+       EOF
+}
+
+ash_help()
+{
+echo "I understand the following commands (synonyms in parentheses):"
+echo ""
+
+echo "change OBJECT to NEW_NAME       changes the name of the object"
+echo "clone OBJECT as NEW_NAME        duplicates the object"
+echo "drop OBJECTS                    leaves the objects in the room"
+echo "enter (go) PASSAGE              takes the labeled passage"
+echo "examine OBJECTS                 describes the objects in detail"
+echo "feed OBJECT to MONSTER          stuffs the object into a UNIX monster"
+echo "get (take) OBJECTS              picks up the specified objects"
+echo "gripe (bug)                     report a problem with the Adventure shell"
+echo "help                            prints this summary"
+echo "inventory (i)                   tells what you are carrying"
+echo "kill (destroy) OBJECTS          destroys the objects"
+echo "look (l)                        describes the room, including hidden objects"
+echo "open (read) OBJECT              shows the contents of an object"
+echo "quit (exit)                     leaves the Adventure shell"
+echo "resurrect OBJECTS               attempts to restore dead objects"
+echo "steal OBJECT from MONSTER       obtains the object from a UNIX monster"
+echo "throw OBJECT at daemon          feeds the object to the printer daemon"
+echo "up                              takes the overhead passage"
+echo "wake MONSTER                    awakens a UNIX monster"
+echo "where (w)                       tells you where you are"
+echo "xyzzy                           moves you to your home"
+}
+       
+MAINT=chet@ins.cwru.edu
+
+PATH=/usr/ucb:/bin:/usr/bin:/usr/local/bin:.
+export PATH
+
+trap 'echo Ouch!' 2 3
+#trap '' 18                    # disable Berkeley job control
+
+ash_lk(){ echo " $1 " | fgrep " $2 " >&- 2>&-; }
+ash_pr(){ echo $* | tr ' ' '\012' | pr -5 -t -w75 -l$[ ( $# + 4 ) / 5 ]; }
+ash_rm(){ echo " $1 " | sed -e "s/ $2 / /" -e 's/^ //' -e 's/ $//'; }
+
+# enable history, bang history expansion, and emacs editing
+set -o history
+set -o histexpand
+set -o emacs
+
+cd
+LIM=.limbo                     # $HOME/$LIM contains "destroyed" objects
+mkdir $LIM >&- 2>&-
+KNAP=.knapsack                 # $HOME/$KNAP contains objects being "carried"
+if [ ! -d $KNAP ]
+then   mkdir $KNAP >&- 2>&-
+       if [ $? = 0 ]
+       then    echo 'You found a discarded empty knapsack.'
+       else    echo 'You have no knapsack to carry things in.'
+               exit 1
+       fi
+else   echo 'One moment while I peek in your old knapsack...'
+fi
+
+kn=`echo \`ls -a $KNAP | sed -e '/^\.$/d' -e '/^\.\.$/d'\``
+
+if ask 'Welcome to the Adventure shell!  Do you need instructions?'
+then
+       ash_inst
+       echo -n 'Type a newline to continue: '
+       read
+fi
+
+wiz=false
+cha=false
+prev=$LIM
+while :
+do     room=`pwd`
+       if [ $room != $prev ]
+       then    if [ $room = $HOME ]
+               then    echo 'You are in your own home.'
+               else    echo "You have entered $room."
+               fi
+               exs=
+               obs=
+               hexs=
+               hobs=
+               f=false
+               for i in `ls -a`
+               do      case $i in
+                       .|..)   ;;
+                       .*)     if [ -f $i ]
+                               then    hobs="$hobs $i"
+                               elif [ -d $i ]
+                               then    hexs="$hexs $i"
+                               else    f=true
+                               fi
+                               ;;
+                       *)      if [ -f $i ]
+                               then    obs="$obs $i"
+                               elif [ -d $i ]
+                               then    exs="$exs $i"
+                               else    f=true
+                               fi
+                               ;;
+                       esac
+               done
+               if [ "$obs" ]
+               then    echo 'This room contains:'
+                       ash_pr $obs
+               else    echo 'The room looks empty.'
+               fi
+               if [ "$exs" ]
+               then    echo 'There are exits labeled:'
+                       ash_pr $exs
+                       echo 'as well as a passage overhead.'
+               else    echo 'There is a passage overhead.'
+               fi
+               if sh -c $f
+               then    echo 'There are shadowy figures in the corner.'
+               fi
+               prev=$room
+       fi
+
+       read -e -p '-advsh> ' verb obj x        # prompt is '-advsh> '
+       if [ $? != 0 ]
+       then    verb=quit               # EOF
+       fi
+
+       case $verb in
+       change)         if [ "$obj" ]
+                       then    if ash_lk "$obs $hobs" "$obj"
+                               then    set -- $x
+                                       case "$1" in
+                                       to)     if [ "$2" ]
+                                               then    if [ -f $2 ]
+                                                       then    echo "You must destroy $2 first."
+                                                               set --
+                                                       fi
+                                                       if [ "$2" ]
+                                                       then    if mv $obj $2 >&- 2>&-
+                                                               then    echo "The $obj shimmers and turns into $2."
+                                                                       obs=`ash_rm "$2 $obs" "$obj"`
+                                                               else    echo "There is a cloud of smoke but the $obj is unchanged."
+                                                               fi
+                                                       fi
+                                               else    echo 'To what?'
+                                               fi
+                                               ;;
+                                       *)      echo "Change $obj to what?"
+                                               ;;
+                                       esac
+                               else    if ash_lk "$kn" "$obj"
+                                       then    echo 'You must drop it first.'
+                                       else    echo "I see no $obj here."
+                                       fi
+                               fi
+                       else    echo 'Change what?'
+                       fi
+                       ;;
+       clone)          if [ "$obj" ]
+                       then    if ash_lk "$obs $hobs" "$obj"
+                               then    if [ ! -r $obj ]
+                                       then    echo "The $obj does not wish to be cloned."
+                                       else    set -- $x
+                                               case "$1" in
+                                               as)     if [ "$2" ]
+                                                       then    if [ -f $2 ]
+                                                               then    echo "You must destroy $2 first."
+                                                               else    if cp $obj $2 >&- 2>&-
+                                                                       then    echo "Poof!  When the smoke clears, you see the new $2."
+                                                                               obs="$obs $2"
+                                                                       else    echo 'You hear a dull thud but no clone appears.'
+                                                                       fi
+                                                               fi
+                                                       else    echo 'As what?'
+                                                       fi
+                                                       ;;
+                                               *)      echo "Clone $obj as what?"
+                                                       ;;
+                                               esac
+                                       fi
+                               else    if ash_lk "$kn" "$obj"
+                                       then    echo 'You must drop it first.'
+                                       else    echo "I see no $obj here."
+                                       fi
+                               fi
+                       else    echo 'Clone what?'
+                       fi
+                       ;;
+       drop)           if [ "$obj" ]
+                       then    for it in $obj $x
+                               do      if ash_lk "$kn" "$it"
+                                       then    if [ -w $it ]
+                                               then    echo "You must destroy $it first."
+                                               else    if mv $HOME/$KNAP/$it $it >&- 2>&-
+                                                       then    echo "$it: dropped."
+                                                               kn=`ash_rm "$kn" "$it"`
+                                                               obs=`echo $it $obs`
+                                                       else    echo "The $it is caught in your knapsack."
+                                                       fi
+                                               fi
+                                       else    echo "You're not carrying the $it!"
+                                       fi
+                               done
+                       else    echo 'Drop what?'
+                       fi
+                       ;;
+       enter|go)       if [ "$obj" ]
+                       then    if [ $obj != up ]
+                               then    if ash_lk "$exs $hexs" "$obj"
+                                       then    if [ -x $obj ]
+                                               then    if cd $obj
+                                                       then    echo 'You squeeze through the passage.'
+                                                       else    echo "You can't go that direction."
+                                                       fi
+                                               else    echo 'An invisible force blocks your way.'
+                                               fi
+                                       else    echo 'I see no such passage.'
+                                       fi
+                               else    if cd ..
+                                       then    echo 'You struggle upwards.'
+                                       else    echo "You can't reach that high."
+                                       fi
+                               fi
+                       else    echo 'Which passage?'
+                       fi
+                       ;;
+       examine)        if [ "$obj" ]
+                       then    if [ $obj = all ]
+                               then    $obj=`echo $obs $exs`
+                                       x=
+                               fi
+                               for it in $obj $x
+                               do      if ash_lk "$obs $hobs $exs $hexs" "$it"
+                                       then    echo "Upon close inspection of the $it, you see:"
+                                               ls -ld $it 2>&-
+                                               if [ $? != 0 ]
+                                               then    echo "-- when you look directly at the $it, it vanishes."
+                                               fi
+                                       else    if ash_lk "$kn" "$it"
+                                               then    echo 'You must drop it first.'
+                                               else    echo "I see no $it here."
+                                               fi
+                                       fi
+                               done
+                       else    echo 'Examine what?'
+                       fi
+                       ;;
+       feed)           if [ "$obj" ]
+                       then    if ash_lk "$obs $hobs" "$obj"
+                               then    set -- $x
+                                       case "$1" in
+                                       to)     if [ "$2" ]
+                                               then    shift
+                                                       if PATH=$OPATH $* <$obj 2>&-
+                                                       then    echo "The $1 monster devours your $obj."
+                                                               if rm -f $obj >&- 2>&-
+                                                               then    obs=`ash_rm "$obs" "$obj"`
+                                                               else    echo 'But he spits it back up.'
+                                                               fi
+                                                       else    echo "The $1 monster holds his nose in disdain."
+                                                       fi
+                                               else    echo 'To what?'
+                                               fi
+                                               ;;
+                                       *)      echo "Feed $obj to what?"
+                                               ;;
+                                       esac
+                               else    if ash_lk "$kn" "$obj"
+                                       then    echo 'You must drop it first.'
+                                       else    echo "I see no $obj here."
+                                       fi
+                               fi
+                       else    echo 'Feed what?'
+                       fi
+                       ;;
+       get|take)       if [ "$obj" ]
+                       then    if [ $obj = all ]
+                               then    obj="$obs"
+                                       x=
+                               fi
+                               for it in $obj $x
+                               do      if ash_lk "$obs $hobs" "$it"
+                                       then    if ash_lk "$kn" "$it"
+                                               then    echo 'You already have one.'
+                                               else    if mv $it $HOME/$KNAP/$it >&- 2>&-
+                                                       then    echo "$it: taken."
+                                                               kn="$it $kn"
+                                                               obs=`ash_rm "$obs" "$it"`
+                                                       else    echo "The $it is too heavy."
+                                                       fi
+                                               fi
+                                       else    echo "I see no $it here."
+                                       fi
+                               done
+                       else    echo 'Get what?'
+                       fi
+                       ;;
+       gripe|bug)      echo 'Please describe the problem and your situation at the time it failed.\nEnd the bug report with a line containing just a Ctrl-D.'
+                       cat | mail $MAINT -s 'ash bug'
+                       echo 'Thank you!'
+                       ;;
+       help)           ash_help
+                       ;;
+       inventory|i)    if [ "$kn" ]
+                       then    echo 'Your knapsack contains:'
+                               ash_pr $kn
+                       else    echo 'You are poverty-stricken.'
+                       fi
+                       ;;
+       kill|destroy)   if [ "$obj" ]
+                       then    if [ $obj = all ]
+                               then    x=
+                                       if ask "Do you really want to attempt to $verb them all?"
+                                       then    obj=`echo $obs`
+                                       else    echo 'Chicken!'
+                                               obj=
+                                       fi
+                               fi
+                               for it in $obj $x
+                               do      if ash_lk "$obs $hobs" "$it"
+                                       then    if mv $it $HOME/$LIM <&- >&- 2>&-
+                                               then    if [ $verb = kill ]
+                                                       then    echo "The $it cannot defend himself; he dies."
+                                                       else    echo "You have destroyed the $it; it vanishes."
+                                                       fi
+                                                       obs=`ash_rm "$obs" "$it"`
+                                               else    if [ $verb = kill ]
+                                                       then    echo "Your feeble blows are no match for the $it."
+                                                       else    echo "The $it is indestructible."
+                                                       fi
+                                               fi
+                                       else    if ash_lk "$kn" "$it"
+                                               then    echo "You must drop the $it first."
+                                                       found=false
+                                               else    echo "I see no $it here."
+                                               fi
+                                       fi
+                               done
+                       else    echo 'Kill what?'
+                       fi
+                       ;;
+       look|l)         obs=`echo $obs $hobs`
+                       hobs=
+                       if [ "$obs" ]
+                       then    echo 'The room contains:'
+                               ash_pr $obs
+                       else    echo 'The room is empty.'
+                       fi
+                       exs=`echo $exs $hexs`
+                       hexs=
+                       if [ "$exs" ]
+                       then    echo 'There are exits plainly labeled:'
+                               ash_pr $exs
+                               echo 'and a passage directly overhead.'
+                       else    echo 'The only exit is directly overhead.'
+                       fi
+                       ;;
+       magic)          if [ "$obj" = mode ]
+                       then    if sh -c $cha
+                               then    echo 'You had your chance and you blew it.'
+                               else    if ask 'Are you a wizard?'
+                                       then    echo -n 'Prove it!  Say the magic word: '
+                                               read obj
+                                               if [ "$obj" = armadillo ]
+                                               then    echo 'Yes, master!!'
+                                                       wiz=true
+                                               else    echo "Homie says: I don't think so"
+                                                       cha=true
+                                               fi
+                                       else    echo "I didn't think so."
+                                       fi
+                               fi
+                       else    echo 'Nice try.'
+                       fi
+                       ;;
+       open|read)      if [ "$obj" ]
+                       then    if ash_lk "$obs $hobs" "$obj"
+                               then    if [ -r $obj ]
+                                       then    if [ -s $obj ]
+                                               then    echo "Opening the $obj reveals:"
+                                                       $CAT < $obj
+                                                       if [ $? != 0 ]
+                                                       then    echo '-- oops, you lost the contents!'
+                                                       fi
+                                               else    echo "There is nothing inside the $obj."
+                                               fi
+                                       else    echo "You do not have the proper tools to open the $obj."
+                                       fi
+                               else    if ash_lk "$kn" "$obj"
+                                       then    echo 'You must drop it first.'
+                                               found=false
+                                       else    echo "I see no $obj here."
+                                       fi
+                               fi
+                       else    echo 'Open what?'
+                       fi
+                       ;;
+       quit|exit)      if ask 'Do you really want to quit now?'
+                       then    if [ "$kn" ]
+                               then    echo 'The contents of your knapsack will still be there next time.'
+                               fi
+                               rm -rf $HOME/$LIM
+                               echo 'See you later!'
+                               exit 0
+                       fi
+                       ;;
+       resurrect)      if [ "$obj" ]
+                       then    for it in $obj $x
+                               do      if ash_lk "$obs $hobs" "$it"
+                                       then    echo "The $it is already alive and well."
+                                       else    if mv $HOME/$LIM/$it $it <&- >&- 2>&-
+                                               then    echo "The $it staggers to his feet."
+                                                       obs=`echo $it $obs`
+                                               else    echo "There are sparks but no $it appears."
+                                               fi
+                                       fi
+                               done
+                       else    echo 'Resurrect what?'
+                       fi
+                       ;;
+       steal)          if [ "$obj" ]
+                       then    if ash_lk "$obs $hobs" "$obj"
+                               then    echo 'There is already one here.'
+                               else    set -- $x
+                                       case "$1" in
+                                       from)   if [ "$2" ]
+                                               then    shift
+                                                       if PATH=$OPATH $* >$obj 2>&-
+                                                       then    echo "The $1 monster drops the $obj."
+                                                               obs=`echo $obj $obs`
+                                                       else    echo "The $1 monster runs away as you approach."
+                                                               rm -f $obj >&- 2>&-
+                                                       fi
+                                               else    echo 'From what?'
+                                               fi
+                                               ;;
+                                       *)      echo "Steal $obj from what?"
+                                               ;;
+                                       esac
+                               fi
+                       else    echo 'Steal what?'
+                       fi
+                       ;;
+       throw)          if [ "$obj" ]
+                       then    if ash_lk "$obs $hobs" "$obj"
+                               then    set -- $x
+                                       case "$1" in
+                                       at)     case "$2" in
+                                               daemon) if sh -c "lpr -r $obj"
+                                                       then    echo "The daemon catches the $obj, turns it into paper,\nand leaves it in the basket."
+                                                               obs=`ash_rm "$obs" "$obj"`
+                                                       else    echo "The daemon is nowhere to be found."
+                                                       fi
+                                                       ;;
+                                               *)      echo 'At what?'
+                                                       ;;
+                                               esac
+                                               ;;
+                                       *)      echo "Throw $obj at what?"
+                                               ;;
+                                       esac
+                               else    if ash_lk "$kn" "$obj"
+                                       then    echo 'It is in your knapsack.'
+                                               found=false
+                                       else    echo "I see no $obj here."
+                                       fi
+                               fi
+                       else    echo 'Throw what?'
+                       fi
+                       ;;
+       u|up)           if cd ..
+                       then    echo 'You pull yourself up a level.'
+                       else    echo "You can't reach that high."
+                       fi
+                       ;;
+       wake)           if [ "$obj" ]
+                       then    echo "You awaken the $obj monster:"
+                               PATH=$OPATH $obj $x
+                               echo 'The monster slithers back into the darkness.'
+                       else    echo 'Wake what?'
+                       fi
+                       ;;
+       w|where)        echo "You are in $room."
+                       ;;
+       xyzzy)          if cd
+                       then    echo 'A strange feeling comes over you.'
+                       else    echo 'Your spell fizzles out.'
+                       fi
+                       ;;
+       *)              if [ "$verb" ]
+                       then    if sh -c $wiz
+                               then    PATH=$OPATH $verb $obj $x
+                               else    echo "I don't know how to \"$verb\"."
+                                       echo 'Type "help" for assistance.'
+                               fi
+                       else    echo 'Say something!'
+                       fi
+                       ;;
+       esac
+done
index a015d78..c745c2a 100644 (file)
--- a/externs.h
+++ b/externs.h
@@ -362,6 +362,9 @@ extern int sh_mktmpfd __P((char *, int, char **));
 #undef xstrchr
 extern char *xstrchr __P((const char *, int));
 
+/* declarations for functions defined in lib/sh/zcatfd.c */
+extern int zcatfd __P((int, int, char *));
+
 /* declarations for functions defined in lib/sh/zread.c */
 extern ssize_t zread __P((int, char *, size_t));
 extern ssize_t zreadintr __P((int, char *, size_t));
index df4b113..f62cccb 100644 (file)
--- a/general.c
+++ b/general.c
@@ -39,6 +39,8 @@
 #include "bashintl.h"
 
 #include "shell.h"
+#include "test.h"
+
 #include <tilde/tilde.h>
 
 #if !defined (errno)
diff --git a/include/memalloc.h.save b/include/memalloc.h.save
new file mode 100644 (file)
index 0000000..a1a2706
--- /dev/null
@@ -0,0 +1,58 @@
+/* memalloc.h -- consolidate code for including alloca.h or malloc.h and
+   defining alloca. */
+
+/* Copyright (C) 1993 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash, the Bourne Again SHell.
+
+   Bash is free software; you can redistribute it and/or modify it under
+   the terms of the GNU General Public License as published by the Free
+   Software Foundation; either version 2, or (at your option) any later
+   version.
+
+   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+   for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with Bash; see the file COPYING.  If not, write to the Free Software
+   Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#if !defined (_MEMALLOC_H_)
+#  define _MEMALLOC_H_
+
+#if defined (sparc) && defined (sun) && !defined (HAVE_ALLOCA_H)
+#  define HAVE_ALLOCA_H
+#endif
+
+#if defined (__GNUC__) && !defined (HAVE_ALLOCA)
+#  define HAVE_ALLOCA
+#endif
+
+#if defined (HAVE_ALLOCA_H) && !defined (HAVE_ALLOCA)
+#  define HAVE_ALLOCA
+#endif /* HAVE_ALLOCA_H && !HAVE_ALLOCA */
+
+#if defined (__GNUC__) && !defined (C_ALLOCA)
+#  undef alloca
+#  define alloca __builtin_alloca
+#else /* !__GNUC__ || C_ALLOCA */
+#  if defined (HAVE_ALLOCA_H) && !defined (C_ALLOCA)
+#    if defined (IBMESA)
+#      include <malloc.h>
+#    else /* !IBMESA */
+#      include <alloca.h>
+#    endif /* !IBMESA */
+#  else  /* !HAVE_ALLOCA_H || C_ALLOCA */
+#    if defined (__hpux) && defined (__STDC__) && !defined (alloca)
+extern void *alloca ();
+#    else
+#      if !defined (alloca)
+extern char *alloca ();
+#      endif /* !alloca */
+#    endif /* !__hpux || !__STDC__ && !alloca */
+#  endif /* !HAVE_ALLOCA_H || C_ALLOCA */
+#endif /* !__GNUC__ || C_ALLOCA */
+
+#endif /* _MEMALLOC_H_ */
diff --git a/lib/malloc/malloc.c.save b/lib/malloc/malloc.c.save
new file mode 100644 (file)
index 0000000..39846ec
--- /dev/null
@@ -0,0 +1,1213 @@
+/* malloc.c - dynamic memory allocation for bash. */
+
+/*  Copyright (C) 1985, 1987, 1997 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
+    the Free Software Foundation; either version 2, or (at your option)
+    any later version.
+
+    This program 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, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
+
+In other words, you are welcome to use, share and improve this program.
+You are forbidden to forbid anyone else to use, share and improve
+what you give them.   Help stamp out software-hoarding!  */
+
+/*
+ * @(#)nmalloc.c 1 (Caltech) 2/21/82
+ *
+ *     U of M Modified: 20 Jun 1983 ACT: strange hacks for Emacs
+ *
+ *     Nov 1983, Mike@BRL, Added support for 4.1C/4.2 BSD.
+ *
+ * This is a very fast storage allocator.  It allocates blocks of a small 
+ * number of different sizes, and keeps free lists of each size.  Blocks
+ * that don't exactly fit are passed up to the next larger size.  In this 
+ * implementation, the available sizes are (2^n)-4 (or -16) bytes long.
+ * This is designed for use in a program that uses vast quantities of
+ * memory, but bombs when it runs out.  To make it a little better, it
+ * warns the user when he starts to get near the end.
+ *
+ * June 84, ACT: modified rcheck code to check the range given to malloc,
+ * rather than the range determined by the 2-power used.
+ *
+ * Jan 85, RMS: calls malloc_warning to issue warning on nearly full.
+ * No longer Emacs-specific; can serve as all-purpose malloc for GNU.
+ * You should call malloc_init to reinitialize after loading dumped Emacs.
+ * Call malloc_stats to get info on memory stats if MALLOC_STATS turned on.
+ * realloc knows how to return same block given, just changing its size,
+ * if the power of 2 is correct.
+ */
+
+/*
+ * nextf[i] is the pointer to the next free block of size 2^(i+3).  The
+ * smallest allocatable block is 8 bytes.  The overhead information will
+ * go in the first int of the block, and the returned pointer will point
+ * to the second.
+ */
+
+/* Define MEMSCRAMBLE to have free() write 0xcf into memory as it's freed, to
+   uncover callers that refer to freed memory, and to have malloc() write 0xdf
+   into memory as it's allocated to avoid referring to previous contents. */
+
+/* SCO 3.2v4 getcwd and possibly other libc routines fail with MEMSCRAMBLE;
+   handled by configure. */
+
+#if defined (HAVE_CONFIG_H)
+#  include <config.h>
+#endif /* HAVE_CONFIG_H */
+
+#if defined (SHELL)
+#  include "bashtypes.h"
+#  include "stdc.h"
+#else
+#  include <sys/types.h>
+#endif
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif
+
+/* Determine which kind of system this is.  */
+#include <signal.h>
+
+#if defined (HAVE_STRING_H)
+#  include <string.h>
+#else
+#  include <strings.h>
+#endif
+
+#include <stdio.h>
+
+/* Define getpagesize () if the system does not.  */
+#ifndef HAVE_GETPAGESIZE
+#  include "getpagesize.h"
+#endif
+
+#include "imalloc.h"
+#ifdef MALLOC_STATS
+#  include "mstats.h"
+#endif
+#ifdef MALLOC_REGISTER
+#  include "table.h"
+#endif
+#ifdef MALLOC_WATCH
+#  include "watch.h"
+#endif
+
+/* System-specific omissions. */
+#ifdef HPUX
+#  define NO_VALLOC
+#endif
+
+#define NBUCKETS       30
+
+#define ISALLOC ((char) 0xf7)  /* magic byte that implies allocation */
+#define ISFREE ((char) 0x54)   /* magic byte that implies free block */
+                               /* this is for error checking only */
+#define ISMEMALIGN ((char) 0xd6)  /* Stored before the value returned by
+                                    memalign, with the rest of the word
+                                    being the distance to the true
+                                    beginning of the block.  */
+
+
+/* We have a flag indicating whether memory is allocated, an index in
+   nextf[], a size field, and a sentinel value to determine whether or
+   not a caller wrote before the start of allocated memory; to realloc()
+   memory we either copy mh_nbytes or just change mh_nbytes if there is
+   enough room in the block for the new size.  Range checking is always
+   done. */
+union mhead {
+  bits64_t mh_align;                                           /* 8 */
+  struct {
+    char mi_alloc;             /* ISALLOC or ISFREE */         /* 1 */
+    char mi_index;             /* index in nextf[] */          /* 1 */
+    /* Remainder are valid only when block is allocated */
+    u_bits16_t mi_magic2;      /* should be == MAGIC2 */       /* 2 */
+    u_bits32_t mi_nbytes;      /* # of bytes allocated */      /* 4 */
+  } minfo;
+};
+#define mh_alloc       minfo.mi_alloc
+#define mh_index       minfo.mi_index
+#define mh_nbytes      minfo.mi_nbytes
+#define mh_magic2      minfo.mi_magic2
+
+#define MOVERHEAD      sizeof(union mhead)
+#define MALIGN_MASK    7       /* one less than desired alignment */
+
+/* Access free-list pointer of a block.
+   It is stored at block + sizeof (char *).
+   This is not a field in the minfo structure member of union mhead
+   because we want sizeof (union mhead)
+   to describe the overhead for when the block is in use,
+   and we do not want the free-list pointer to count in that.  */
+
+#define CHAIN(a) \
+  (*(union mhead **) (sizeof (char *) + (char *) (a)))
+
+/* To implement range checking, we write magic values in at the beginning
+   and end of each allocated block, and make sure they are undisturbed
+   whenever a free or a realloc occurs. */
+
+/* Written in the 2 bytes before the block's real space (-4 bytes) */
+#define MAGIC2 0x5555
+#define MSLOP  4               /* 4 bytes extra for u_bits32_t size */
+
+/* How many bytes are actually allocated for a request of size N --
+   rounded up to nearest multiple of 8 after accounting for malloc
+   overhead. */
+#define ALLOCATED_BYTES(n) \
+       (((n) + MOVERHEAD + MSLOP + MALIGN_MASK) & ~MALIGN_MASK)
+
+#define ASSERT(p) \
+  do \
+    { \
+      if (!(p)) xbotch((PTR_T)0, ERR_ASSERT_FAILED, __STRING(p), file, line); \
+    } \
+  while (0)
+
+/* Minimum and maximum bucket indices for block splitting (and to bound
+   the search for a block to split). */
+#define SPLIT_MIN      2       /* XXX - was 3 */
+#define SPLIT_MID      11
+#define SPLIT_MAX      14
+
+/* Minimum and maximum bucket indices for block coalescing. */
+#define COMBINE_MIN    2
+#define COMBINE_MAX    (pagebucket - 1)        /* XXX */
+
+#define LESSCORE_MIN   10
+#define LESSCORE_FRC   13
+
+#define STARTBUCK      1
+
+/* Flags for the internal functions. */
+#define MALLOC_WRAPPER 0x01    /* wrapper function */
+#define MALLOC_INTERNAL        0x02    /* internal function calling another */
+#define MALLOC_NOTRACE 0x04    /* don't trace this allocation or free */
+#define MALLOC_NOREG   0x08    /* don't register this allocation or free */
+
+/* Future use. */
+#define ERR_DUPFREE            0x01
+#define ERR_UNALLOC            0x02
+#define ERR_UNDERFLOW          0x04    
+#define ERR_ASSERT_FAILED      0x08
+
+/* Evaluates to true if NB is appropriate for bucket NU.  NB is adjusted
+   appropriately by the caller to account for malloc overhead.  This only
+   checks that the recorded size is not too big for the bucket.  We
+   can't check whether or not it's in between NU and NU-1 because we
+   might have encountered a busy bucket when allocating and moved up to
+   the next size. */
+#define IN_BUCKET(nb, nu)      ((nb) <= binsizes[(nu)])
+
+/* Use this when we want to be sure that NB is in bucket NU. */
+#define RIGHT_BUCKET(nb, nu) \
+       (((nb) > binsizes[(nu)-1]) && ((nb) <= binsizes[(nu)]))
+
+/* nextf[i] is free list of blocks of size 2**(i + 3)  */
+
+static union mhead *nextf[NBUCKETS];
+
+/* busy[i] is nonzero while allocation of block size i is in progress.  */
+
+static char busy[NBUCKETS];
+
+static int pagesz;     /* system page size. */
+static int pagebucket; /* bucket for requests a page in size */
+static int maxbuck;    /* highest bucket receiving allocation request. */
+
+static char *memtop;   /* top of heap */
+
+static unsigned long binsizes[NBUCKETS] = {
+       8UL, 16UL, 32UL, 64UL, 128UL, 256UL, 512UL, 1024UL, 2048UL, 4096UL,
+       8192UL, 16384UL, 32768UL, 65536UL, 131072UL, 262144UL, 524288UL,
+       1048576UL, 2097152UL, 4194304UL, 8388608UL, 16777216UL, 33554432UL,
+       67108864UL, 134217728UL, 268435456UL, 536870912UL, 1073741824UL,
+       2147483648UL, 4294967296UL-1
+};
+
+/* binsizes[x] == (1 << ((x) + 3)) */
+#define binsize(x)     binsizes[(x)]
+
+/* Declarations for internal functions */
+static PTR_T internal_malloc __P((size_t, const char *, int, int));
+static PTR_T internal_realloc __P((PTR_T, size_t, const char *, int, int));
+static void internal_free __P((PTR_T, const char *, int, int));
+static PTR_T internal_memalign __P((unsigned int, size_t, const char *, int, int));
+#ifndef NO_CALLOC
+static PTR_T internal_calloc __P((size_t, size_t, const char *, int, int));
+static void internal_cfree __P((PTR_T, const char *, int, int));
+#endif
+#ifndef NO_VALLOC
+static PTR_T internal_valloc __P((size_t, const char *, int, int));
+#endif
+
+#if defined (botch)
+extern void botch ();
+#else
+static void botch __P((const char *, const char *, int));
+#endif
+static void xbotch __P((PTR_T, int, const char *, const char *, int));
+
+#if !HAVE_DECL_SBRK
+extern char *sbrk ();
+#endif /* !HAVE_DECL_SBRK */
+
+#ifdef SHELL
+extern int interrupt_immediately;
+extern int signal_is_trapped __P((int));
+#endif
+
+#ifdef MALLOC_STATS
+struct _malstats _mstats;
+#endif /* MALLOC_STATS */
+
+/* Debugging variables available to applications. */
+int malloc_flags = 0;  /* future use */
+int malloc_trace = 0;  /* trace allocations and frees to stderr */
+int malloc_register = 0;       /* future use */
+
+#ifdef MALLOC_TRACE
+char _malloc_trace_buckets[NBUCKETS];
+
+/* These should really go into a header file. */
+extern void mtrace_alloc __P((const char *, PTR_T, size_t, const char *, int));
+extern void mtrace_free __P((PTR_T, int, const char *, int));
+#endif
+
+#if !defined (botch)
+static void
+botch (s, file, line)
+{
+  fprintf (stderr, "malloc: failed assertion: %s\n", s);
+  (void)fflush (stderr);
+  abort ();
+}
+#endif
+
+/* print the file and line number that caused the assertion failure and
+   call botch() to do whatever the application wants with the information */
+static void
+xbotch (mem, e, s, file, line)
+     PTR_T mem;
+     int e;
+     const char *s;
+     const char *file;
+     int line;
+{
+  fprintf (stderr, "\r\nmalloc: %s:%d: assertion botched\r\n",
+                       file ? file : "unknown", line);
+#ifdef MALLOC_REGISTER
+  if (mem != NULL && malloc_register)
+    mregister_describe_mem (mem, stderr);
+#endif
+  (void)fflush (stderr);
+  botch(s, file, line);
+}
+
+/* Coalesce two adjacent free blocks off the free list for size NU - 1,
+   as long as we can find two adjacent free blocks.  nextf[NU -1] is
+   assumed to not be busy; the caller (morecore()) checks for this. */
+static void
+bcoalesce (nu)
+     register int nu;
+{
+  register union mhead *mp, *mp1, *mp2;
+  register int nbuck;
+  unsigned long siz;
+
+  nbuck = nu - 1;
+  if (nextf[nbuck] == 0)
+    return;
+
+  siz = binsize (nbuck);
+
+  mp2 = mp1 = nextf[nbuck];
+  mp = CHAIN (mp1);
+  while (mp && mp != (union mhead *)((char *)mp1 + siz))
+    {
+      mp2 = mp1;
+      mp1 = mp;
+      mp = CHAIN (mp);
+    }
+  if (mp == 0)
+    return;
+
+  /* OK, now we have mp1 pointing to the block we want to add to nextf[NU].
+     CHAIN(mp2) must equal mp1.  Check that mp1 and mp are adjacent. */
+  if (mp2 != mp1 && CHAIN(mp2) != mp1)
+    xbotch ((PTR_T)0, 0, "bcoalesce: CHAIN(mp2) != mp1", (char *)NULL, 0);
+
+#ifdef MALLOC_DEBUG
+  if (CHAIN (mp1) != (union mhead *)((char *)mp1 + siz))
+    return;    /* not adjacent */
+#endif
+
+#ifdef MALLOC_STATS
+  _mstats.tbcoalesce++;
+  _mstats.ncoalesce[nbuck]++;
+#endif
+
+  /* Since they are adjacent, remove them from the free list */
+  if (mp1 == nextf[nbuck])
+    nextf[nbuck] = CHAIN (mp);
+  else
+    CHAIN (mp2) = CHAIN (mp);
+
+  /* And add the combined two blocks to nextf[NU]. */
+  mp1->mh_alloc = ISFREE;
+  mp1->mh_index = nu;
+  CHAIN (mp1) = nextf[nu];
+  nextf[nu] = mp1;
+}
+
+/* Split a block at index > NU (but less than SPLIT_MAX) into a set of
+   blocks of the correct size, and attach them to nextf[NU].  nextf[NU]
+   is assumed to be empty.  Must be called with signals blocked (e.g.,
+   by morecore()). */
+static void
+bsplit (nu)
+     register int nu;
+{
+  register union mhead *mp;
+  int nbuck, nblks, split_max;
+  unsigned long siz;
+
+  split_max = (maxbuck > SPLIT_MAX) ? maxbuck : SPLIT_MAX;
+
+  if (nu >= SPLIT_MID)
+    {
+      for (nbuck = split_max; nbuck > nu; nbuck--)
+       {
+         if (busy[nbuck] || nextf[nbuck] == 0)
+           continue;
+         break;
+       }
+    }
+  else
+    {
+      for (nbuck = nu + 1; nbuck <= split_max; nbuck++)
+       {
+         if (busy[nbuck] || nextf[nbuck] == 0)
+           continue;
+         break;
+       }
+    }
+
+  if (nbuck > split_max || nbuck <= nu)
+    return;
+
+  /* XXX might want to split only if nextf[nbuck] has >= 2 blocks free
+     and nbuck is below some threshold. */
+
+#ifdef MALLOC_STATS
+  _mstats.tbsplit++;
+  _mstats.nsplit[nbuck]++;
+#endif
+
+  /* Figure out how many blocks we'll get. */
+  siz = binsize (nu);
+  nblks = binsize (nbuck) / siz;
+
+  /* Remove the block from the chain of larger blocks. */
+  mp = nextf[nbuck];
+  nextf[nbuck] = CHAIN (mp);
+
+  /* Split the block and put it on the requested chain. */
+  nextf[nu] = mp;
+  while (1)
+    {
+      mp->mh_alloc = ISFREE;
+      mp->mh_index = nu;
+      if (--nblks <= 0) break;
+      CHAIN (mp) = (union mhead *)((char *)mp + siz);
+      mp = (union mhead *)((char *)mp + siz);
+    }
+  CHAIN (mp) = 0;
+}
+
+static void
+block_signals (setp, osetp)
+     sigset_t *setp, *osetp;
+{
+#ifdef HAVE_POSIX_SIGNALS
+  sigfillset (setp);
+  sigemptyset (osetp);
+  sigprocmask (SIG_BLOCK, setp, osetp);
+#else
+#  if defined (HAVE_BSD_SIGNALS)
+  *osetp = sigsetmask (-1);
+#  endif
+#endif
+}
+
+static void
+unblock_signals (setp, osetp)
+     sigset_t *setp, *osetp;
+{
+#ifdef HAVE_POSIX_SIGNALS
+  sigprocmask (SIG_SETMASK, osetp, (sigset_t *)NULL);
+#else
+#  if defined (HAVE_BSD_SIGNALS)
+  sigsetmask (*osetp);
+#  endif
+#endif
+}
+
+/* Return some memory to the system by reducing the break.  This is only
+   called with NU > pagebucket, so we're always assured of giving back
+   more than one page of memory. */  
+static void
+lesscore (nu)                  /* give system back some memory */
+     register int nu;          /* size index we're discarding  */
+{
+  long siz;
+
+  siz = binsize (nu);
+  /* Should check for errors here, I guess. */
+  sbrk (-siz);
+  memtop -= siz;
+
+#ifdef MALLOC_STATS
+  _mstats.nsbrk++;
+  _mstats.tsbrk -= siz;
+  _mstats.nlesscore[nu]++;
+#endif
+}
+  
+static void
+morecore (nu)                  /* ask system for more memory */
+     register int nu;          /* size index to get more of  */
+{
+  register union mhead *mp;
+  register int nblks;
+  register long siz;
+  long sbrk_amt;               /* amount to get via sbrk() */
+  sigset_t set, oset;
+  int blocked_sigs;
+
+  /* Block all signals in case we are executed from a signal handler. */
+  blocked_sigs = 0;
+#ifdef SHELL
+  if (interrupt_immediately || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD))
+#endif
+    {
+      block_signals (&set, &oset);
+      blocked_sigs = 1;
+    }
+
+  siz = binsize (nu);  /* size of desired block for nextf[nu] */
+
+  if (siz < 0)
+    goto morecore_done;                /* oops */
+
+#ifdef MALLOC_STATS
+  _mstats.nmorecore[nu]++;
+#endif
+
+  /* Try to split a larger block here, if we're within the range of sizes
+     to split. */
+  if (nu >= SPLIT_MIN)
+    {
+      bsplit (nu);
+      if (nextf[nu] != 0)
+       goto morecore_done;
+    }
+
+  /* Try to coalesce two adjacent blocks from the free list on nextf[nu - 1],
+     if we can, and we're withing the range of the block coalescing limits. */
+  if (nu >= COMBINE_MIN && nu < COMBINE_MAX && busy[nu - 1] == 0 && nextf[nu - 1])
+    {
+      bcoalesce (nu);
+      if (nextf[nu] != 0)
+       goto morecore_done;
+    }
+
+  /* Take at least a page, and figure out how many blocks of the requested
+     size we're getting. */
+  if (siz <= pagesz)
+    {
+      sbrk_amt = pagesz;
+      nblks = sbrk_amt / siz;
+    }
+  else
+    {
+      /* We always want to request an integral multiple of the page size
+        from the kernel, so let's compute whether or not `siz' is such
+        an amount.  If it is, we can just request it.  If not, we want
+        the smallest integral multiple of pagesize that is larger than
+        `siz' and will satisfy the request. */
+      sbrk_amt = siz & (pagesz - 1);
+      if (sbrk_amt == 0)
+       sbrk_amt = siz;
+      else
+       sbrk_amt = siz + pagesz - sbrk_amt;
+      nblks = 1;
+    }
+
+#ifdef MALLOC_STATS
+  _mstats.nsbrk++;
+  _mstats.tsbrk += sbrk_amt;
+#endif
+
+  mp = (union mhead *) sbrk (sbrk_amt);
+
+  /* Totally out of memory. */
+  if ((long)mp == -1)
+    goto morecore_done;
+
+  memtop += sbrk_amt;
+
+  /* shouldn't happen, but just in case -- require 8-byte alignment */
+  if ((long)mp & MALIGN_MASK)
+    {
+      mp = (union mhead *) (((long)mp + MALIGN_MASK) & ~MALIGN_MASK);
+      nblks--;
+    }
+
+  /* save new header and link the nblks blocks together */
+  nextf[nu] = mp;
+  while (1)
+    {
+      mp->mh_alloc = ISFREE;
+      mp->mh_index = nu;
+      if (--nblks <= 0) break;
+      CHAIN (mp) = (union mhead *)((char *)mp + siz);
+      mp = (union mhead *)((char *)mp + siz);
+    }
+  CHAIN (mp) = 0;
+
+morecore_done:
+  if (blocked_sigs)
+    unblock_signals (&set, &oset);
+}
+
+static void
+malloc_debug_dummy ()
+{
+  write (1, "malloc_debug_dummy\n", 19);
+}
+
+#define PREPOP_BIN     2
+#define PREPOP_SIZE    32
+
+static int
+pagealign ()
+{
+  register long nbytes;
+  register int nunits;
+  register union mhead *mp;
+  long sbrk_needed;
+  char *curbrk;
+
+  pagesz = getpagesize ();
+  if (pagesz < 1024)
+    pagesz = 1024;
+
+  /* OK, how much do we need to allocate to make things page-aligned?
+     Some of this partial page will be wasted space, but we'll use as
+     much as we can.  Once we figure out how much to advance the break
+     pointer, go ahead and do it. */
+  memtop = curbrk = sbrk (0);
+  sbrk_needed = pagesz - ((long)curbrk & (pagesz - 1));        /* sbrk(0) % pagesz */
+  if (sbrk_needed < 0)
+    sbrk_needed += pagesz;
+
+  /* Now allocate the wasted space. */
+  if (sbrk_needed)
+    {
+#ifdef MALLOC_STATS
+      _mstats.nsbrk++;
+      _mstats.tsbrk += sbrk_needed;
+#endif
+      curbrk = sbrk (sbrk_needed);
+      if ((long)curbrk == -1)
+       return -1;
+      memtop += sbrk_needed;
+
+      /* Take the memory which would otherwise be wasted and populate the most
+        popular bin (2 == 32 bytes) with it.  Add whatever we need to curbrk
+        to make things 32-byte aligned, compute how many 32-byte chunks we're
+        going to get, and set up the bin. */
+      curbrk += sbrk_needed & (PREPOP_SIZE - 1);
+      sbrk_needed -= sbrk_needed & (PREPOP_SIZE - 1);
+      nunits = sbrk_needed / PREPOP_SIZE;
+
+      mp = (union mhead *)curbrk;
+
+      nextf[PREPOP_BIN] = mp;
+      while (1)
+       {
+         mp->mh_alloc = ISFREE;
+         mp->mh_index = PREPOP_BIN;
+         if (--nunits <= 0) break;
+         CHAIN(mp) = (union mhead *)((char *)mp + PREPOP_SIZE);
+         mp = (union mhead *)((char *)mp + PREPOP_SIZE);
+       }
+      CHAIN(mp) = 0;
+    }
+
+  /* compute which bin corresponds to the page size. */
+  for (nunits = 7; nunits < NBUCKETS; nunits++)
+    if (pagesz <= binsize(nunits))
+      break;
+  pagebucket = nunits;
+
+  return 0;
+}
+    
+static PTR_T
+internal_malloc (n, file, line, flags)         /* get a block */
+     size_t n;
+     const char *file;
+     int line, flags;
+{
+  register union mhead *p;
+  register int nunits;
+  register char *m;
+  long nbytes;  
+
+  /* Get the system page size and align break pointer so future sbrks will
+     be page-aligned.  The page size must be at least 1K -- anything
+     smaller is increased. */
+  if (pagesz == 0)
+    if (pagealign () < 0)
+      return ((PTR_T)NULL);
+  /* Figure out how many bytes are required, rounding up to the nearest
+     multiple of 8, then figure out which nextf[] area to use.  Try to
+     be smart about where to start searching -- if the number of bytes
+     needed is greater than the page size, we can start at pagebucket. */
+  nbytes = ALLOCATED_BYTES(n);
+  nunits = (nbytes <= (pagesz >> 1)) ? STARTBUCK : pagebucket;
+  for ( ; nunits < NBUCKETS; nunits++)
+    if (nbytes <= binsize(nunits))
+      break;
+
+  /* Silently reject too-large requests. */
+  if (nunits >= NBUCKETS)
+    return ((PTR_T) NULL);
+
+  /* In case this is reentrant use of malloc from signal handler,
+     pick a block size that no other malloc level is currently
+     trying to allocate.  That's the easiest harmless way not to
+     interfere with the other level of execution.  */
+#ifdef MALLOC_STATS
+  if (busy[nunits]) _mstats.nrecurse++;
+#endif
+  while (busy[nunits]) nunits++;
+  busy[nunits] = 1;
+
+  if (nunits > maxbuck)
+    maxbuck = nunits;
+
+  /* If there are no blocks of the appropriate size, go get some */
+  if (nextf[nunits] == 0)
+    morecore (nunits);
+
+  /* Get one block off the list, and set the new list head */
+  if ((p = nextf[nunits]) == NULL)
+    {
+      busy[nunits] = 0;
+      return NULL;
+    }
+  nextf[nunits] = CHAIN (p);
+  busy[nunits] = 0;
+
+  /* Check for free block clobbered */
+  /* If not for this check, we would gobble a clobbered free chain ptr
+     and bomb out on the NEXT allocate of this size block */
+  if (p->mh_alloc != ISFREE || p->mh_index != nunits)
+    xbotch ((PTR_T)(p+1), 0, "malloc: block on free list clobbered", file, line);
+
+  /* Fill in the info, and set up the magic numbers for range checking. */
+  p->mh_alloc = ISALLOC;
+  p->mh_magic2 = MAGIC2;
+  p->mh_nbytes = n;
+
+  /* End guard */
+  m = (char *) (p + 1) + n;
+  *(u_bits32_t *)m = n;
+
+#ifdef MEMSCRAMBLE
+  MALLOC_MEMSET ((char *)(p + 1), 0xdf, n);    /* scramble previous contents */
+#endif
+#ifdef MALLOC_STATS
+  _mstats.nmalloc[nunits]++;
+  _mstats.tmalloc[nunits]++;
+  _mstats.nmal++;
+  _mstats.bytesreq += n;
+#endif /* MALLOC_STATS */
+
+#ifdef MALLOC_TRACE
+  if (malloc_trace && (flags & MALLOC_NOTRACE) == 0)
+    mtrace_alloc ("malloc", p + 1, n, file, line);
+  else if (_malloc_trace_buckets[nunits])
+    mtrace_alloc ("malloc", p + 1, n, file, line);
+#endif
+
+#ifdef MALLOC_REGISTER
+  if (malloc_register && (flags & MALLOC_NOREG) == 0)
+    mregister_alloc ("malloc", p + 1, n, file, line);
+#endif
+
+#ifdef MALLOC_WATCH
+  if (_malloc_nwatch > 0)
+    _malloc_ckwatch (p + 1, file, line, W_ALLOC, n);
+#endif
+
+  return (PTR_T) (p + 1);
+}
+
+static void
+internal_free (mem, file, line, flags)
+     PTR_T mem;
+     const char *file;
+     int line, flags;
+{
+  register union mhead *p;
+  register char *ap;
+  register int nunits;
+  register unsigned int nbytes;
+  int ubytes;          /* caller-requested size */
+
+  if ((ap = (char *)mem) == 0)
+    return;
+
+  p = (union mhead *) ap - 1;
+
+  if (p->mh_alloc == ISMEMALIGN)
+    {
+      ap -= p->mh_nbytes;
+      p = (union mhead *) ap - 1;
+    }
+
+#if defined (MALLOC_TRACE) || defined (MALLOC_REGISTER)
+  if (malloc_trace || malloc_register)
+    ubytes = p->mh_nbytes;
+#endif
+
+  if (p->mh_alloc != ISALLOC)
+    {
+      if (p->mh_alloc == ISFREE)
+       xbotch (mem, ERR_DUPFREE,
+               "free: called with already freed block argument", file, line);
+      else
+       xbotch (mem, ERR_UNALLOC,
+               "free: called with unallocated block argument", file, line);
+    }
+
+  ASSERT (p->mh_magic2 == MAGIC2);
+
+  nunits = p->mh_index;
+  nbytes = ALLOCATED_BYTES(p->mh_nbytes);
+  /* Since the sizeof(u_bits32_t) bytes before the memory handed to the user
+     are now used for the number of bytes allocated, a simple check of
+     mh_magic2 is no longer sufficient to catch things like p[-1] = 'x'.
+     We sanity-check the value of mh_nbytes against the size of the blocks
+     in the appropriate bucket before we use it.  This can still cause problems
+     and obscure errors if mh_nbytes is wrong but still within range; the
+     checks against the size recorded at the end of the chunk will probably
+     fail then.  Using MALLOC_REGISTER will help here, since it saves the
+     original number of bytes requested. */
+
+  if (IN_BUCKET(nbytes, nunits) == 0)
+    xbotch (mem, ERR_UNDERFLOW,
+           "free: underflow detected; mh_nbytes out of range", file, line);
+
+  ap += p->mh_nbytes;
+  if (*(u_bits32_t *)ap != p->mh_nbytes)
+    xbotch (mem, ERR_ASSERT_FAILED, "free: start and end chunk sizes differ", file, line);
+
+#if 1
+  if (nunits >= LESSCORE_MIN && ((char *)p + binsize(nunits) == memtop))
+#else
+  if (((char *)p + binsize(nunits) == memtop) && nunits >= LESSCORE_MIN)
+#endif
+    {
+      /* If above LESSCORE_FRC, give back unconditionally.  This should be set
+        high enough to be infrequently encountered.  If between LESSCORE_MIN
+        and LESSCORE_FRC, call lesscore if the bucket is marked as busy (in
+        which case we would punt below and leak memory) or if there's already
+        a block on the free list. */
+      if ((nunits >= LESSCORE_FRC) || busy[nunits] || nextf[nunits] != 0)
+       {
+         lesscore (nunits);
+         /* keeps the tracing and registering code in one place */
+         goto free_return;
+       }
+    }
+
+#ifdef MEMSCRAMBLE
+  MALLOC_MEMSET (mem, 0xcf, p->mh_nbytes);
+#endif
+
+  ASSERT (nunits < NBUCKETS);
+  p->mh_alloc = ISFREE;
+
+  if (busy[nunits] == 1)
+    return;    /* this is bogus, but at least it won't corrupt the chains */
+
+  /* Protect against signal handlers calling malloc.  */
+  busy[nunits] = 1;
+  /* Put this block on the free list.  */
+  CHAIN (p) = nextf[nunits];
+  nextf[nunits] = p;
+  busy[nunits] = 0;
+
+free_return:
+
+#ifdef MALLOC_STATS
+  _mstats.nmalloc[nunits]--;
+  _mstats.nfre++;
+#endif /* MALLOC_STATS */
+
+#ifdef MALLOC_TRACE
+  if (malloc_trace && (flags & MALLOC_NOTRACE) == 0)
+    mtrace_free (mem, ubytes, file, line);
+  else if (_malloc_trace_buckets[nunits])
+    mtrace_free (mem, ubytes, file, line);
+#endif
+
+#ifdef MALLOC_REGISTER
+  if (malloc_register && (flags & MALLOC_NOREG) == 0)
+    mregister_free (mem, ubytes, file, line);
+#endif
+
+#ifdef MALLOC_WATCH
+  if (_malloc_nwatch > 0)
+    _malloc_ckwatch (mem, file, line, W_FREE, ubytes);
+#endif
+
+}
+
+static PTR_T
+internal_realloc (mem, n, file, line, flags)
+     PTR_T mem;
+     register size_t n;
+     const char *file;
+     int line, flags;
+{
+  register union mhead *p;
+  register u_bits32_t tocopy;
+  register unsigned int nbytes;
+  register int nunits;
+  register char *m;
+
+#ifdef MALLOC_STATS
+  _mstats.nrealloc++;
+#endif
+
+  if (n == 0)
+    {
+      internal_free (mem, file, line, MALLOC_INTERNAL);
+      return (NULL);
+    }
+  if ((p = (union mhead *) mem) == 0)
+    return internal_malloc (n, file, line, MALLOC_INTERNAL);
+
+  p--;
+  nunits = p->mh_index;
+  ASSERT (nunits < NBUCKETS);
+
+  if (p->mh_alloc != ISALLOC)
+    xbotch (mem, ERR_UNALLOC,
+           "realloc: called with unallocated block argument", file, line);
+
+  ASSERT (p->mh_magic2 == MAGIC2);
+  nbytes = ALLOCATED_BYTES(p->mh_nbytes);
+  /* Since the sizeof(u_bits32_t) bytes before the memory handed to the user
+     are now used for the number of bytes allocated, a simple check of
+     mh_magic2 is no longer sufficient to catch things like p[-1] = 'x'.
+     We sanity-check the value of mh_nbytes against the size of the blocks
+     in the appropriate bucket before we use it.  This can still cause problems
+     and obscure errors if mh_nbytes is wrong but still within range; the
+     checks against the size recorded at the end of the chunk will probably
+     fail then.  Using MALLOC_REGISTER will help here, since it saves the
+     original number of bytes requested. */
+  if (IN_BUCKET(nbytes, nunits) == 0)
+    xbotch (mem, ERR_UNDERFLOW,
+           "realloc: underflow detected; mh_nbytes out of range", file, line);
+
+  m = (char *)mem + (tocopy = p->mh_nbytes);
+  if (*(u_bits32_t *)m != p->mh_nbytes)
+    xbotch (mem, ERR_ASSERT_FAILED, "realloc: start and end chunk sizes differ", file, line);
+
+#ifdef MALLOC_WATCH
+  if (_malloc_nwatch > 0)
+    _malloc_ckwatch (p + 1, file, line, W_REALLOC, n);
+#endif
+#ifdef MALLOC_STATS
+  _mstats.bytesreq += (n < tocopy) ? 0 : n - tocopy;
+#endif
+
+  /* See if desired size rounds to same power of 2 as actual size. */
+  nbytes = ALLOCATED_BYTES(n);
+
+  /* If ok, use the same block, just marking its size as changed.  */
+  if (RIGHT_BUCKET(nbytes, nunits))
+    {
+      *m++ = 0;  *m++ = 0;  *m++ = 0;  *m++ = 0;
+      m = (char *)mem + (p->mh_nbytes = n);
+      *(u_bits32_t *)m = p->mh_nbytes;
+      return mem;
+    }
+
+  if (n < tocopy)
+    tocopy = n;
+
+#ifdef MALLOC_STATS
+  _mstats.nrcopy++;
+#endif
+
+  if ((m = internal_malloc (n, file, line, MALLOC_INTERNAL|MALLOC_NOTRACE|MALLOC_NOREG)) == 0)
+    return 0;
+  FASTCOPY (mem, m, tocopy);
+  internal_free (mem, file, line, MALLOC_INTERNAL);
+
+#ifdef MALLOC_TRACE
+  if (malloc_trace && (flags & MALLOC_NOTRACE) == 0)
+    mtrace_alloc ("realloc", m, n, file, line);
+  else if (_malloc_trace_buckets[nunits])
+    mtrace_alloc ("realloc", m, n, file, line);
+#endif
+
+#ifdef MALLOC_REGISTER
+  if (malloc_register && (flags & MALLOC_NOREG) == 0)
+    mregister_alloc ("realloc", m, n, file, line);
+#endif
+
+#ifdef MALLOC_WATCH
+  if (_malloc_nwatch > 0)
+    _malloc_ckwatch (m, file, line, W_RESIZED, n);
+#endif
+
+  return m;
+}
+
+static PTR_T
+internal_memalign (alignment, size, file, line, flags)
+     unsigned int alignment;
+     size_t size;
+     const char *file;
+     int line, flags;
+{
+  register char *ptr;
+  register char *aligned;
+  register union mhead *p;
+
+  ptr = internal_malloc (size + alignment, file, line, MALLOC_INTERNAL);
+
+  if (ptr == 0)
+    return 0;
+  /* If entire block has the desired alignment, just accept it.  */
+  if (((long) ptr & (alignment - 1)) == 0)
+    return ptr;
+  /* Otherwise, get address of byte in the block that has that alignment.  */
+#if 0
+  aligned = (char *) (((long) ptr + alignment - 1) & -alignment);
+#else
+  aligned = (char *) (((long) ptr + alignment - 1) & (~alignment + 1));
+#endif
+
+  /* Store a suitable indication of how to free the block,
+     so that free can find the true beginning of it.  */
+  p = (union mhead *) aligned - 1;
+  p->mh_nbytes = aligned - ptr;
+  p->mh_alloc = ISMEMALIGN;
+
+  return aligned;
+}
+
+#if !defined (NO_VALLOC)
+/* This runs into trouble with getpagesize on HPUX, and Multimax machines.
+   Patching out seems cleaner than the ugly fix needed.  */
+static PTR_T
+internal_valloc (size, file, line, flags)
+     size_t size;
+     const char *file;
+     int line, flags;
+{
+  return internal_memalign (getpagesize (), size, file, line, flags|MALLOC_INTERNAL);
+}
+#endif /* !NO_VALLOC */
+
+#ifndef NO_CALLOC
+static PTR_T
+internal_calloc (n, s, file, line, flags)
+     size_t n, s;
+     const char *file;
+     int line, flags;
+{
+  size_t total;
+  PTR_T result;
+
+  total = n * s;
+  result = internal_malloc (total, file, line, flags|MALLOC_INTERNAL);
+  if (result)
+    memset (result, 0, total);
+  return result;  
+}
+
+static void
+internal_cfree (p, file, line, flags)
+     PTR_T p;
+     const char *file;
+     int line, flags;
+{
+  internal_free (p, file, line, flags|MALLOC_INTERNAL);
+}
+#endif /* !NO_CALLOC */
+
+#ifdef MALLOC_STATS
+int
+malloc_free_blocks (size)
+     int size;
+{
+  int nfree;
+  register union mhead *p;
+
+  nfree = 0;
+  for (p = nextf[size]; p; p = CHAIN (p))
+    nfree++;
+
+  return nfree;
+}
+#endif
+
+#if defined (MALLOC_WRAPFUNCS)
+PTR_T
+sh_malloc (bytes, file, line)
+     size_t bytes;
+     const char *file;
+     int line;
+{
+  return internal_malloc (bytes, file, line, MALLOC_WRAPPER);
+}
+
+PTR_T
+sh_realloc (ptr, size, file, line)
+     PTR_T ptr;
+     size_t size;
+     const char *file;
+     int line;
+{
+  return internal_realloc (ptr, size, file, line, MALLOC_WRAPPER);
+}
+
+void
+sh_free (mem, file, line)
+     PTR_T mem;
+     const char *file;
+     int line;
+{
+  internal_free (mem, file, line, MALLOC_WRAPPER);
+}
+
+PTR_T
+sh_memalign (alignment, size, file, line)
+     unsigned int alignment;
+     size_t size;
+     const char *file;
+     int line;
+{
+  return internal_memalign (alignment, size, file, line, MALLOC_WRAPPER);
+}
+
+#ifndef NO_CALLOC
+PTR_T
+sh_calloc (n, s, file, line)
+     size_t n, s;
+     const char *file;
+     int line;
+{
+  return internal_calloc (n, s, file, line, MALLOC_WRAPPER);
+}
+
+void
+sh_cfree (mem, file, line)
+     PTR_T mem;
+     const char *file;
+     int line;
+{
+  internal_cfree (mem, file, line, MALLOC_WRAPPER);
+}
+#endif
+
+#ifndef NO_VALLOC
+PTR_T
+sh_valloc (size, file, line)
+     size_t size;
+     const char *file;
+     int line;
+{
+  return internal_valloc (size, file, line, MALLOC_WRAPPER);
+}
+#endif /* !NO_VALLOC */
+
+#endif /* MALLOC_WRAPFUNCS */
+
+/* Externally-available functions that call their internal counterparts. */
+
+PTR_T
+malloc (size)
+     size_t size;
+{
+  return internal_malloc (size, (char *)NULL, 0, 0);
+}
+
+PTR_T
+realloc (mem, nbytes)
+     PTR_T mem;
+     size_t nbytes;
+{
+  return internal_realloc (mem, nbytes, (char *)NULL, 0, 0);
+}
+
+void
+free (mem)
+     PTR_T mem;
+{
+  internal_free (mem,  (char *)NULL, 0, 0);
+}
+
+PTR_T
+memalign (alignment, size)
+     unsigned int alignment;
+     size_t size;
+{
+  return internal_memalign (alignment, size, (char *)NULL, 0, 0);
+}
+
+#ifndef NO_VALLOC
+PTR_T
+valloc (size)
+     size_t size;
+{
+  return internal_valloc (size, (char *)NULL, 0, 0);
+}
+#endif
+
+#ifndef NO_CALLOC
+PTR_T
+calloc (n, s)
+     size_t n, s;
+{
+  return internal_calloc (n, s, (char *)NULL, 0, 0);
+}
+
+void
+cfree (mem)
+     PTR_T mem;
+{
+  internal_cfree (mem, (char *)NULL, 0, 0);
+}
+#endif
deleted file mode 100644 (file)
index db13cd234bdf216accbe666718f5e63dab4001cc..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* ansi_stdlib.h -- An ANSI Standard stdlib.h. */
-/* A minimal stdlib.h containing extern declarations for those functions
-   that bash uses. */
-
-/* Copyright (C) 1993 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash, the Bourne Again SHell.
-
-   Bash is free software; you can redistribute it and/or modify it under
-   the terms of the GNU General Public License as published by the Free
-   Software Foundation; either version 2, or (at your option) any later
-   version.
-
-   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
-   WARRANTY; without even the implied warranty of MERCHANTABILITY or
-   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-   for more details.
-
-   You should have received a copy of the GNU General Public License along
-   with Bash; see the file COPYING.  If not, write to the Free Software
-   Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_STDLIB_H_)
-#define        _STDLIB_H_ 1
-
-/* String conversion functions. */
-extern int atoi ();
-
-extern double atof ();
-extern double strtod ();
-
-/* Memory allocation functions. */
-/* Generic pointer type. */
-#ifndef PTR_T
-
-#if defined (__STDC__)
-#  define PTR_T        void *
-#else
-#  define PTR_T char *
-#endif
-
-#endif /* PTR_T */
-
-extern PTR_T malloc ();
-extern PTR_T realloc ();
-extern void free ();
-
-/* Other miscellaneous functions. */
-extern void abort ();
-extern void exit ();
-extern char *getenv ();
-extern void qsort ();
-
-#endif /* _STDLIB_H  */
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..0bfba502e97d9f3f73c577192867bb42f4023c26
--- /dev/null
@@ -0,0 +1 @@
+../../include/ansi_stdlib.h
\ No newline at end of file
index 0ff428e..b6d8f01 100644 (file)
@@ -351,14 +351,14 @@ rl_expand_prompt (prompt)
       local_prompt = expand_prompt (p, &prompt_visible_length,
                                       &prompt_last_invisible,
                                       (int *)NULL,
-                                      (int *)NULL);
+                                      &prompt_physical_chars);
       c = *t; *t = '\0';
       /* The portion of the prompt string up to and including the
         final newline is now null-terminated. */
       local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
                                                   (int *)NULL,
                                                   &prompt_invis_chars_first_line,
-                                                  &prompt_physical_chars);
+                                                  (int *)NULL);
       *t = c;
       return (prompt_prefix_length);
     }
diff --git a/lib/readline/display.c.orig b/lib/readline/display.c.orig
new file mode 100644 (file)
index 0000000..0ff428e
--- /dev/null
@@ -0,0 +1,2282 @@
+/* display.c -- readline redisplay facility. */
+
+/* Copyright (C) 1987-2004 Free Software Foundation, Inc.
+
+   This file is part of the GNU Readline Library, a library for
+   reading lines of text with interactive input and history editing.
+
+   The GNU Readline Library 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 2, or
+   (at your option) any later version.
+
+   The GNU Readline Library 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.
+
+   The GNU General Public License is often shipped with GNU software, and
+   is generally kept in a file called COPYING or LICENSE.  If you do not
+   have a copy of the license, write to the Free Software Foundation,
+   59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+#define READLINE_LIBRARY
+
+#if defined (HAVE_CONFIG_H)
+#  include <config.h>
+#endif
+
+#include <sys/types.h>
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif /* HAVE_UNISTD_H */
+
+#include "posixstat.h"
+
+#if defined (HAVE_STDLIB_H)
+#  include <stdlib.h>
+#else
+#  include "ansi_stdlib.h"
+#endif /* HAVE_STDLIB_H */
+
+#include <stdio.h>
+
+/* System-specific feature definitions and include files. */
+#include "rldefs.h"
+#include "rlmbutil.h"
+
+/* Termcap library stuff. */
+#include "tcap.h"
+
+/* Some standard library routines. */
+#include "readline.h"
+#include "history.h"
+
+#include "rlprivate.h"
+#include "xmalloc.h"
+
+#if !defined (strchr) && !defined (__STDC__)
+extern char *strchr (), *strrchr ();
+#endif /* !strchr && !__STDC__ */
+
+#if defined (HACK_TERMCAP_MOTION)
+extern char *_rl_term_forward_char;
+#endif
+
+static void update_line PARAMS((char *, char *, int, int, int, int));
+static void space_to_eol PARAMS((int));
+static void delete_chars PARAMS((int));
+static void insert_some_chars PARAMS((char *, int, int));
+static void cr PARAMS((void));
+
+#if defined (HANDLE_MULTIBYTE)
+static int _rl_col_width PARAMS((const char *, int, int));
+static int *_rl_wrapped_line;
+#else
+#  define _rl_col_width(l, s, e)       (((e) <= (s)) ? 0 : (e) - (s))
+#endif
+
+static int *inv_lbreaks, *vis_lbreaks;
+static int inv_lbsize, vis_lbsize;
+
+/* Heuristic used to decide whether it is faster to move from CUR to NEW
+   by backing up or outputting a carriage return and moving forward. */
+#define CR_FASTER(new, cur) (((new) + 1) < ((cur) - (new)))
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     Display stuff                               */
+/*                                                                 */
+/* **************************************************************** */
+
+/* This is the stuff that is hard for me.  I never seem to write good
+   display routines in C.  Let's see how I do this time. */
+
+/* (PWP) Well... Good for a simple line updater, but totally ignores
+   the problems of input lines longer than the screen width.
+
+   update_line and the code that calls it makes a multiple line,
+   automatically wrapping line update.  Careful attention needs
+   to be paid to the vertical position variables. */
+
+/* Keep two buffers; one which reflects the current contents of the
+   screen, and the other to draw what we think the new contents should
+   be.  Then compare the buffers, and make whatever changes to the
+   screen itself that we should.  Finally, make the buffer that we
+   just drew into be the one which reflects the current contents of the
+   screen, and place the cursor where it belongs.
+
+   Commands that want to can fix the display themselves, and then let
+   this function know that the display has been fixed by setting the
+   RL_DISPLAY_FIXED variable.  This is good for efficiency. */
+
+/* Application-specific redisplay function. */
+rl_voidfunc_t *rl_redisplay_function = rl_redisplay;
+
+/* Global variables declared here. */
+/* What YOU turn on when you have handled all redisplay yourself. */
+int rl_display_fixed = 0;
+
+int _rl_suppress_redisplay = 0;
+
+/* The stuff that gets printed out before the actual text of the line.
+   This is usually pointing to rl_prompt. */
+char *rl_display_prompt = (char *)NULL;
+
+/* Pseudo-global variables declared here. */
+/* The visible cursor position.  If you print some text, adjust this. */
+int _rl_last_c_pos = 0;
+int _rl_last_v_pos = 0;
+
+/* Number of lines currently on screen minus 1. */
+int _rl_vis_botlin = 0;
+
+/* Variables used only in this file. */
+/* The last left edge of text that was displayed.  This is used when
+   doing horizontal scrolling.  It shifts in thirds of a screenwidth. */
+static int last_lmargin;
+
+/* The line display buffers.  One is the line currently displayed on
+   the screen.  The other is the line about to be displayed. */
+static char *visible_line = (char *)NULL;
+static char *invisible_line = (char *)NULL;
+
+/* A buffer for `modeline' messages. */
+static char msg_buf[128];
+
+/* Non-zero forces the redisplay even if we thought it was unnecessary. */
+static int forced_display;
+
+/* Default and initial buffer size.  Can grow. */
+static int line_size = 1024;
+
+/* Variables to keep track of the expanded prompt string, which may
+   include invisible characters. */
+
+static char *local_prompt, *local_prompt_prefix;
+static int prompt_visible_length, prompt_prefix_length;
+
+/* The number of invisible characters in the line currently being
+   displayed on the screen. */
+static int visible_wrap_offset;
+
+/* The number of invisible characters in the prompt string.  Static so it
+   can be shared between rl_redisplay and update_line */
+static int wrap_offset;
+
+/* The index of the last invisible character in the prompt string. */
+static int prompt_last_invisible;
+
+/* The length (buffer offset) of the first line of the last (possibly
+   multi-line) buffer displayed on the screen. */
+static int visible_first_line_len;
+
+/* Number of invisible characters on the first physical line of the prompt.
+   Only valid when the number of physical characters in the prompt exceeds
+   (or is equal to) _rl_screenwidth. */
+static int prompt_invis_chars_first_line;
+
+static int prompt_last_screen_line;
+
+static int prompt_physical_chars;
+
+/* Expand the prompt string S and return the number of visible
+   characters in *LP, if LP is not null.  This is currently more-or-less
+   a placeholder for expansion.  LIP, if non-null is a place to store the
+   index of the last invisible character in the returned string. NIFLP,
+   if non-zero, is a place to store the number of invisible characters in
+   the first prompt line.  The previous are used as byte counts -- indexes
+   into a character buffer. */
+
+/* Current implementation:
+       \001 (^A) start non-visible characters
+       \002 (^B) end non-visible characters
+   all characters except \001 and \002 (following a \001) are copied to
+   the returned string; all characters except those between \001 and
+   \002 are assumed to be `visible'. */        
+
+static char *
+expand_prompt (pmt, lp, lip, niflp, vlp)
+     char *pmt;
+     int *lp, *lip, *niflp, *vlp;
+{
+  char *r, *ret, *p;
+  int l, rl, last, ignoring, ninvis, invfl, ind, pind, physchars;
+
+  /* Short-circuit if we can. */
+  if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (pmt, RL_PROMPT_START_IGNORE) == 0)
+    {
+      r = savestring (pmt);
+      if (lp)
+       *lp = strlen (r);
+      if (lip)
+       *lip = 0;
+      if (niflp)
+       *niflp = 0;
+      if (vlp)
+       *vlp = lp ? *lp : strlen (r);
+      return r;
+    }
+
+  l = strlen (pmt);
+  r = ret = (char *)xmalloc (l + 1);
+
+  invfl = 0;   /* invisible chars in first line of prompt */
+
+  for (rl = ignoring = last = ninvis = physchars = 0, p = pmt; p && *p; p++)
+    {
+      /* This code strips the invisible character string markers
+        RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE */
+      if (*p == RL_PROMPT_START_IGNORE)
+       {
+         ignoring++;
+         continue;
+       }
+      else if (ignoring && *p == RL_PROMPT_END_IGNORE)
+       {
+         ignoring = 0;
+         last = r - ret - 1;
+         continue;
+       }
+      else
+       {
+#if defined (HANDLE_MULTIBYTE)
+         if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+           {
+             pind = p - pmt;
+             ind = _rl_find_next_mbchar (pmt, pind, 1, MB_FIND_NONZERO);
+             l = ind - pind;
+             while (l--)
+               *r++ = *p++;
+             if (!ignoring)
+               rl += ind - pind;
+             else
+               ninvis += ind - pind;
+             p--;                      /* compensate for later increment */
+           }
+         else
+#endif
+           {
+             *r++ = *p;
+             if (!ignoring)
+               rl++;                   /* visible length byte counter */
+             else
+               ninvis++;               /* invisible chars byte counter */
+           }
+
+         if (rl >= _rl_screenwidth)
+           invfl = ninvis;
+
+         if (ignoring == 0)
+           physchars++;
+       }
+    }
+
+  if (rl < _rl_screenwidth)
+    invfl = ninvis;
+
+  *r = '\0';
+  if (lp)
+    *lp = rl;
+  if (lip)
+    *lip = last;
+  if (niflp)
+    *niflp = invfl;
+  if  (vlp)
+    *vlp = physchars;
+  return ret;
+}
+
+/* Just strip out RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE from
+   PMT and return the rest of PMT. */
+char *
+_rl_strip_prompt (pmt)
+     char *pmt;
+{
+  char *ret;
+
+  ret = expand_prompt (pmt, (int *)NULL, (int *)NULL, (int *)NULL, (int *)NULL);
+  return ret;
+}
+
+/*
+ * Expand the prompt string into the various display components, if
+ * necessary.
+ *
+ * local_prompt = expanded last line of string in rl_display_prompt
+ *               (portion after the final newline)
+ * local_prompt_prefix = portion before last newline of rl_display_prompt,
+ *                      expanded via expand_prompt
+ * prompt_visible_length = number of visible characters in local_prompt
+ * prompt_prefix_length = number of visible characters in local_prompt_prefix
+ *
+ * This function is called once per call to readline().  It may also be
+ * called arbitrarily to expand the primary prompt.
+ *
+ * The return value is the number of visible characters on the last line
+ * of the (possibly multi-line) prompt.
+ */
+int
+rl_expand_prompt (prompt)
+     char *prompt;
+{
+  char *p, *t;
+  int c;
+
+  /* Clear out any saved values. */
+  FREE (local_prompt);
+  FREE (local_prompt_prefix);
+
+  local_prompt = local_prompt_prefix = (char *)0;
+  prompt_last_invisible = prompt_visible_length = 0;
+
+  if (prompt == 0 || *prompt == 0)
+    return (0);
+
+  p = strrchr (prompt, '\n');
+  if (!p)
+    {
+      /* The prompt is only one logical line, though it might wrap. */
+      local_prompt = expand_prompt (prompt, &prompt_visible_length,
+                                           &prompt_last_invisible,
+                                           &prompt_invis_chars_first_line,
+                                           &prompt_physical_chars);
+      local_prompt_prefix = (char *)0;
+      return (prompt_visible_length);
+    }
+  else
+    {
+      /* The prompt spans multiple lines. */
+      t = ++p;
+      local_prompt = expand_prompt (p, &prompt_visible_length,
+                                      &prompt_last_invisible,
+                                      (int *)NULL,
+                                      (int *)NULL);
+      c = *t; *t = '\0';
+      /* The portion of the prompt string up to and including the
+        final newline is now null-terminated. */
+      local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
+                                                  (int *)NULL,
+                                                  &prompt_invis_chars_first_line,
+                                                  &prompt_physical_chars);
+      *t = c;
+      return (prompt_prefix_length);
+    }
+}
+
+/* Initialize the VISIBLE_LINE and INVISIBLE_LINE arrays, and their associated
+   arrays of line break markers.  MINSIZE is the minimum size of VISIBLE_LINE
+   and INVISIBLE_LINE; if it is greater than LINE_SIZE, LINE_SIZE is
+   increased.  If the lines have already been allocated, this ensures that
+   they can hold at least MINSIZE characters. */
+static void
+init_line_structures (minsize)
+      int minsize;
+{
+  register int n;
+
+  if (invisible_line == 0)     /* initialize it */
+    {
+      if (line_size < minsize)
+       line_size = minsize;
+      visible_line = (char *)xmalloc (line_size);
+      invisible_line = (char *)xmalloc (line_size);
+    }
+  else if (line_size < minsize)        /* ensure it can hold MINSIZE chars */
+    {
+      line_size *= 2;
+      if (line_size < minsize)
+       line_size = minsize;
+      visible_line = (char *)xrealloc (visible_line, line_size);
+      invisible_line = (char *)xrealloc (invisible_line, line_size);
+    }
+
+  for (n = minsize; n < line_size; n++)
+    {
+      visible_line[n] = 0;
+      invisible_line[n] = 1;
+    }
+
+  if (vis_lbreaks == 0)
+    {
+      /* should be enough. */
+      inv_lbsize = vis_lbsize = 256;
+      inv_lbreaks = (int *)xmalloc (inv_lbsize * sizeof (int));
+      vis_lbreaks = (int *)xmalloc (vis_lbsize * sizeof (int));
+#if defined (HANDLE_MULTIBYTE)
+      _rl_wrapped_line = (int *)xmalloc (vis_lbsize * sizeof (int));
+#endif
+      inv_lbreaks[0] = vis_lbreaks[0] = 0;
+    }
+}
+  
+/* Basic redisplay algorithm. */
+void
+rl_redisplay ()
+{
+  register int in, out, c, linenum, cursor_linenum;
+  register char *line;
+  int c_pos, inv_botlin, lb_botlin, lb_linenum;
+  int newlines, lpos, temp, modmark;
+  char *prompt_this_line;
+#if defined (HANDLE_MULTIBYTE)
+  wchar_t wc;
+  size_t wc_bytes;
+  int wc_width;
+  mbstate_t ps;
+  int _rl_wrapped_multicolumn = 0;
+#endif
+
+  if (!readline_echoing_p)
+    return;
+
+  if (!rl_display_prompt)
+    rl_display_prompt = "";
+
+  if (invisible_line == 0)
+    {
+      init_line_structures (0);
+      rl_on_new_line ();
+    }
+
+  /* Draw the line into the buffer. */
+  c_pos = -1;
+
+  line = invisible_line;
+  out = inv_botlin = 0;
+
+  /* Mark the line as modified or not.  We only do this for history
+     lines. */
+  modmark = 0;
+  if (_rl_mark_modified_lines && current_history () && rl_undo_list)
+    {
+      line[out++] = '*';
+      line[out] = '\0';
+      modmark = 1;
+    }
+
+  /* If someone thought that the redisplay was handled, but the currently
+     visible line has a different modification state than the one about
+     to become visible, then correct the caller's misconception. */
+  if (visible_line[0] != invisible_line[0])
+    rl_display_fixed = 0;
+
+  /* If the prompt to be displayed is the `primary' readline prompt (the
+     one passed to readline()), use the values we have already expanded.
+     If not, use what's already in rl_display_prompt.  WRAP_OFFSET is the
+     number of non-visible characters in the prompt string. */
+  if (rl_display_prompt == rl_prompt || local_prompt)
+    {
+      int local_len = local_prompt ? strlen (local_prompt) : 0;
+      if (local_prompt_prefix && forced_display)
+       _rl_output_some_chars (local_prompt_prefix, strlen (local_prompt_prefix));
+
+      if (local_len > 0)
+       {
+         temp = local_len + out + 2;
+         if (temp >= line_size)
+           {
+             line_size = (temp + 1024) - (temp % 1024);
+             visible_line = (char *)xrealloc (visible_line, line_size);
+             line = invisible_line = (char *)xrealloc (invisible_line, line_size);
+           }
+         strncpy (line + out, local_prompt, local_len);
+         out += local_len;
+       }
+      line[out] = '\0';
+      wrap_offset = local_len - prompt_visible_length;
+    }
+  else
+    {
+      int pmtlen;
+      prompt_this_line = strrchr (rl_display_prompt, '\n');
+      if (!prompt_this_line)
+       prompt_this_line = rl_display_prompt;
+      else
+       {
+         prompt_this_line++;
+         pmtlen = prompt_this_line - rl_display_prompt;        /* temp var */
+         if (forced_display)
+           {
+             _rl_output_some_chars (rl_display_prompt, pmtlen);
+             /* Make sure we are at column zero even after a newline,
+                regardless of the state of terminal output processing. */
+             if (pmtlen < 2 || prompt_this_line[-2] != '\r')
+               cr ();
+           }
+       }
+
+      prompt_physical_chars = pmtlen = strlen (prompt_this_line);
+      temp = pmtlen + out + 2;
+      if (temp >= line_size)
+       {
+         line_size = (temp + 1024) - (temp % 1024);
+         visible_line = (char *)xrealloc (visible_line, line_size);
+         line = invisible_line = (char *)xrealloc (invisible_line, line_size);
+       }
+      strncpy (line + out,  prompt_this_line, pmtlen);
+      out += pmtlen;
+      line[out] = '\0';
+      wrap_offset = prompt_invis_chars_first_line = 0;
+    }
+
+#define CHECK_INV_LBREAKS() \
+      do { \
+       if (newlines >= (inv_lbsize - 2)) \
+         { \
+           inv_lbsize *= 2; \
+           inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
+         } \
+      } while (0)
+
+#if defined (HANDLE_MULTIBYTE)   
+#define CHECK_LPOS() \
+      do { \
+       lpos++; \
+       if (lpos >= _rl_screenwidth) \
+         { \
+           if (newlines >= (inv_lbsize - 2)) \
+             { \
+               inv_lbsize *= 2; \
+               inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
+               _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \
+             } \
+           inv_lbreaks[++newlines] = out; \
+           _rl_wrapped_line[newlines] = _rl_wrapped_multicolumn; \
+           lpos = 0; \
+         } \
+      } while (0)
+#else
+#define CHECK_LPOS() \
+      do { \
+       lpos++; \
+       if (lpos >= _rl_screenwidth) \
+         { \
+           if (newlines >= (inv_lbsize - 2)) \
+             { \
+               inv_lbsize *= 2; \
+               inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
+             } \
+           inv_lbreaks[++newlines] = out; \
+           lpos = 0; \
+         } \
+      } while (0)
+#endif
+
+  /* inv_lbreaks[i] is where line i starts in the buffer. */
+  inv_lbreaks[newlines = 0] = 0;
+#if 0
+  lpos = out - wrap_offset;
+#else
+  lpos = prompt_physical_chars + modmark;
+#endif
+
+#if defined (HANDLE_MULTIBYTE)
+  memset (_rl_wrapped_line, 0, vis_lbsize);
+#endif
+
+  /* prompt_invis_chars_first_line is the number of invisible characters in
+     the first physical line of the prompt.
+     wrap_offset - prompt_invis_chars_first_line is the number of invis
+     chars on the second line. */
+
+  /* what if lpos is already >= _rl_screenwidth before we start drawing the
+     contents of the command line? */
+  while (lpos >= _rl_screenwidth)
+    {
+      /* fix from Darin Johnson <darin@acuson.com> for prompt string with
+         invisible characters that is longer than the screen width.  The
+         prompt_invis_chars_first_line variable could be made into an array
+         saying how many invisible characters there are per line, but that's
+         probably too much work for the benefit gained.  How many people have
+         prompts that exceed two physical lines?
+         Additional logic fix from Edward Catmur <ed@catmur.co.uk> */
+      temp = ((newlines + 1) * _rl_screenwidth) +
+             ((local_prompt_prefix == 0) ? ((newlines == 0) ? prompt_invis_chars_first_line
+                                                           : ((newlines == 1) ? wrap_offset : 0))
+                                        : ((newlines == 0) ? wrap_offset :0));
+             
+      inv_lbreaks[++newlines] = temp;
+      lpos -= _rl_screenwidth;
+    }
+
+  prompt_last_screen_line = newlines;
+
+  /* Draw the rest of the line (after the prompt) into invisible_line, keeping
+     track of where the cursor is (c_pos), the number of the line containing
+     the cursor (lb_linenum), the last line number (lb_botlin and inv_botlin).
+     It maintains an array of line breaks for display (inv_lbreaks).
+     This handles expanding tabs for display and displaying meta characters. */
+  lb_linenum = 0;
+#if defined (HANDLE_MULTIBYTE)
+  in = 0;
+  if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+    {
+      memset (&ps, 0, sizeof (mbstate_t));
+      wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps);
+    }
+  else
+    wc_bytes = 1;
+  while (in < rl_end)
+#else
+  for (in = 0; in < rl_end; in++)
+#endif
+    {
+      c = (unsigned char)rl_line_buffer[in];
+
+#if defined (HANDLE_MULTIBYTE)
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+       {
+         if (MB_INVALIDCH (wc_bytes))
+           {
+             /* Byte sequence is invalid or shortened.  Assume that the
+                first byte represents a character. */
+             wc_bytes = 1;
+             /* Assume that a character occupies a single column. */
+             wc_width = 1;
+             memset (&ps, 0, sizeof (mbstate_t));
+           }
+         else if (MB_NULLWCH (wc_bytes))
+           break;                      /* Found '\0' */
+         else
+           {
+             temp = wcwidth (wc);
+             wc_width = (temp >= 0) ? temp : 1;
+           }
+       }
+#endif
+
+      if (out + 8 >= line_size)                /* XXX - 8 for \t */
+       {
+         line_size *= 2;
+         visible_line = (char *)xrealloc (visible_line, line_size);
+         invisible_line = (char *)xrealloc (invisible_line, line_size);
+         line = invisible_line;
+       }
+
+      if (in == rl_point)
+       {
+         c_pos = out;
+         lb_linenum = newlines;
+       }
+
+#if defined (HANDLE_MULTIBYTE)
+      if (META_CHAR (c) && _rl_output_meta_chars == 0) /* XXX - clean up */
+#else
+      if (META_CHAR (c))
+#endif
+       {
+         if (_rl_output_meta_chars == 0)
+           {
+             sprintf (line + out, "\\%o", c);
+
+             if (lpos + 4 >= _rl_screenwidth)
+               {
+                 temp = _rl_screenwidth - lpos;
+                 CHECK_INV_LBREAKS ();
+                 inv_lbreaks[++newlines] = out + temp;
+                 lpos = 4 - temp;
+               }
+             else
+               lpos += 4;
+
+             out += 4;
+           }
+         else
+           {
+             line[out++] = c;
+             CHECK_LPOS();
+           }
+       }
+#if defined (DISPLAY_TABS)
+      else if (c == '\t')
+       {
+         register int newout;
+
+#if 0
+         newout = (out | (int)7) + 1;
+#else
+         newout = out + 8 - lpos % 8;
+#endif
+         temp = newout - out;
+         if (lpos + temp >= _rl_screenwidth)
+           {
+             register int temp2;
+             temp2 = _rl_screenwidth - lpos;
+             CHECK_INV_LBREAKS ();
+             inv_lbreaks[++newlines] = out + temp2;
+             lpos = temp - temp2;
+             while (out < newout)
+               line[out++] = ' ';
+           }
+         else
+           {
+             while (out < newout)
+               line[out++] = ' ';
+             lpos += temp;
+           }
+       }
+#endif
+      else if (c == '\n' && _rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up)
+       {
+         line[out++] = '\0';   /* XXX - sentinel */
+         CHECK_INV_LBREAKS ();
+         inv_lbreaks[++newlines] = out;
+         lpos = 0;
+       }
+      else if (CTRL_CHAR (c) || c == RUBOUT)
+       {
+         line[out++] = '^';
+         CHECK_LPOS();
+         line[out++] = CTRL_CHAR (c) ? UNCTRL (c) : '?';
+         CHECK_LPOS();
+       }
+      else
+       {
+#if defined (HANDLE_MULTIBYTE)
+         if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+           {
+             register int i;
+
+             _rl_wrapped_multicolumn = 0;
+
+             if (_rl_screenwidth < lpos + wc_width)
+               for (i = lpos; i < _rl_screenwidth; i++)
+                 {
+                   /* The space will be removed in update_line() */
+                   line[out++] = ' ';
+                   _rl_wrapped_multicolumn++;
+                   CHECK_LPOS();
+                 }
+             if (in == rl_point)
+               {
+                 c_pos = out;
+                 lb_linenum = newlines;
+               }
+             for (i = in; i < in+wc_bytes; i++)
+               line[out++] = rl_line_buffer[i];
+             for (i = 0; i < wc_width; i++)
+               CHECK_LPOS();
+           }
+         else
+           {
+             line[out++] = c;
+             CHECK_LPOS();
+           }
+#else
+         line[out++] = c;
+         CHECK_LPOS();
+#endif
+       }
+
+#if defined (HANDLE_MULTIBYTE)
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+       {
+         in += wc_bytes;
+         wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps);
+       }
+      else
+        in++;
+#endif
+
+    }
+  line[out] = '\0';
+  if (c_pos < 0)
+    {
+      c_pos = out;
+      lb_linenum = newlines;
+    }
+
+  inv_botlin = lb_botlin = newlines;
+  CHECK_INV_LBREAKS ();
+  inv_lbreaks[newlines+1] = out;
+  cursor_linenum = lb_linenum;
+
+  /* C_POS == position in buffer where cursor should be placed.
+     CURSOR_LINENUM == line number where the cursor should be placed. */
+
+  /* PWP: now is when things get a bit hairy.  The visible and invisible
+     line buffers are really multiple lines, which would wrap every
+     (screenwidth - 1) characters.  Go through each in turn, finding
+     the changed region and updating it.  The line order is top to bottom. */
+
+  /* If we can move the cursor up and down, then use multiple lines,
+     otherwise, let long lines display in a single terminal line, and
+     horizontally scroll it. */
+
+  if (_rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up)
+    {
+      int nleft, pos, changed_screen_line;
+
+      if (!rl_display_fixed || forced_display)
+       {
+         forced_display = 0;
+
+         /* If we have more than a screenful of material to display, then
+            only display a screenful.  We should display the last screen,
+            not the first.  */
+         if (out >= _rl_screenchars)
+           {
+             if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+               out = _rl_find_prev_mbchar (line, _rl_screenchars, MB_FIND_ANY);
+             else
+               out = _rl_screenchars - 1;
+           }
+
+         /* The first line is at character position 0 in the buffer.  The
+            second and subsequent lines start at inv_lbreaks[N], offset by
+            OFFSET (which has already been calculated above).  */
+
+#define W_OFFSET(line, offset) ((line) == 0 ? offset : 0)
+#define VIS_LLEN(l)    ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
+#define INV_LLEN(l)    (inv_lbreaks[l+1] - inv_lbreaks[l])
+#define VIS_CHARS(line) (visible_line + vis_lbreaks[line])
+#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line)
+#define INV_LINE(line) (invisible_line + inv_lbreaks[line])
+
+         /* For each line in the buffer, do the updating display. */
+         for (linenum = 0; linenum <= inv_botlin; linenum++)
+           {
+             update_line (VIS_LINE(linenum), INV_LINE(linenum), linenum,
+                          VIS_LLEN(linenum), INV_LLEN(linenum), inv_botlin);
+
+             /* If this is the line with the prompt, we might need to
+                compensate for invisible characters in the new line. Do
+                this only if there is not more than one new line (which
+                implies that we completely overwrite the old visible line)
+                and the new line is shorter than the old.  Make sure we are
+                at the end of the new line before clearing. */
+             if (linenum == 0 &&
+                 inv_botlin == 0 && _rl_last_c_pos == out &&
+                 (wrap_offset > visible_wrap_offset) &&
+                 (_rl_last_c_pos < visible_first_line_len))
+               {
+                 nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos;
+                 if (nleft)
+                   _rl_clear_to_eol (nleft);
+               }
+
+             /* Since the new first line is now visible, save its length. */
+             if (linenum == 0)
+               visible_first_line_len = (inv_botlin > 0) ? inv_lbreaks[1] : out - wrap_offset;
+           }
+
+         /* We may have deleted some lines.  If so, clear the left over
+            blank ones at the bottom out. */
+         if (_rl_vis_botlin > inv_botlin)
+           {
+             char *tt;
+             for (; linenum <= _rl_vis_botlin; linenum++)
+               {
+                 tt = VIS_CHARS (linenum);
+                 _rl_move_vert (linenum);
+                 _rl_move_cursor_relative (0, tt);
+                 _rl_clear_to_eol
+                   ((linenum == _rl_vis_botlin) ? strlen (tt) : _rl_screenwidth);
+               }
+           }
+         _rl_vis_botlin = inv_botlin;
+
+         /* CHANGED_SCREEN_LINE is set to 1 if we have moved to a
+            different screen line during this redisplay. */
+         changed_screen_line = _rl_last_v_pos != cursor_linenum;
+         if (changed_screen_line)
+           {
+             _rl_move_vert (cursor_linenum);
+             /* If we moved up to the line with the prompt using _rl_term_up,
+                the physical cursor position on the screen stays the same,
+                but the buffer position needs to be adjusted to account
+                for invisible characters. */
+             if (cursor_linenum == 0 && wrap_offset)
+               _rl_last_c_pos += wrap_offset;
+           }
+
+         /* We have to reprint the prompt if it contains invisible
+            characters, since it's not generally OK to just reprint
+            the characters from the current cursor position.  But we
+            only need to reprint it if the cursor is before the last
+            invisible character in the prompt string. */
+         nleft = prompt_visible_length + wrap_offset;
+         if (cursor_linenum == 0 && wrap_offset > 0 && _rl_last_c_pos > 0 &&
+             _rl_last_c_pos <= prompt_last_invisible && local_prompt)
+           {
+#if defined (__MSDOS__)
+             putc ('\r', rl_outstream);
+#else
+             if (_rl_term_cr)
+               tputs (_rl_term_cr, 1, _rl_output_character_function);
+#endif
+             _rl_output_some_chars (local_prompt, nleft);
+             if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+               _rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft);
+             else
+               _rl_last_c_pos = nleft;
+           }
+
+         /* Where on that line?  And where does that line start
+            in the buffer? */
+         pos = inv_lbreaks[cursor_linenum];
+         /* nleft == number of characters in the line buffer between the
+            start of the line and the cursor position. */
+         nleft = c_pos - pos;
+
+         /* Since _rl_backspace() doesn't know about invisible characters in the
+            prompt, and there's no good way to tell it, we compensate for
+            those characters here and call _rl_backspace() directly. */
+         if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos)
+           {
+             _rl_backspace (_rl_last_c_pos - nleft);
+             if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+               _rl_last_c_pos = _rl_col_width (&visible_line[pos], 0, nleft);
+             else
+               _rl_last_c_pos = nleft;
+           }
+
+         if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+           _rl_move_cursor_relative (nleft, &invisible_line[pos]);
+         else if (nleft != _rl_last_c_pos)
+           _rl_move_cursor_relative (nleft, &invisible_line[pos]);
+       }
+    }
+  else                         /* Do horizontal scrolling. */
+    {
+#define M_OFFSET(margin, offset) ((margin) == 0 ? offset : 0)
+      int lmargin, ndisp, nleft, phys_c_pos, t;
+
+      /* Always at top line. */
+      _rl_last_v_pos = 0;
+
+      /* Compute where in the buffer the displayed line should start.  This
+        will be LMARGIN. */
+
+      /* The number of characters that will be displayed before the cursor. */
+      ndisp = c_pos - wrap_offset;
+      nleft  = prompt_visible_length + wrap_offset;
+      /* Where the new cursor position will be on the screen.  This can be
+        longer than SCREENWIDTH; if it is, lmargin will be adjusted. */
+      phys_c_pos = c_pos - (last_lmargin ? last_lmargin : wrap_offset);
+      t = _rl_screenwidth / 3;
+
+      /* If the number of characters had already exceeded the screenwidth,
+        last_lmargin will be > 0. */
+
+      /* If the number of characters to be displayed is more than the screen
+        width, compute the starting offset so that the cursor is about
+        two-thirds of the way across the screen. */
+      if (phys_c_pos > _rl_screenwidth - 2)
+       {
+         lmargin = c_pos - (2 * t);
+         if (lmargin < 0)
+           lmargin = 0;
+         /* If the left margin would be in the middle of a prompt with
+            invisible characters, don't display the prompt at all. */
+         if (wrap_offset && lmargin > 0 && lmargin < nleft)
+           lmargin = nleft;
+       }
+      else if (ndisp < _rl_screenwidth - 2)            /* XXX - was -1 */
+       lmargin = 0;
+      else if (phys_c_pos < 1)
+       {
+         /* If we are moving back towards the beginning of the line and
+            the last margin is no longer correct, compute a new one. */
+         lmargin = ((c_pos - 1) / t) * t;      /* XXX */
+         if (wrap_offset && lmargin > 0 && lmargin < nleft)
+           lmargin = nleft;
+       }
+      else
+       lmargin = last_lmargin;
+
+      /* If the first character on the screen isn't the first character
+        in the display line, indicate this with a special character. */
+      if (lmargin > 0)
+       line[lmargin] = '<';
+
+      /* If SCREENWIDTH characters starting at LMARGIN do not encompass
+        the whole line, indicate that with a special character at the
+        right edge of the screen.  If LMARGIN is 0, we need to take the
+        wrap offset into account. */
+      t = lmargin + M_OFFSET (lmargin, wrap_offset) + _rl_screenwidth;
+      if (t < out)
+       line[t - 1] = '>';
+
+      if (!rl_display_fixed || forced_display || lmargin != last_lmargin)
+       {
+         forced_display = 0;
+         update_line (&visible_line[last_lmargin],
+                      &invisible_line[lmargin],
+                      0,
+                      _rl_screenwidth + visible_wrap_offset,
+                      _rl_screenwidth + (lmargin ? 0 : wrap_offset),
+                      0);
+
+         /* If the visible new line is shorter than the old, but the number
+            of invisible characters is greater, and we are at the end of
+            the new line, we need to clear to eol. */
+         t = _rl_last_c_pos - M_OFFSET (lmargin, wrap_offset);
+         if ((M_OFFSET (lmargin, wrap_offset) > visible_wrap_offset) &&
+             (_rl_last_c_pos == out) &&
+             t < visible_first_line_len)
+           {
+             nleft = _rl_screenwidth - t;
+             _rl_clear_to_eol (nleft);
+           }
+         visible_first_line_len = out - lmargin - M_OFFSET (lmargin, wrap_offset);
+         if (visible_first_line_len > _rl_screenwidth)
+           visible_first_line_len = _rl_screenwidth;
+
+         _rl_move_cursor_relative (c_pos - lmargin, &invisible_line[lmargin]);
+         last_lmargin = lmargin;
+       }
+    }
+  fflush (rl_outstream);
+
+  /* Swap visible and non-visible lines. */
+  {
+    char *vtemp = visible_line;
+    int *itemp = vis_lbreaks, ntemp = vis_lbsize;
+
+    visible_line = invisible_line;
+    invisible_line = vtemp;
+
+    vis_lbreaks = inv_lbreaks;
+    inv_lbreaks = itemp;
+
+    vis_lbsize = inv_lbsize;
+    inv_lbsize = ntemp;
+
+    rl_display_fixed = 0;
+    /* If we are displaying on a single line, and last_lmargin is > 0, we
+       are not displaying any invisible characters, so set visible_wrap_offset
+       to 0. */
+    if (_rl_horizontal_scroll_mode && last_lmargin)
+      visible_wrap_offset = 0;
+    else
+      visible_wrap_offset = wrap_offset;
+  }
+}
+
+/* PWP: update_line() is based on finding the middle difference of each
+   line on the screen; vis:
+
+                            /old first difference
+       /beginning of line   |        /old last same       /old EOL
+       v                    v        v             v
+old:   eddie> Oh, my little gruntle-buggy is to me, as lurgid as
+new:   eddie> Oh, my little buggy says to me, as lurgid as
+       ^                    ^  ^                          ^
+       \beginning of line   |  \new last same     \new end of line
+                            \new first difference
+
+   All are character pointers for the sake of speed.  Special cases for
+   no differences, as well as for end of line additions must be handled.
+
+   Could be made even smarter, but this works well enough */
+static void
+update_line (old, new, current_line, omax, nmax, inv_botlin)
+     register char *old, *new;
+     int current_line, omax, nmax, inv_botlin;
+{
+  register char *ofd, *ols, *oe, *nfd, *nls, *ne;
+  int temp, lendiff, wsatend, od, nd;
+  int current_invis_chars;
+  int col_lendiff, col_temp;
+#if defined (HANDLE_MULTIBYTE)
+  mbstate_t ps_new, ps_old;
+  int new_offset, old_offset, tmp;
+#endif
+
+  /* If we're at the right edge of a terminal that supports xn, we're
+     ready to wrap around, so do so.  This fixes problems with knowing
+     the exact cursor position and cut-and-paste with certain terminal
+     emulators.  In this calculation, TEMP is the physical screen
+     position of the cursor. */
+  temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
+  if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
+       && _rl_last_v_pos == current_line - 1)
+    {
+#if defined (HANDLE_MULTIBYTE)
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+       {
+         wchar_t wc;
+         mbstate_t ps;
+         int tempwidth, bytes;
+         size_t ret;
+
+         /* This fixes only double-column characters, but if the wrapped
+            character comsumes more than three columns, spaces will be
+            inserted in the string buffer. */
+         if (_rl_wrapped_line[current_line] > 0)
+           _rl_clear_to_eol (_rl_wrapped_line[current_line]);
+
+         memset (&ps, 0, sizeof (mbstate_t));
+         ret = mbrtowc (&wc, new, MB_CUR_MAX, &ps);
+         if (MB_INVALIDCH (ret))
+           {
+             tempwidth = 1;
+             ret = 1;
+           }
+         else if (MB_NULLWCH (ret))
+           tempwidth = 0;
+         else
+           tempwidth = wcwidth (wc);
+
+         if (tempwidth > 0)
+           {
+             int count;
+             bytes = ret;
+             for (count = 0; count < bytes; count++)
+               putc (new[count], rl_outstream);
+             _rl_last_c_pos = tempwidth;
+             _rl_last_v_pos++;
+             memset (&ps, 0, sizeof (mbstate_t));
+             ret = mbrtowc (&wc, old, MB_CUR_MAX, &ps);
+             if (ret != 0 && bytes != 0)
+               {
+                 if (MB_INVALIDCH (ret))
+                   memmove (old+bytes, old+1, strlen (old+1));
+                 else
+                   memmove (old+bytes, old+ret, strlen (old+ret));
+                 memcpy (old, new, bytes);
+               }
+           }
+         else
+           {
+             putc (' ', rl_outstream);
+             _rl_last_c_pos = 1;
+             _rl_last_v_pos++;
+             if (old[0] && new[0])
+               old[0] = new[0];
+           }
+       }
+      else
+#endif
+       {
+         if (new[0])
+           putc (new[0], rl_outstream);
+         else
+           putc (' ', rl_outstream);
+         _rl_last_c_pos = 1;           /* XXX */
+         _rl_last_v_pos++;
+         if (old[0] && new[0])
+           old[0] = new[0];
+       }
+    }
+
+      
+  /* Find first difference. */
+#if defined (HANDLE_MULTIBYTE)
+  if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+    {
+      /* See if the old line is a subset of the new line, so that the
+        only change is adding characters. */
+      temp = (omax < nmax) ? omax : nmax;
+      if (memcmp (old, new, temp) == 0)
+       {
+         ofd = old + temp;
+         nfd = new + temp;
+       }
+      else
+       {      
+         memset (&ps_new, 0, sizeof(mbstate_t));
+         memset (&ps_old, 0, sizeof(mbstate_t));
+
+         if (omax == nmax && STREQN (new, old, omax))
+           {
+             ofd = old + omax;
+             nfd = new + nmax;
+           }
+         else
+           {
+             new_offset = old_offset = 0;
+             for (ofd = old, nfd = new;
+                   (ofd - old < omax) && *ofd &&
+                   _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new); )
+               {
+                 old_offset = _rl_find_next_mbchar (old, old_offset, 1, MB_FIND_ANY);
+                 new_offset = _rl_find_next_mbchar (new, new_offset, 1, MB_FIND_ANY);
+                 ofd = old + old_offset;
+                 nfd = new + new_offset;
+               }
+           }
+       }
+    }
+  else
+#endif
+  for (ofd = old, nfd = new;
+       (ofd - old < omax) && *ofd && (*ofd == *nfd);
+       ofd++, nfd++)
+    ;
+
+  /* Move to the end of the screen line.  ND and OD are used to keep track
+     of the distance between ne and new and oe and old, respectively, to
+     move a subtraction out of each loop. */
+  for (od = ofd - old, oe = ofd; od < omax && *oe; oe++, od++);
+  for (nd = nfd - new, ne = nfd; nd < nmax && *ne; ne++, nd++);
+
+  /* If no difference, continue to next line. */
+  if (ofd == oe && nfd == ne)
+    return;
+
+  wsatend = 1;                 /* flag for trailing whitespace */
+
+#if defined (HANDLE_MULTIBYTE)
+  if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+    {
+      ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY);
+      nls = new + _rl_find_prev_mbchar (new, ne - new, MB_FIND_ANY);
+      while ((ols > ofd) && (nls > nfd))
+       {
+         memset (&ps_old, 0, sizeof (mbstate_t));
+         memset (&ps_new, 0, sizeof (mbstate_t));
+
+#if 0
+         /* On advice from jir@yamato.ibm.com */
+         _rl_adjust_point (old, ols - old, &ps_old);
+         _rl_adjust_point (new, nls - new, &ps_new);
+#endif
+
+         if (_rl_compare_chars (old, ols - old, &ps_old, new, nls - new, &ps_new) == 0)
+           break;
+
+         if (*ols == ' ')
+           wsatend = 0;
+
+         ols = old + _rl_find_prev_mbchar (old, ols - old, MB_FIND_ANY);
+         nls = new + _rl_find_prev_mbchar (new, nls - new, MB_FIND_ANY);
+       }
+    }
+  else
+    {
+#endif /* HANDLE_MULTIBYTE */
+  ols = oe - 1;                        /* find last same */
+  nls = ne - 1;
+  while ((ols > ofd) && (nls > nfd) && (*ols == *nls))
+    {
+      if (*ols != ' ')
+       wsatend = 0;
+      ols--;
+      nls--;
+    }
+#if defined (HANDLE_MULTIBYTE)
+    }
+#endif
+
+  if (wsatend)
+    {
+      ols = oe;
+      nls = ne;
+    }
+#if defined (HANDLE_MULTIBYTE)
+  /* This may not work for stateful encoding, but who cares?  To handle
+     stateful encoding properly, we have to scan each string from the
+     beginning and compare. */
+  else if (_rl_compare_chars (ols, 0, NULL, nls, 0, NULL) == 0)
+#else
+  else if (*ols != *nls)
+#endif
+    {
+      if (*ols)                        /* don't step past the NUL */
+       {
+         if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+           ols = old + _rl_find_next_mbchar (old, ols - old, 1, MB_FIND_ANY);
+         else
+           ols++;
+       }
+      if (*nls)
+       {
+         if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+           nls = new + _rl_find_next_mbchar (new, nls - new, 1, MB_FIND_ANY);
+         else
+           nls++;
+       }
+    }
+
+  /* count of invisible characters in the current invisible line. */
+  current_invis_chars = W_OFFSET (current_line, wrap_offset);
+  if (_rl_last_v_pos != current_line)
+    {
+      _rl_move_vert (current_line);
+      if (current_line == 0 && visible_wrap_offset)
+       _rl_last_c_pos += visible_wrap_offset;
+    }
+
+  /* If this is the first line and there are invisible characters in the
+     prompt string, and the prompt string has not changed, and the current
+     cursor position is before the last invisible character in the prompt,
+     and the index of the character to move to is past the end of the prompt
+     string, then redraw the entire prompt string.  We can only do this
+     reliably if the terminal supports a `cr' capability.
+
+     This is not an efficiency hack -- there is a problem with redrawing
+     portions of the prompt string if they contain terminal escape
+     sequences (like drawing the `unbold' sequence without a corresponding
+     `bold') that manifests itself on certain terminals. */
+
+  lendiff = local_prompt ? strlen (local_prompt) : 0;
+  od = ofd - old;      /* index of first difference in visible line */
+  if (current_line == 0 && !_rl_horizontal_scroll_mode &&
+      _rl_term_cr && lendiff > prompt_visible_length && _rl_last_c_pos > 0 &&
+      od >= lendiff && _rl_last_c_pos <= prompt_last_invisible)
+    {
+#if defined (__MSDOS__)
+      putc ('\r', rl_outstream);
+#else
+      tputs (_rl_term_cr, 1, _rl_output_character_function);
+#endif
+      _rl_output_some_chars (local_prompt, lendiff);
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+       _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff);
+      else
+       _rl_last_c_pos = lendiff;
+    }
+
+  _rl_move_cursor_relative (od, old);
+
+  /* if (len (new) > len (old))
+     lendiff == difference in buffer
+     col_lendiff == difference on screen
+     When not using multibyte characters, these are equal */
+  lendiff = (nls - nfd) - (ols - ofd);
+  if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+    col_lendiff = _rl_col_width (new, nfd - new, nls - new) - _rl_col_width (old, ofd - old, ols - old);
+  else
+    col_lendiff = lendiff;
+
+  /* If we are changing the number of invisible characters in a line, and
+     the spot of first difference is before the end of the invisible chars,
+     lendiff needs to be adjusted. */
+  if (current_line == 0 && !_rl_horizontal_scroll_mode &&
+      current_invis_chars != visible_wrap_offset)
+    {
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+       {
+         lendiff += visible_wrap_offset - current_invis_chars;
+         col_lendiff += visible_wrap_offset - current_invis_chars;
+       }
+      else
+       {
+         lendiff += visible_wrap_offset - current_invis_chars;
+         col_lendiff = lendiff;
+       }
+    }
+
+  /* Insert (diff (len (old), len (new)) ch. */
+  temp = ne - nfd;
+  if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+    col_temp = _rl_col_width (new, nfd - new, ne - new);
+  else
+    col_temp = temp;
+
+  if (col_lendiff > 0) /* XXX - was lendiff */
+    {
+      /* Non-zero if we're increasing the number of lines. */
+      int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
+      /* Sometimes it is cheaper to print the characters rather than
+        use the terminal's capabilities.  If we're growing the number
+        of lines, make sure we actually cause the new line to wrap
+        around on auto-wrapping terminals. */
+      if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl))
+       {
+         /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and
+            _rl_horizontal_scroll_mode == 1, inserting the characters with
+            _rl_term_IC or _rl_term_ic will screw up the screen because of the
+            invisible characters.  We need to just draw them. */
+         if (*ols && (!_rl_horizontal_scroll_mode || _rl_last_c_pos > 0 ||
+                       lendiff <= prompt_visible_length || !current_invis_chars))
+           {
+             insert_some_chars (nfd, lendiff, col_lendiff);
+             _rl_last_c_pos += col_lendiff;
+           }
+         else if (*ols == 0 && lendiff > 0)
+           {
+             /* At the end of a line the characters do not have to
+                be "inserted".  They can just be placed on the screen. */
+             /* However, this screws up the rest of this block, which
+                assumes you've done the insert because you can. */
+             _rl_output_some_chars (nfd, lendiff);
+             _rl_last_c_pos += col_lendiff;
+           }
+         else
+           {
+             /* We have horizontal scrolling and we are not inserting at
+                the end.  We have invisible characters in this line.  This
+                is a dumb update. */
+             _rl_output_some_chars (nfd, temp);
+             _rl_last_c_pos += col_temp;
+             return;
+           }
+         /* Copy (new) chars to screen from first diff to last match. */
+         temp = nls - nfd;
+         if ((temp - lendiff) > 0)
+           {
+             _rl_output_some_chars (nfd + lendiff, temp - lendiff);
+#if 1
+            /* XXX -- this bears closer inspection.  Fixes a redisplay bug
+               reported against bash-3.0-alpha by Andreas Schwab involving
+               multibyte characters and prompt strings with invisible
+               characters, but was previously disabled. */
+             _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
+#else
+             _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff);
+#endif
+           }
+       }
+      else
+       {
+         /* cannot insert chars, write to EOL */
+         _rl_output_some_chars (nfd, temp);
+         _rl_last_c_pos += col_temp;
+       }
+    }
+  else                         /* Delete characters from line. */
+    {
+      /* If possible and inexpensive to use terminal deletion, then do so. */
+      if (_rl_term_dc && (2 * col_temp) >= -col_lendiff)
+       {
+         /* If all we're doing is erasing the invisible characters in the
+            prompt string, don't bother.  It screws up the assumptions
+            about what's on the screen. */
+         if (_rl_horizontal_scroll_mode && _rl_last_c_pos == 0 &&
+             -lendiff == visible_wrap_offset)
+           col_lendiff = 0;
+
+         if (col_lendiff)
+           delete_chars (-col_lendiff); /* delete (diff) characters */
+
+         /* Copy (new) chars to screen from first diff to last match */
+         temp = nls - nfd;
+         if (temp > 0)
+           {
+             _rl_output_some_chars (nfd, temp);
+             _rl_last_c_pos += _rl_col_width (nfd, 0, temp);;
+           }
+       }
+      /* Otherwise, print over the existing material. */
+      else
+       {
+         if (temp > 0)
+           {
+             _rl_output_some_chars (nfd, temp);
+             _rl_last_c_pos += col_temp;
+           }
+         lendiff = (oe - old) - (ne - new);
+         if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+           col_lendiff = _rl_col_width (old, 0, oe - old) - _rl_col_width (new, 0, ne - new);
+         else
+           col_lendiff = lendiff;
+
+         if (col_lendiff)
+           {     
+             if (_rl_term_autowrap && current_line < inv_botlin)
+               space_to_eol (col_lendiff);
+             else
+               _rl_clear_to_eol (col_lendiff);
+           }
+       }
+    }
+}
+
+/* Tell the update routines that we have moved onto a new (empty) line. */
+int
+rl_on_new_line ()
+{
+  if (visible_line)
+    visible_line[0] = '\0';
+
+  _rl_last_c_pos = _rl_last_v_pos = 0;
+  _rl_vis_botlin = last_lmargin = 0;
+  if (vis_lbreaks)
+    vis_lbreaks[0] = vis_lbreaks[1] = 0;
+  visible_wrap_offset = 0;
+  return 0;
+}
+
+/* Tell the update routines that we have moved onto a new line with the
+   prompt already displayed.  Code originally from the version of readline
+   distributed with CLISP.  rl_expand_prompt must have already been called
+   (explicitly or implicitly).  This still doesn't work exactly right. */
+int
+rl_on_new_line_with_prompt ()
+{
+  int prompt_size, i, l, real_screenwidth, newlines;
+  char *prompt_last_line, *lprompt;
+
+  /* Initialize visible_line and invisible_line to ensure that they can hold
+     the already-displayed prompt. */
+  prompt_size = strlen (rl_prompt) + 1;
+  init_line_structures (prompt_size);
+
+  /* Make sure the line structures hold the already-displayed prompt for
+     redisplay. */
+  lprompt = local_prompt ? local_prompt : rl_prompt;
+  strcpy (visible_line, lprompt);
+  strcpy (invisible_line, lprompt);
+
+  /* If the prompt contains newlines, take the last tail. */
+  prompt_last_line = strrchr (rl_prompt, '\n');
+  if (!prompt_last_line)
+    prompt_last_line = rl_prompt;
+
+  l = strlen (prompt_last_line);
+  if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+    _rl_last_c_pos = _rl_col_width (prompt_last_line, 0, l);
+  else
+    _rl_last_c_pos = l;
+
+  /* Dissect prompt_last_line into screen lines. Note that here we have
+     to use the real screenwidth. Readline's notion of screenwidth might be
+     one less, see terminal.c. */
+  real_screenwidth = _rl_screenwidth + (_rl_term_autowrap ? 0 : 1);
+  _rl_last_v_pos = l / real_screenwidth;
+  /* If the prompt length is a multiple of real_screenwidth, we don't know
+     whether the cursor is at the end of the last line, or already at the
+     beginning of the next line. Output a newline just to be safe. */
+  if (l > 0 && (l % real_screenwidth) == 0)
+    _rl_output_some_chars ("\n", 1);
+  last_lmargin = 0;
+
+  newlines = 0; i = 0;
+  while (i <= l)
+    {
+      _rl_vis_botlin = newlines;
+      vis_lbreaks[newlines++] = i;
+      i += real_screenwidth;
+    }
+  vis_lbreaks[newlines] = l;
+  visible_wrap_offset = 0;
+
+  rl_display_prompt = rl_prompt;       /* XXX - make sure it's set */
+
+  return 0;
+}
+
+/* Actually update the display, period. */
+int
+rl_forced_update_display ()
+{
+  if (visible_line)
+    {
+      register char *temp = visible_line;
+
+      while (*temp)
+       *temp++ = '\0';
+    }
+  rl_on_new_line ();
+  forced_display++;
+  (*rl_redisplay_function) ();
+  return 0;
+}
+
+/* Move the cursor from _rl_last_c_pos to NEW, which are buffer indices.
+   DATA is the contents of the screen line of interest; i.e., where
+   the movement is being done. */
+void
+_rl_move_cursor_relative (new, data)
+     int new;
+     const char *data;
+{
+  register int i;
+
+  /* If we don't have to do anything, then return. */
+#if defined (HANDLE_MULTIBYTE)
+  /* If we have multibyte characters, NEW is indexed by the buffer point in
+     a multibyte string, but _rl_last_c_pos is the display position.  In
+     this case, NEW's display position is not obvious and must be
+     calculated. */
+  if (MB_CUR_MAX == 1 || rl_byte_oriented)
+    {
+      if (_rl_last_c_pos == new)
+       return;
+    }
+  else if (_rl_last_c_pos == _rl_col_width (data, 0, new))
+    return;
+#else
+  if (_rl_last_c_pos == new) return;
+#endif
+
+  /* It may be faster to output a CR, and then move forwards instead
+     of moving backwards. */
+  /* i == current physical cursor position. */
+  i = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
+  if (new == 0 || CR_FASTER (new, _rl_last_c_pos) ||
+      (_rl_term_autowrap && i == _rl_screenwidth))
+    {
+#if defined (__MSDOS__)
+      putc ('\r', rl_outstream);
+#else
+      tputs (_rl_term_cr, 1, _rl_output_character_function);
+#endif /* !__MSDOS__ */
+      _rl_last_c_pos = 0;
+    }
+
+  if (_rl_last_c_pos < new)
+    {
+      /* Move the cursor forward.  We do it by printing the command
+        to move the cursor forward if there is one, else print that
+        portion of the output buffer again.  Which is cheaper? */
+
+      /* The above comment is left here for posterity.  It is faster
+        to print one character (non-control) than to print a control
+        sequence telling the terminal to move forward one character.
+        That kind of control is for people who don't know what the
+        data is underneath the cursor. */
+#if defined (HACK_TERMCAP_MOTION)
+      if (_rl_term_forward_char)
+       {
+         if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+           {
+             int width;
+             width = _rl_col_width (data, _rl_last_c_pos, new);
+             for (i = 0; i < width; i++)
+               tputs (_rl_term_forward_char, 1, _rl_output_character_function);
+           }
+         else
+           {
+             for (i = _rl_last_c_pos; i < new; i++)
+               tputs (_rl_term_forward_char, 1, _rl_output_character_function);
+           }
+       }
+      else if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+       {
+         tputs (_rl_term_cr, 1, _rl_output_character_function);
+         for (i = 0; i < new; i++)
+           putc (data[i], rl_outstream);
+       }
+      else
+       for (i = _rl_last_c_pos; i < new; i++)
+         putc (data[i], rl_outstream);
+
+#else /* !HACK_TERMCAP_MOTION */
+
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+       {
+         tputs (_rl_term_cr, 1, _rl_output_character_function);
+         for (i = 0; i < new; i++)
+           putc (data[i], rl_outstream);
+       }
+      else
+       for (i = _rl_last_c_pos; i < new; i++)
+         putc (data[i], rl_outstream);
+
+#endif /* !HACK_TERMCAP_MOTION */
+
+    }
+#if defined (HANDLE_MULTIBYTE)
+  /* NEW points to the buffer point, but _rl_last_c_pos is the display point.
+     The byte length of the string is probably bigger than the column width
+     of the string, which means that if NEW == _rl_last_c_pos, then NEW's
+     display point is less than _rl_last_c_pos. */
+  else if (_rl_last_c_pos >= new)
+#else
+  else if (_rl_last_c_pos > new)
+#endif
+    {
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+       _rl_backspace (_rl_last_c_pos - _rl_col_width (data, 0, new));
+      else
+       _rl_backspace (_rl_last_c_pos - new);
+    }
+
+  if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+    _rl_last_c_pos =  _rl_col_width (data, 0, new);
+  else
+    _rl_last_c_pos = new;
+}
+
+/* PWP: move the cursor up or down. */
+void
+_rl_move_vert (to)
+     int to;
+{
+  register int delta, i;
+
+  if (_rl_last_v_pos == to || to > _rl_screenheight)
+    return;
+
+  if ((delta = to - _rl_last_v_pos) > 0)
+    {
+      for (i = 0; i < delta; i++)
+       putc ('\n', rl_outstream);
+#if defined (__MSDOS__)
+      putc ('\r', rl_outstream);
+#else
+      tputs (_rl_term_cr, 1, _rl_output_character_function);
+#endif
+      _rl_last_c_pos = 0;
+    }
+  else
+    {                  /* delta < 0 */
+      if (_rl_term_up && *_rl_term_up)
+       for (i = 0; i < -delta; i++)
+         tputs (_rl_term_up, 1, _rl_output_character_function);
+    }
+
+  _rl_last_v_pos = to;         /* Now TO is here */
+}
+
+/* Physically print C on rl_outstream.  This is for functions which know
+   how to optimize the display.  Return the number of characters output. */
+int
+rl_show_char (c)
+     int c;
+{
+  int n = 1;
+  if (META_CHAR (c) && (_rl_output_meta_chars == 0))
+    {
+      fprintf (rl_outstream, "M-");
+      n += 2;
+      c = UNMETA (c);
+    }
+
+#if defined (DISPLAY_TABS)
+  if ((CTRL_CHAR (c) && c != '\t') || c == RUBOUT)
+#else
+  if (CTRL_CHAR (c) || c == RUBOUT)
+#endif /* !DISPLAY_TABS */
+    {
+      fprintf (rl_outstream, "C-");
+      n += 2;
+      c = CTRL_CHAR (c) ? UNCTRL (c) : '?';
+    }
+
+  putc (c, rl_outstream);
+  fflush (rl_outstream);
+  return n;
+}
+
+int
+rl_character_len (c, pos)
+     register int c, pos;
+{
+  unsigned char uc;
+
+  uc = (unsigned char)c;
+
+  if (META_CHAR (uc))
+    return ((_rl_output_meta_chars == 0) ? 4 : 1);
+
+  if (uc == '\t')
+    {
+#if defined (DISPLAY_TABS)
+      return (((pos | 7) + 1) - pos);
+#else
+      return (2);
+#endif /* !DISPLAY_TABS */
+    }
+
+  if (CTRL_CHAR (c) || c == RUBOUT)
+    return (2);
+
+  return ((ISPRINT (uc)) ? 1 : 2);
+}
+
+/* How to print things in the "echo-area".  The prompt is treated as a
+   mini-modeline. */
+
+#if defined (USE_VARARGS)
+int
+#if defined (PREFER_STDARG)
+rl_message (const char *format, ...)
+#else
+rl_message (va_alist)
+     va_dcl
+#endif
+{
+  va_list args;
+#if defined (PREFER_VARARGS)
+  char *format;
+#endif
+
+#if defined (PREFER_STDARG)
+  va_start (args, format);
+#else
+  va_start (args);
+  format = va_arg (args, char *);
+#endif
+
+#if defined (HAVE_VSNPRINTF)
+  vsnprintf (msg_buf, sizeof (msg_buf) - 1, format, args);
+#else
+  vsprintf (msg_buf, format, args);
+  msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */
+#endif
+  va_end (args);
+
+  rl_display_prompt = msg_buf;
+  (*rl_redisplay_function) ();
+  return 0;
+}
+#else /* !USE_VARARGS */
+int
+rl_message (format, arg1, arg2)
+     char *format;
+{
+  sprintf (msg_buf, format, arg1, arg2);
+  msg_buf[sizeof(msg_buf) - 1] = '\0'; /* overflow? */
+  rl_display_prompt = msg_buf;
+  (*rl_redisplay_function) ();
+  return 0;
+}
+#endif /* !USE_VARARGS */
+
+/* How to clear things from the "echo-area". */
+int
+rl_clear_message ()
+{
+  rl_display_prompt = rl_prompt;
+  (*rl_redisplay_function) ();
+  return 0;
+}
+
+int
+rl_reset_line_state ()
+{
+  rl_on_new_line ();
+
+  rl_display_prompt = rl_prompt ? rl_prompt : "";
+  forced_display = 1;
+  return 0;
+}
+
+/* These are getting numerous enough that it's time to create a struct. */
+
+static char *saved_local_prompt;
+static char *saved_local_prefix;
+static int saved_last_invisible;
+static int saved_visible_length;
+static int saved_invis_chars_first_line;
+static int saved_physical_chars;
+
+void
+rl_save_prompt ()
+{
+  saved_local_prompt = local_prompt;
+  saved_local_prefix = local_prompt_prefix;
+  saved_last_invisible = prompt_last_invisible;
+  saved_visible_length = prompt_visible_length;
+  saved_invis_chars_first_line = prompt_invis_chars_first_line;
+  saved_physical_chars = prompt_physical_chars;
+
+  local_prompt = local_prompt_prefix = (char *)0;
+  prompt_last_invisible = prompt_visible_length = 0;
+  prompt_invis_chars_first_line = prompt_physical_chars = 0;
+}
+
+void
+rl_restore_prompt ()
+{
+  FREE (local_prompt);
+  FREE (local_prompt_prefix);
+
+  local_prompt = saved_local_prompt;
+  local_prompt_prefix = saved_local_prefix;
+  prompt_last_invisible = saved_last_invisible;
+  prompt_visible_length = saved_visible_length;
+  prompt_invis_chars_first_line = saved_invis_chars_first_line;
+  prompt_physical_chars = saved_physical_chars;
+}
+
+char *
+_rl_make_prompt_for_search (pchar)
+     int pchar;
+{
+  int len;
+  char *pmt;
+
+  rl_save_prompt ();
+
+  if (saved_local_prompt == 0)
+    {
+      len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
+      pmt = (char *)xmalloc (len + 2);
+      if (len)
+       strcpy (pmt, rl_prompt);
+      pmt[len] = pchar;
+      pmt[len+1] = '\0';
+    }
+  else
+    {
+      len = *saved_local_prompt ? strlen (saved_local_prompt) : 0;
+      pmt = (char *)xmalloc (len + 2);
+      if (len)
+       strcpy (pmt, saved_local_prompt);
+      pmt[len] = pchar;
+      pmt[len+1] = '\0';
+      local_prompt = savestring (pmt);
+      prompt_last_invisible = saved_last_invisible;
+      prompt_visible_length = saved_visible_length + 1;
+    }
+
+  return pmt;
+}
+
+/* Quick redisplay hack when erasing characters at the end of the line. */
+void
+_rl_erase_at_end_of_line (l)
+     int l;
+{
+  register int i;
+
+  _rl_backspace (l);
+  for (i = 0; i < l; i++)
+    putc (' ', rl_outstream);
+  _rl_backspace (l);
+  for (i = 0; i < l; i++)
+    visible_line[--_rl_last_c_pos] = '\0';
+  rl_display_fixed++;
+}
+
+/* Clear to the end of the line.  COUNT is the minimum
+   number of character spaces to clear, */
+void
+_rl_clear_to_eol (count)
+     int count;
+{
+  if (_rl_term_clreol)
+    tputs (_rl_term_clreol, 1, _rl_output_character_function);
+  else if (count)
+    space_to_eol (count);
+}
+
+/* Clear to the end of the line using spaces.  COUNT is the minimum
+   number of character spaces to clear, */
+static void
+space_to_eol (count)
+     int count;
+{
+  register int i;
+
+  for (i = 0; i < count; i++)
+   putc (' ', rl_outstream);
+
+  _rl_last_c_pos += count;
+}
+
+void
+_rl_clear_screen ()
+{
+  if (_rl_term_clrpag)
+    tputs (_rl_term_clrpag, 1, _rl_output_character_function);
+  else
+    rl_crlf ();
+}
+
+/* Insert COUNT characters from STRING to the output stream at column COL. */
+static void
+insert_some_chars (string, count, col)
+     char *string;
+     int count, col;
+{
+  /* DEBUGGING */
+  if (MB_CUR_MAX == 1 || rl_byte_oriented)
+    if (count != col)
+      fprintf(stderr, "readline: debug: insert_some_chars: count (%d) != col (%d)\n", count, col);
+
+  /* If IC is defined, then we do not have to "enter" insert mode. */
+  if (_rl_term_IC)
+    {
+      char *buffer;
+
+      buffer = tgoto (_rl_term_IC, 0, col);
+      tputs (buffer, 1, _rl_output_character_function);
+      _rl_output_some_chars (string, count);
+    }
+  else
+    {
+      register int i;
+
+      /* If we have to turn on insert-mode, then do so. */
+      if (_rl_term_im && *_rl_term_im)
+       tputs (_rl_term_im, 1, _rl_output_character_function);
+
+      /* If there is a special command for inserting characters, then
+        use that first to open up the space. */
+      if (_rl_term_ic && *_rl_term_ic)
+       {
+         for (i = col; i--; )
+           tputs (_rl_term_ic, 1, _rl_output_character_function);
+       }
+
+      /* Print the text. */
+      _rl_output_some_chars (string, count);
+
+      /* If there is a string to turn off insert mode, we had best use
+        it now. */
+      if (_rl_term_ei && *_rl_term_ei)
+       tputs (_rl_term_ei, 1, _rl_output_character_function);
+    }
+}
+
+/* Delete COUNT characters from the display line. */
+static void
+delete_chars (count)
+     int count;
+{
+  if (count > _rl_screenwidth) /* XXX */
+    return;
+
+  if (_rl_term_DC && *_rl_term_DC)
+    {
+      char *buffer;
+      buffer = tgoto (_rl_term_DC, count, count);
+      tputs (buffer, count, _rl_output_character_function);
+    }
+  else
+    {
+      if (_rl_term_dc && *_rl_term_dc)
+       while (count--)
+         tputs (_rl_term_dc, 1, _rl_output_character_function);
+    }
+}
+
+void
+_rl_update_final ()
+{
+  int full_lines;
+
+  full_lines = 0;
+  /* If the cursor is the only thing on an otherwise-blank last line,
+     compensate so we don't print an extra CRLF. */
+  if (_rl_vis_botlin && _rl_last_c_pos == 0 &&
+       visible_line[vis_lbreaks[_rl_vis_botlin]] == 0)
+    {
+      _rl_vis_botlin--;
+      full_lines = 1;
+    }
+  _rl_move_vert (_rl_vis_botlin);
+  /* If we've wrapped lines, remove the final xterm line-wrap flag. */
+  if (full_lines && _rl_term_autowrap && (VIS_LLEN(_rl_vis_botlin) == _rl_screenwidth))
+    {
+      char *last_line;
+
+      last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]];
+      _rl_move_cursor_relative (_rl_screenwidth - 1, last_line);
+      _rl_clear_to_eol (0);
+      putc (last_line[_rl_screenwidth - 1], rl_outstream);
+    }
+  _rl_vis_botlin = 0;
+  rl_crlf ();
+  fflush (rl_outstream);
+  rl_display_fixed++;
+}
+
+/* Move to the start of the current line. */
+static void
+cr ()
+{
+  if (_rl_term_cr)
+    {
+#if defined (__MSDOS__)
+      putc ('\r', rl_outstream);
+#else
+      tputs (_rl_term_cr, 1, _rl_output_character_function);
+#endif
+      _rl_last_c_pos = 0;
+    }
+}
+
+/* Redraw the last line of a multi-line prompt that may possibly contain
+   terminal escape sequences.  Called with the cursor at column 0 of the
+   line to draw the prompt on. */
+static void
+redraw_prompt (t)
+     char *t;
+{
+  char *oldp, *oldl, *oldlprefix;
+  int oldlen, oldlast, oldplen, oldninvis, oldphyschars;
+
+  /* Geez, I should make this a struct. */
+  oldp = rl_display_prompt;
+  oldl = local_prompt;
+  oldlprefix = local_prompt_prefix;
+  oldlen = prompt_visible_length;
+  oldplen = prompt_prefix_length;
+  oldlast = prompt_last_invisible;
+  oldninvis = prompt_invis_chars_first_line;
+  oldphyschars = prompt_physical_chars;
+
+  rl_display_prompt = t;
+  local_prompt = expand_prompt (t, &prompt_visible_length,
+                                  &prompt_last_invisible,
+                                  &prompt_invis_chars_first_line,
+                                  &prompt_physical_chars);
+  local_prompt_prefix = (char *)NULL;
+  rl_forced_update_display ();
+
+  rl_display_prompt = oldp;
+  local_prompt = oldl;
+  local_prompt_prefix = oldlprefix;
+  prompt_visible_length = oldlen;
+  prompt_prefix_length = oldplen;
+  prompt_last_invisible = oldlast;
+  prompt_invis_chars_first_line = oldninvis;
+  prompt_physical_chars = oldphyschars;
+}
+      
+/* Redisplay the current line after a SIGWINCH is received. */
+void
+_rl_redisplay_after_sigwinch ()
+{
+  char *t;
+
+  /* Clear the current line and put the cursor at column 0.  Make sure
+     the right thing happens if we have wrapped to a new screen line. */
+  if (_rl_term_cr)
+    {
+#if defined (__MSDOS__)
+      putc ('\r', rl_outstream);
+#else
+      tputs (_rl_term_cr, 1, _rl_output_character_function);
+#endif
+      _rl_last_c_pos = 0;
+#if defined (__MSDOS__)
+      space_to_eol (_rl_screenwidth);
+      putc ('\r', rl_outstream);
+#else
+      if (_rl_term_clreol)
+       tputs (_rl_term_clreol, 1, _rl_output_character_function);
+      else
+       {
+         space_to_eol (_rl_screenwidth);
+         tputs (_rl_term_cr, 1, _rl_output_character_function);
+       }
+#endif
+      if (_rl_last_v_pos > 0)
+       _rl_move_vert (0);
+    }
+  else
+    rl_crlf ();
+
+  /* Redraw only the last line of a multi-line prompt. */
+  t = strrchr (rl_display_prompt, '\n');
+  if (t)
+    redraw_prompt (++t);
+  else
+    rl_forced_update_display ();
+}
+
+void
+_rl_clean_up_for_exit ()
+{
+  if (readline_echoing_p)
+    {
+      _rl_move_vert (_rl_vis_botlin);
+      _rl_vis_botlin = 0;
+      fflush (rl_outstream);
+      rl_restart_output (1, 0);
+    }
+}
+
+void
+_rl_erase_entire_line ()
+{
+  cr ();
+  _rl_clear_to_eol (0);
+  cr ();
+  fflush (rl_outstream);
+}
+
+/* return the `current display line' of the cursor -- the number of lines to
+   move up to get to the first screen line of the current readline line. */
+int
+_rl_current_display_line ()
+{
+  int ret, nleft;
+
+  /* Find out whether or not there might be invisible characters in the
+     editing buffer. */
+  if (rl_display_prompt == rl_prompt)
+    nleft = _rl_last_c_pos - _rl_screenwidth - rl_visible_prompt_length;
+  else
+    nleft = _rl_last_c_pos - _rl_screenwidth;
+
+  if (nleft > 0)
+    ret = 1 + nleft / _rl_screenwidth;
+  else
+    ret = 0;
+
+  return ret;
+}
+
+#if defined (HANDLE_MULTIBYTE)
+/* Calculate the number of screen columns occupied by STR from START to END.
+   In the case of multibyte characters with stateful encoding, we have to
+   scan from the beginning of the string to take the state into account. */
+static int
+_rl_col_width (str, start, end)
+     const char *str;
+     int start, end;
+{
+  wchar_t wc;
+  mbstate_t ps = {0};
+  int tmp, point, width, max;
+
+  if (end <= start)
+    return 0;
+
+  point = 0;
+  max = end;
+
+  while (point < start)
+    {
+      tmp = mbrlen (str + point, max, &ps);
+      if (MB_INVALIDCH ((size_t)tmp))
+       {
+         /* In this case, the bytes are invalid or too short to compose a
+            multibyte character, so we assume that the first byte represents
+            a single character. */
+         point++;
+         max--;
+
+         /* Clear the state of the byte sequence, because in this case the
+            effect of mbstate is undefined. */
+         memset (&ps, 0, sizeof (mbstate_t));
+       }
+      else if (MB_NULLWCH (tmp))
+       break;          /* Found '\0' */
+      else
+       {
+         point += tmp;
+         max -= tmp;
+       }
+    }
+
+  /* If START is not a byte that starts a character, then POINT will be
+     greater than START.  In this case, assume that (POINT - START) gives
+     a byte count that is the number of columns of difference. */
+  width = point - start;
+
+  while (point < end)
+    {
+      tmp = mbrtowc (&wc, str + point, max, &ps);
+      if (MB_INVALIDCH ((size_t)tmp))
+       {
+         /* In this case, the bytes are invalid or too short to compose a
+            multibyte character, so we assume that the first byte represents
+            a single character. */
+         point++;
+         max--;
+
+         /* and assume that the byte occupies a single column. */
+         width++;
+
+         /* Clear the state of the byte sequence, because in this case the
+            effect of mbstate is undefined. */
+         memset (&ps, 0, sizeof (mbstate_t));
+       }
+      else if (MB_NULLWCH (tmp))
+       break;                  /* Found '\0' */
+      else
+       {
+         point += tmp;
+         max -= tmp;
+         tmp = wcwidth(wc);
+         width += (tmp >= 0) ? tmp : 1;
+       }
+    }
+
+  width += point - end;
+
+  return width;
+}
+#endif /* HANDLE_MULTIBYTE */
deleted file mode 100644 (file)
index 47ead9f095e0c01590b11adaa8b647c7a3415adb..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,452 +0,0 @@
-
-@node GNU Free Documentation License
-@appendixsec GNU Free Documentation License
-
-@cindex FDL, GNU Free Documentation License
-@center Version 1.2, November 2002
-
-@display
-Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA  02111-1307, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-@end display
-
-@enumerate 0
-@item
-PREAMBLE
-
-The purpose of this License is to make a manual, textbook, or other
-functional and useful document @dfn{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
-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
-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.
-
-@item
-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 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.
-
-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
-of the Document that deals exclusively with the relationship of the
-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
-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
-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 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,
-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''.
-
-Examples of suitable formats for Transparent copies include plain
-@sc{ascii} without markup, Texinfo input format, La@TeX{} input
-format, @acronym{SGML} or @acronym{XML} using a publicly available
-@acronym{DTD}, and standard-conforming simple @acronym{HTML},
-PostScript or @acronym{PDF} designed for human modification.  Examples
-of transparent image formats include @acronym{PNG}, @acronym{XCF} and
-@acronym{JPG}.  Opaque formats include proprietary formats that can be
-read and edited only by proprietary word processors, @acronym{SGML} or
-@acronym{XML} for which the @acronym{DTD} and/or processing tools are
-not generally available, and the machine-generated @acronym{HTML},
-PostScript or @acronym{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 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,
-preceding the beginning of the body of the text.
-
-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''
-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
-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.
-
-@item
-VERBATIM COPYING
-
-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
-conditions whatsoever to those of this License.  You 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.
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
-@item
-COPYING IN QUANTITY
-
-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
-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
-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.
-
-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
-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.
-
-@item
-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:
-
-@enumerate A
-@item
-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.
-
-@item
-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.
-
-@item
-State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-
-@item
-Preserve all the copyright notices of the Document.
-
-@item
-Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-
-@item
-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.
-
-@item
-Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-
-@item
-Include an unaltered copy of this License.
-
-@item
-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.
-
-@item
-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.
-
-@item
-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.
-
-@item
-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.
-
-@item
-Delete any section Entitled ``Endorsements''.  Such a section
-may not be included in the Modified Version.
-
-@item
-Do not retitle any existing section to be Entitled ``Endorsements'' or
-to conflict in title with any Invariant Section.
-
-@item
-Preserve any Warranty Disclaimers.
-@end enumerate
-
-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.
-
-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
-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
-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 assert or
-imply endorsement of any Modified Version.
-
-@item
-COMBINING DOCUMENTS
-
-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
-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
-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 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.''
-
-@item
-COLLECTIONS OF 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
-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.
-
-@item
-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 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 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
-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
-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.
-
-@item
-TRANSLATION
-
-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
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections.  You may include a
-translation of this License, and all the license notices in the
-Document, and any Warranty Disclaimers, provided that you also include
-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
-its Title (section 1) will typically require changing the actual
-title.
-
-@item
-TERMINATION
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License.  Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License.  However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-@item
-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
-@uref{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.
-@end enumerate
-
-@page
-@appendixsubsec ADDENDUM: How to use this License for your documents
-
-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:
-
-@smallexample
-@group
-  Copyright (C)  @var{year}  @var{your name}.
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.2
-  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''.
-@end group
-@end smallexample
-
-If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the ``with...Texts.'' line with this:
-
-@smallexample
-@group
-    with the Invariant Sections being @var{list their titles}, with
-    the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
-    being @var{list}.
-@end group
-@end smallexample
-
-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
-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.
-
-@c Local Variables:
-@c ispell-local-pdict: "ispell-dict"
-@c End:
-
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..68e5eb548f5a9ae3260efa7e16b211f3cea1bcf3
--- /dev/null
@@ -0,0 +1 @@
+../../../doc/fdl.texi
\ No newline at end of file
index b8fcb0d..031a31d 100644 (file)
Binary files a/lib/readline/doc/history.dvi and b/lib/readline/doc/history.dvi differ
index 5da3c58..d8e3a0e 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on September, 22  2003 by texi2html 1.64 -->
+<!-- Created on July, 27  2004 by texi2html 1.64 -->
 <!-- 
 Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -2100,7 +2100,7 @@ to permit their use in free software.
 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
 </TR></TABLE>
 <H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>September, 22  2003</I>
+This document was generated by <I>Chet Ramey</I> on <I>July, 27  2004</I>
 using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
 "><I>texi2html</I></A>
 <P></P>  
@@ -2262,7 +2262,7 @@ the following structure:
 <BR>  
 <FONT SIZE="-1">
 This document was generated
-by <I>Chet Ramey</I> on <I>September, 22  2003</I>
+by <I>Chet Ramey</I> on <I>July, 27  2004</I>
 using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
 "><I>texi2html</I></A>
 
index 70bbb62..e7dddf7 100644 (file)
@@ -1,11 +1,11 @@
 This is history.info, produced by makeinfo version 4.5 from
 ./history.texi.
 
-This document describes the GNU History library (version 5.0, 19
-September 2003), a programming tool that provides a consistent user
+This document describes the GNU History library (version 5.0, 28
+January 2004), a programming tool that provides a consistent user
 interface for recalling lines of previously typed input.
 
-   Copyright (C) 1988-2003 Free Software Foundation, Inc.
+   Copyright (C) 1988-2004 Free Software Foundation, Inc.
 
    Permission is granted to make and distribute verbatim copies of this
 manual provided the copyright notice and this permission notice are
@@ -1290,28 +1290,28 @@ Function and Variable Index
 
 \1f
 Tag Table:
-Node: Top\7f1282
-Node: Using History Interactively\7f1910
-Node: History Interaction\7f2417
-Node: Event Designators\7f3836
-Node: Word Designators\7f4760
-Node: Modifiers\7f6390
-Node: Programming with GNU History\7f7608
-Node: Introduction to History\7f8339
-Node: History Storage\7f10024
-Node: History Functions\7f11159
-Node: Initializing History and State Management\7f12143
-Node: History List Management\7f12943
-Node: Information About the History List\7f14957
-Node: Moving Around the History List\7f16439
-Node: Searching the History List\7f17428
-Node: Managing the History File\7f19346
-Node: History Expansion\7f21152
-Node: History Variables\7f23047
-Node: History Programming Example\7f25836
-Node: Copying This Manual\7f28558
-Node: GNU Free Documentation License\7f28796
-Node: Concept Index\7f51189
-Node: Function and Variable Index\7f51739
+Node: Top\7f1280
+Node: Using History Interactively\7f1908
+Node: History Interaction\7f2415
+Node: Event Designators\7f3834
+Node: Word Designators\7f4758
+Node: Modifiers\7f6388
+Node: Programming with GNU History\7f7606
+Node: Introduction to History\7f8337
+Node: History Storage\7f10022
+Node: History Functions\7f11157
+Node: Initializing History and State Management\7f12141
+Node: History List Management\7f12941
+Node: Information About the History List\7f14955
+Node: Moving Around the History List\7f16437
+Node: Searching the History List\7f17426
+Node: Managing the History File\7f19344
+Node: History Expansion\7f21150
+Node: History Variables\7f23045
+Node: History Programming Example\7f25834
+Node: Copying This Manual\7f28556
+Node: GNU Free Documentation License\7f28794
+Node: Concept Index\7f51187
+Node: Function and Variable Index\7f51737
 \1f
 End Tag Table
index 8400c26..a790fcf 100644 (file)
@@ -1,9 +1,9 @@
-This is TeX, Version 3.14159 (Web2C 7.3.1) (format=tex 2001.2.12)  22 SEP 2003 09:04
-**/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/history.
-texi
+This is TeX, Version 3.14159 (Web2C 7.3.1) (format=tex 2001.2.12)  27 JUL 2004 09:31
+**/net/celerra-dm1/fs04/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/his
+tory.texi
 
-(/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/history.t
-exi (texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics,
+(/net/celerra-dm1/fs04/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/hist
+ory.texi (texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics,
 \bindingoffset=\dimen16
 \normaloffset=\dimen17
 \pagewidth=\dimen18
@@ -34,13 +34,13 @@ exi (texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics,
 \toksD=\toks18
 \boxA=\box19
 \countA=\count30
- fonts,
+
+fonts,
 \sffam=\fam8
 \textleading=\dimen26
 \mainmagstep=\count31
 \fontdepth=\count32
-
-page headings,
+ page headings,
 \titlepagetopglue=\skip20
 \titlepagebottomglue=\skip21
 \evenheadline=\toks19
@@ -81,7 +81,8 @@ page headings,
 \lastnegativepageno=\count43
 \shortappendixwidth=\dimen33
 \tocindent=\dimen34
- environments,
+
+environments,
 \errorbox=\box22
 \lispnarrowing=\skip30
 \envskipamount=\skip31
@@ -94,8 +95,7 @@ page headings,
 \lskip=\skip35
 \rskip=\skip36
 \tabw=\dimen38
-
-defuns,
+ defuns,
 \defbodyindent=\skip37
 \defargsindent=\skip38
 \deflastargmargin=\skip39
@@ -162,11 +162,11 @@ and turning on texinfo input format.) (history.aux)
 [22] (history.vrs) [23] [24] ) 
 Here is how much of TeX's memory you used:
  1399 strings out of 13013
- 16305 string characters out of 97233
- 45527 words of memory out of 263001
+ 16315 string characters out of 97233
+ 45523 words of memory out of 263001
  2271 multiletter control sequences out of 10000+0
  31953 words of font info for 111 fonts, out of 400000 for 1000
  19 hyphenation exceptions out of 1000
- 15i,6n,17p,306b,649s stack positions out of 300i,100n,500p,50000b,4000s
+ 15i,6n,17p,311b,649s stack positions out of 300i,100n,500p,50000b,4000s
 
-Output written on history.dvi (28 pages, 79868 bytes).
+Output written on history.dvi (28 pages, 79856 bytes).
index 71a748a..6e07bfa 100644 (file)
@@ -8,7 +8,7 @@
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 300 -o history.ps history.dvi
 %DVIPSParameters: dpi=300, compressed
-%DVIPSSource:  TeX output 2003.09.22:0904
+%DVIPSSource:  TeX output 2004.07.27:0931
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -977,40 +977,41 @@ TeXDict begin
 %%Page: 1 1
 1 0 bop 75 659 a Fs(GNU)33 b(History)f(Library)p 75 709
 1800 17 v 960 757 a Fr(Edition)16 b(5.0,)e(for)h Fq(History)f(Library)g
-Fr(V)l(ersion)i(5.0.)1559 811 y(Septem)o(b)q(er)g(2003)75
+Fr(V)l(ersion)i(5.0.)1609 811 y(Jan)o(uary)f(2004)75
 2467 y Fp(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23
 b(Reserv)n(e)f(Univ)n(ersit)n(y)75 2534 y(Brian)h(F)-6
 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)p
 75 2570 1800 9 v eop
 %%Page: 2 2
-2 1 bop 75 1512 a Fr(This)22 b(do)q(cumen)o(t)h(describ)q(es)g(the)f
-(GNU)g(History)f(library)i(\(v)o(ersion)f(5.0,)g(19)f(Septem)o(b)q(er)i
-(2003\),)e(a)75 1567 y(programming)15 b(to)q(ol)h(that)g(pro)o(vides)g
-(a)g(consisten)o(t)g(user)g(in)o(terface)g(for)g(recalling)h(lines)h
-(of)e(previously)75 1621 y(t)o(yp)q(ed)g(input.)75 1689
-y(Cop)o(yrigh)o(t)301 1688 y(c)289 1689 y Fo(\015)e Fr(1988-2003)f(F)l
-(ree)i(Soft)o(w)o(are)f(F)l(oundation,)h(Inc.)75 1756
-y(P)o(ermission)i(is)f(gran)o(ted)g(to)f(mak)o(e)h(and)g(distribute)i
-(v)o(erbatim)d(copies)i(of)f(this)h(man)o(ual)f(pro)o(vided)h(the)75
-1811 y(cop)o(yrigh)o(t)e(notice)h(and)f(this)h(p)q(ermission)g(notice)g
-(are)f(preserv)o(ed)h(on)f(all)h(copies.)195 1878 y(P)o(ermission)i(is)
-g(gran)o(ted)f(to)g(cop)o(y)l(,)h(distribute)h(and/or)e(mo)q(dify)h
-(this)g(do)q(cumen)o(t)g(under)195 1933 y(the)h(terms)f(of)h(the)g(GNU)
-g(F)l(ree)g(Do)q(cumen)o(tation)g(License,)i(V)l(ersion)f(1.1)e(or)g
-(an)o(y)h(later)195 1988 y(v)o(ersion)14 b(published)i(b)o(y)e(the)g(F)
-l(ree)f(Soft)o(w)o(are)g(F)l(oundation;)h(with)g(no)f(In)o(v)m(arian)o
-(t)i(Sections,)195 2042 y(with)h(the)f(F)l(ron)o(t-Co)o(v)o(er)e(texts)
-i(b)q(eing)i(\\A)e(GNU)g(Man)o(ual,")g(and)g(with)h(the)f(Bac)o(k-Co)o
-(v)o(er)195 2097 y(T)l(exts)h(as)g(in)h(\(a\))e(b)q(elo)o(w.)24
-b(A)16 b(cop)o(y)g(of)g(the)g(license)i(is)f(included)i(in)e(the)f
-(section)h(en)o(titled)195 2152 y(\\GNU)e(F)l(ree)g(Do)q(cumen)o
-(tation)g(License.")195 2219 y(\(a\))j(The)h(FSF's)f(Bac)o(k-Co)o(v)o
-(er)g(T)l(ext)h(is:)28 b(\\Y)l(ou)19 b(ha)o(v)o(e)g(freedom)g(to)f(cop)
-o(y)h(and)g(mo)q(dify)195 2274 y(this)e(GNU)f(Man)o(ual,)g(lik)o(e)h
-(GNU)f(soft)o(w)o(are.)22 b(Copies)17 b(published)h(b)o(y)f(the)f(F)l
-(ree)g(Soft)o(w)o(are)195 2329 y(F)l(oundation)g(raise)f(funds)h(for)e
-(GNU)h(dev)o(elopmen)o(t.")75 2451 y(Published)i(b)o(y)f(the)f(F)l(ree)
-g(Soft)o(w)o(are)f(F)l(oundation)75 2506 y(59)h(T)l(emple)h(Place,)f
+2 1 bop 75 1512 a Fr(This)19 b(do)q(cumen)o(t)f(describ)q(es)h(the)f
+(GNU)g(History)g(library)h(\(v)o(ersion)e(5.0,)h(28)f(Jan)o(uary)h
+(2004\),)e(a)i(pro-)75 1567 y(gramming)11 b(to)q(ol)g(that)f(pro)o
+(vides)i(a)f(consisten)o(t)g(user)h(in)o(terface)f(for)g(recalling)i
+(lines)f(of)f(previously)i(t)o(yp)q(ed)75 1621 y(input.)75
+1689 y(Cop)o(yrigh)o(t)301 1688 y(c)289 1689 y Fo(\015)h
+Fr(1988-2004)f(F)l(ree)i(Soft)o(w)o(are)f(F)l(oundation,)h(Inc.)75
+1756 y(P)o(ermission)i(is)f(gran)o(ted)g(to)f(mak)o(e)h(and)g
+(distribute)i(v)o(erbatim)d(copies)i(of)f(this)h(man)o(ual)f(pro)o
+(vided)h(the)75 1811 y(cop)o(yrigh)o(t)e(notice)h(and)f(this)h(p)q
+(ermission)g(notice)g(are)f(preserv)o(ed)h(on)f(all)h(copies.)195
+1878 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)l(,)h(distribute)
+h(and/or)e(mo)q(dify)h(this)g(do)q(cumen)o(t)g(under)195
+1933 y(the)h(terms)f(of)h(the)g(GNU)g(F)l(ree)g(Do)q(cumen)o(tation)g
+(License,)i(V)l(ersion)f(1.1)e(or)g(an)o(y)h(later)195
+1988 y(v)o(ersion)14 b(published)i(b)o(y)e(the)g(F)l(ree)f(Soft)o(w)o
+(are)g(F)l(oundation;)h(with)g(no)f(In)o(v)m(arian)o(t)i(Sections,)195
+2042 y(with)h(the)f(F)l(ron)o(t-Co)o(v)o(er)e(texts)i(b)q(eing)i(\\A)e
+(GNU)g(Man)o(ual,")g(and)g(with)h(the)f(Bac)o(k-Co)o(v)o(er)195
+2097 y(T)l(exts)h(as)g(in)h(\(a\))e(b)q(elo)o(w.)24 b(A)16
+b(cop)o(y)g(of)g(the)g(license)i(is)f(included)i(in)e(the)f(section)h
+(en)o(titled)195 2152 y(\\GNU)e(F)l(ree)g(Do)q(cumen)o(tation)g
+(License.")195 2219 y(\(a\))j(The)h(FSF's)f(Bac)o(k-Co)o(v)o(er)g(T)l
+(ext)h(is:)28 b(\\Y)l(ou)19 b(ha)o(v)o(e)g(freedom)g(to)f(cop)o(y)h
+(and)g(mo)q(dify)195 2274 y(this)e(GNU)f(Man)o(ual,)g(lik)o(e)h(GNU)f
+(soft)o(w)o(are.)22 b(Copies)17 b(published)h(b)o(y)f(the)f(F)l(ree)g
+(Soft)o(w)o(are)195 2329 y(F)l(oundation)g(raise)f(funds)h(for)e(GNU)h
+(dev)o(elopmen)o(t.")75 2451 y(Published)i(b)o(y)f(the)f(F)l(ree)g
+(Soft)o(w)o(are)f(F)l(oundation)75 2506 y(59)h(T)l(emple)h(Place,)f
 (Suite)i(330,)75 2560 y(Boston,)d(MA)h(02111-1307)75
 2615 y(USA)p eop
 %%Page: -1 3
index 4b8e4f5..c63a313 100644 (file)
Binary files a/lib/readline/doc/readline.dvi and b/lib/readline/doc/readline.dvi differ
index 1b96d95..e4eb680 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on September, 22  2003 by texi2html 1.64 -->
+<!-- Created on July, 27  2004 by texi2html 1.64 -->
 <!-- 
 Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -1551,50 +1551,58 @@ The killed text is saved on the kill-ring.
 <P>
 
 <A NAME="IDX107"></A>
-<DT><CODE>delete-horizontal-space ()</CODE>
+<DT><CODE>unix-filename-rubout ()</CODE>
 <DD><A NAME="IDX108"></A>
-Delete all spaces and tabs around point.  By default, this is unbound.
+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.
 <P>
 
 <A NAME="IDX109"></A>
-<DT><CODE>kill-region ()</CODE>
+<DT><CODE>delete-horizontal-space ()</CODE>
 <DD><A NAME="IDX110"></A>
+Delete all spaces and tabs around point.  By default, this is unbound.
+<P>
+
+<A NAME="IDX111"></A>
+<DT><CODE>kill-region ()</CODE>
+<DD><A NAME="IDX112"></A>
 Kill the text in the current region.
 By default, this command is unbound.
 <P>
 
-<A NAME="IDX111"></A>
+<A NAME="IDX113"></A>
 <DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX112"></A>
+<DD><A NAME="IDX114"></A>
 Copy the text in the region to the kill buffer, so it can be yanked
 right away.  By default, this command is unbound.
 <P>
 
-<A NAME="IDX113"></A>
+<A NAME="IDX115"></A>
 <DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX114"></A>
+<DD><A NAME="IDX116"></A>
 Copy the word before point to the kill buffer.
 The word boundaries are the same as <CODE>backward-word</CODE>.
 By default, this command is unbound.
 <P>
 
-<A NAME="IDX115"></A>
+<A NAME="IDX117"></A>
 <DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX116"></A>
+<DD><A NAME="IDX118"></A>
 Copy the word following point to the kill buffer.
 The word boundaries are the same as <CODE>forward-word</CODE>.
 By default, this command is unbound.
 <P>
 
-<A NAME="IDX117"></A>
+<A NAME="IDX119"></A>
 <DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX118"></A>
+<DD><A NAME="IDX120"></A>
 Yank the top of the kill ring into the buffer at point.
 <P>
 
-<A NAME="IDX119"></A>
+<A NAME="IDX121"></A>
 <DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX120"></A>
+<DD><A NAME="IDX122"></A>
 Rotate the kill-ring, and yank the new top.  You can only do this if
 the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
 </DL>
@@ -1618,16 +1626,16 @@ the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
 <!--docid::SEC18::-->
 <DL COMPACT>
 
-<A NAME="IDX121"></A>
+<A NAME="IDX123"></A>
 <DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX122"></A>
+<DD><A NAME="IDX124"></A>
 Add this digit to the argument already accumulating, or start a new
 argument.  <KBD>M--</KBD> starts a negative argument.
 <P>
 
-<A NAME="IDX123"></A>
+<A NAME="IDX125"></A>
 <DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX124"></A>
+<DD><A NAME="IDX126"></A>
 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.
@@ -1662,30 +1670,30 @@ By default, this is not bound to a key.
 <P>
 
 <DL COMPACT>
-<A NAME="IDX125"></A>
+<A NAME="IDX127"></A>
 <DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX126"></A>
+<DD><A NAME="IDX128"></A>
 Attempt to perform completion on the text before point.
 The actual completion performed is application-specific.
 The default is filename completion.
 <P>
 
-<A NAME="IDX127"></A>
+<A NAME="IDX129"></A>
 <DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX128"></A>
+<DD><A NAME="IDX130"></A>
 List the possible completions of the text before point.
 <P>
 
-<A NAME="IDX129"></A>
+<A NAME="IDX131"></A>
 <DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX130"></A>
+<DD><A NAME="IDX132"></A>
 Insert all completions of the text before point that would have
 been generated by <CODE>possible-completions</CODE>.
 <P>
 
-<A NAME="IDX131"></A>
+<A NAME="IDX133"></A>
 <DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX132"></A>
+<DD><A NAME="IDX134"></A>
 Similar to <CODE>complete</CODE>, but replaces the word to be completed
 with a single match from the list of possible completions.
 Repeated execution of <CODE>menu-complete</CODE> steps through the list
@@ -1700,9 +1708,9 @@ This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
 by default.
 <P>
 
-<A NAME="IDX133"></A>
+<A NAME="IDX135"></A>
 <DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX134"></A>
+<DD><A NAME="IDX136"></A>
 Deletes the character under the cursor if not at the beginning or
 end of the line (like <CODE>delete-char</CODE>).
 If at the end of the line, behaves identically to
@@ -1731,22 +1739,22 @@ This command is unbound by default.
 <!--docid::SEC20::-->
 <DL COMPACT>
 
-<A NAME="IDX135"></A>
+<A NAME="IDX137"></A>
 <DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX136"></A>
+<DD><A NAME="IDX138"></A>
 Begin saving the characters typed into the current keyboard macro.
 <P>
 
-<A NAME="IDX137"></A>
+<A NAME="IDX139"></A>
 <DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX138"></A>
+<DD><A NAME="IDX140"></A>
 Stop saving the characters typed into the current keyboard macro
 and save the definition.
 <P>
 
-<A NAME="IDX139"></A>
+<A NAME="IDX141"></A>
 <DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX140"></A>
+<DD><A NAME="IDX142"></A>
 Re-execute the last keyboard macro defined, by making the characters
 in the macro appear as if typed at the keyboard.
 <P>
@@ -1772,87 +1780,87 @@ in the macro appear as if typed at the keyboard.
 <!--docid::SEC21::-->
 <DL COMPACT>
 
-<A NAME="IDX141"></A>
+<A NAME="IDX143"></A>
 <DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX142"></A>
+<DD><A NAME="IDX144"></A>
 Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
 any bindings or variable assignments found there.
 <P>
 
-<A NAME="IDX143"></A>
+<A NAME="IDX145"></A>
 <DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX144"></A>
+<DD><A NAME="IDX146"></A>
 Abort the current editing command and
 ring the terminal's bell (subject to the setting of
 <CODE>bell-style</CODE>).
 <P>
 
-<A NAME="IDX145"></A>
+<A NAME="IDX147"></A>
 <DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX146"></A>
+<DD><A NAME="IDX148"></A>
 If the metafied character <VAR>x</VAR> is lowercase, run the command
 that is bound to the corresponding uppercase character.
 <P>
 
-<A NAME="IDX147"></A>
+<A NAME="IDX149"></A>
 <DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX148"></A>
+<DD><A NAME="IDX150"></A>
 Metafy the next character typed.  This is for keyboards
 without a meta key.  Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
 <KBD>M-f</KBD>.
 <P>
 
-<A NAME="IDX149"></A>
+<A NAME="IDX151"></A>
 <DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX150"></A>
+<DD><A NAME="IDX152"></A>
 Incremental undo, separately remembered for each line.
 <P>
 
-<A NAME="IDX151"></A>
+<A NAME="IDX153"></A>
 <DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX152"></A>
+<DD><A NAME="IDX154"></A>
 Undo all changes made to this line.  This is like executing the <CODE>undo</CODE>
 command enough times to get back to the beginning.
 <P>
 
-<A NAME="IDX153"></A>
+<A NAME="IDX155"></A>
 <DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX154"></A>
+<DD><A NAME="IDX156"></A>
 Perform tilde expansion on the current word.
 <P>
 
-<A NAME="IDX155"></A>
+<A NAME="IDX157"></A>
 <DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX156"></A>
+<DD><A NAME="IDX158"></A>
 Set the mark to the point.  If a
 numeric argument is supplied, the mark is set to that position.
 <P>
 
-<A NAME="IDX157"></A>
+<A NAME="IDX159"></A>
 <DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX158"></A>
+<DD><A NAME="IDX160"></A>
 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.
 <P>
 
-<A NAME="IDX159"></A>
+<A NAME="IDX161"></A>
 <DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX160"></A>
+<DD><A NAME="IDX162"></A>
 A character is read and point is moved to the next occurrence of that
 character.  A negative count searches for previous occurrences.
 <P>
 
-<A NAME="IDX161"></A>
+<A NAME="IDX163"></A>
 <DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX162"></A>
+<DD><A NAME="IDX164"></A>
 A character is read and point is moved to the previous occurrence
 of that character.  A negative count searches for subsequent
 occurrences.
 <P>
 
-<A NAME="IDX163"></A>
+<A NAME="IDX165"></A>
 <DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX164"></A>
+<DD><A NAME="IDX166"></A>
 Without a numeric argument, the value of the <CODE>comment-begin</CODE>
 variable is inserted at the beginning of the current line.
 If a numeric argument is supplied, this command acts as a toggle:  if
@@ -1863,43 +1871,43 @@ the line.
 In either case, the line is accepted as if a newline had been typed.
 <P>
 
-<A NAME="IDX165"></A>
+<A NAME="IDX167"></A>
 <DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX166"></A>
+<DD><A NAME="IDX168"></A>
 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 <VAR>inputrc</VAR> file.  This command is unbound by default.
 <P>
 
-<A NAME="IDX167"></A>
+<A NAME="IDX169"></A>
 <DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX168"></A>
+<DD><A NAME="IDX170"></A>
 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 <VAR>inputrc</VAR> file.  This command is unbound by default.
 <P>
 
-<A NAME="IDX169"></A>
+<A NAME="IDX171"></A>
 <DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX170"></A>
+<DD><A NAME="IDX172"></A>
 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 <VAR>inputrc</VAR> file.  This command is unbound by default.
 <P>
 
-<A NAME="IDX171"></A>
+<A NAME="IDX173"></A>
 <DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX172"></A>
+<DD><A NAME="IDX174"></A>
 When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
 editing mode.
 <P>
 
-<A NAME="IDX173"></A>
+<A NAME="IDX175"></A>
 <DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX174"></A>
+<DD><A NAME="IDX176"></A>
 When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
 editing mode.
 <P>
@@ -1950,7 +1958,7 @@ in the consitency of user interface across discrete programs that need
 to provide a command line interface.
 </P><P>
 
-Copyright (C) 1988-2002 Free Software Foundation, Inc.
+Copyright (C) 1988-2004 Free Software Foundation, Inc.
 </P><P>
 
 Permission is granted to make and distribute verbatim copies of
@@ -2034,8 +2042,8 @@ the simplest way possible, perhaps to replace calls in your code to
 <CODE>gets()</CODE> or <CODE>fgets()</CODE>.
 </P><P>
 
-<A NAME="IDX175"></A>
-<A NAME="IDX176"></A>
+<A NAME="IDX177"></A>
+<A NAME="IDX178"></A>
 </P><P>
 
 The function <CODE>readline()</CODE> prints a prompt <VAR>prompt</VAR>
@@ -2349,7 +2357,7 @@ and a non-zero value if some error occurs.
 These variables are available to function writers.
 </P><P>
 
-<A NAME="IDX177"></A>
+<A NAME="IDX179"></A>
 <DL>
 <DT><U>Variable:</U> char * <B>rl_line_buffer</B>
 <DD>This is the line gathered so far.  You are welcome to modify the
@@ -2359,7 +2367,7 @@ the memory allocated to <CODE>rl_line_buffer</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX178"></A>
+<A NAME="IDX180"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_point</B>
 <DD>The offset of the current cursor position in <CODE>rl_line_buffer</CODE>
@@ -2367,7 +2375,7 @@ the memory allocated to <CODE>rl_line_buffer</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX179"></A>
+<A NAME="IDX181"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_end</B>
 <DD>The number of characters present in <CODE>rl_line_buffer</CODE>.  When
@@ -2376,7 +2384,7 @@ the memory allocated to <CODE>rl_line_buffer</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX180"></A>
+<A NAME="IDX182"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_mark</B>
 <DD>The <VAR>mark</VAR> (saved position) in the current line.  If set, the mark
@@ -2384,7 +2392,7 @@ and point define a <EM>region</EM>.
 </DL>
 </P><P>
 
-<A NAME="IDX181"></A>
+<A NAME="IDX183"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_done</B>
 <DD>Setting this to a non-zero value causes Readline to return the current
@@ -2392,7 +2400,7 @@ line immediately.
 </DL>
 </P><P>
 
-<A NAME="IDX182"></A>
+<A NAME="IDX184"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_num_chars_to_read</B>
 <DD>Setting this to a positive value before calling <CODE>readline()</CODE> causes
@@ -2401,7 +2409,7 @@ than reading up to a character bound to <CODE>accept-line</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX183"></A>
+<A NAME="IDX185"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_pending_input</B>
 <DD>Setting this to a value makes it the next keystroke read.  This is a
@@ -2409,7 +2417,7 @@ way to stuff a single character into the input stream.
 </DL>
 </P><P>
 
-<A NAME="IDX184"></A>
+<A NAME="IDX186"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_dispatching</B>
 <DD>Set to a non-zero value if a function is being called from a key binding;
@@ -2418,7 +2426,7 @@ they were called directly or by Readline's dispatching mechanism.
 </DL>
 </P><P>
 
-<A NAME="IDX185"></A>
+<A NAME="IDX187"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_erase_empty_line</B>
 <DD>Setting this to a non-zero value causes Readline to completely erase
@@ -2428,7 +2436,7 @@ the beginning of the newly-blank line.
 </DL>
 </P><P>
 
-<A NAME="IDX186"></A>
+<A NAME="IDX188"></A>
 <DL>
 <DT><U>Variable:</U> char * <B>rl_prompt</B>
 <DD>The prompt Readline uses.  This is set from the argument to
@@ -2438,7 +2446,7 @@ be used to modify the prompt string after calling <CODE>readline()</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX187"></A>
+<A NAME="IDX189"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_already_prompted</B>
 <DD>If an application wishes to display the prompt itself, rather than have
@@ -2451,14 +2459,14 @@ never sets it.
 </DL>
 </P><P>
 
-<A NAME="IDX188"></A>
+<A NAME="IDX190"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_library_version</B>
 <DD>The version number of this revision of the library.
 </DL>
 </P><P>
 
-<A NAME="IDX189"></A>
+<A NAME="IDX191"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_readline_version</B>
 <DD>An integer encoding the current version of the library.  The encoding is
@@ -2469,7 +2477,7 @@ value 0x0402.
 </DL>
 </P><P>
 
-<A NAME="IDX190"></A>
+<A NAME="IDX192"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_gnu_readline_p</B>
 <DD>Always set to 1, denoting that this is GNU readline rather than some
@@ -2477,7 +2485,7 @@ emulation.
 </DL>
 </P><P>
 
-<A NAME="IDX191"></A>
+<A NAME="IDX193"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_terminal_name</B>
 <DD>The terminal type, used for initialization.  If not set by the application,
@@ -2486,7 +2494,7 @@ the first time it is called.
 </DL>
 </P><P>
 
-<A NAME="IDX192"></A>
+<A NAME="IDX194"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_readline_name</B>
 <DD>This variable is set to a unique name by each application using Readline.
@@ -2495,7 +2503,7 @@ The value allows conditional parsing of the inputrc file
 </DL>
 </P><P>
 
-<A NAME="IDX193"></A>
+<A NAME="IDX195"></A>
 <DL>
 <DT><U>Variable:</U> FILE * <B>rl_instream</B>
 <DD>The stdio stream from which Readline reads input.
@@ -2503,7 +2511,7 @@ If <CODE>NULL</CODE>, Readline defaults to <VAR>stdin</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX194"></A>
+<A NAME="IDX196"></A>
 <DL>
 <DT><U>Variable:</U> FILE * <B>rl_outstream</B>
 <DD>The stdio stream to which Readline performs output.
@@ -2511,7 +2519,7 @@ If <CODE>NULL</CODE>, Readline defaults to <VAR>stdout</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX195"></A>
+<A NAME="IDX197"></A>
 <DL>
 <DT><U>Variable:</U> rl_command_func_t * <B>rl_last_func</B>
 <DD>The address of the last command function Readline executed.  May be used to
@@ -2520,7 +2528,7 @@ example.
 </DL>
 </P><P>
 
-<A NAME="IDX196"></A>
+<A NAME="IDX198"></A>
 <DL>
 <DT><U>Variable:</U> rl_hook_func_t * <B>rl_startup_hook</B>
 <DD>If non-zero, this is the address of a function to call just
@@ -2528,7 +2536,7 @@ before <CODE>readline</CODE> prints the first prompt.
 </DL>
 </P><P>
 
-<A NAME="IDX197"></A>
+<A NAME="IDX199"></A>
 <DL>
 <DT><U>Variable:</U> rl_hook_func_t * <B>rl_pre_input_hook</B>
 <DD>If non-zero, this is the address of a function to call after
@@ -2537,7 +2545,7 @@ starts reading input characters.
 </DL>
 </P><P>
 
-<A NAME="IDX198"></A>
+<A NAME="IDX200"></A>
 <DL>
 <DT><U>Variable:</U> rl_hook_func_t * <B>rl_event_hook</B>
 <DD>If non-zero, this is the address of a function to call periodically
@@ -2547,7 +2555,7 @@ is no keyboard input.
 </DL>
 </P><P>
 
-<A NAME="IDX199"></A>
+<A NAME="IDX201"></A>
 <DL>
 <DT><U>Variable:</U> rl_getc_func_t * <B>rl_getc_function</B>
 <DD>If non-zero, Readline will call indirectly through this pointer
@@ -2557,7 +2565,7 @@ to get a character from the input stream.  By default, it is set to
 </DL>
 </P><P>
 
-<A NAME="IDX200"></A>
+<A NAME="IDX202"></A>
 <DL>
 <DT><U>Variable:</U> rl_voidfunc_t * <B>rl_redisplay_function</B>
 <DD>If non-zero, Readline will call indirectly through this pointer
@@ -2567,7 +2575,7 @@ redisplay function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A
 </DL>
 </P><P>
 
-<A NAME="IDX201"></A>
+<A NAME="IDX203"></A>
 <DL>
 <DT><U>Variable:</U> rl_vintfunc_t * <B>rl_prep_term_function</B>
 <DD>If non-zero, Readline will call indirectly through this pointer
@@ -2578,7 +2586,7 @@ By default, this is set to <CODE>rl_prep_terminal</CODE>
 </DL>
 </P><P>
 
-<A NAME="IDX202"></A>
+<A NAME="IDX204"></A>
 <DL>
 <DT><U>Variable:</U> rl_voidfunc_t * <B>rl_deprep_term_function</B>
 <DD>If non-zero, Readline will call indirectly through this pointer
@@ -2589,7 +2597,7 @@ By default, this is set to <CODE>rl_deprep_terminal</CODE>
 </DL>
 </P><P>
 
-<A NAME="IDX203"></A>
+<A NAME="IDX205"></A>
 <DL>
 <DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B>
 <DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
@@ -2597,7 +2605,7 @@ currently executing readline function was found.
 </DL>
 </P><P>
 
-<A NAME="IDX204"></A>
+<A NAME="IDX206"></A>
 <DL>
 <DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B>
 <DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
@@ -2605,14 +2613,14 @@ last key binding occurred.
 </DL>
 </P><P>
 
-<A NAME="IDX205"></A>
+<A NAME="IDX207"></A>
 <DL>
 <DT><U>Variable:</U> char * <B>rl_executing_macro</B>
 <DD>This variable is set to the text of any currently-executing macro.
 </DL>
 </P><P>
 
-<A NAME="IDX206"></A>
+<A NAME="IDX208"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_readline_state</B>
 <DD>A variable with bit values that encapsulate the current Readline state.
@@ -2668,7 +2676,7 @@ and is about to return the line to the caller.
 </DL>
 </P><P>
 
-<A NAME="IDX207"></A>
+<A NAME="IDX209"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_explicit_arg</B>
 <DD>Set to a non-zero value if an explicit numeric argument was specified by
@@ -2676,7 +2684,7 @@ the user.  Only valid in a bindable command function.
 </DL>
 </P><P>
 
-<A NAME="IDX208"></A>
+<A NAME="IDX210"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_numeric_arg</B>
 <DD>Set to the value of any numeric argument explicitly specified by the user
@@ -2685,7 +2693,7 @@ command function.
 </DL>
 </P><P>
 
-<A NAME="IDX209"></A>
+<A NAME="IDX211"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_editing_mode</B>
 <DD>Set to a value denoting Readline's current editing mode.  A value of
@@ -2763,7 +2771,7 @@ programmer, should bind the functions you write to descriptive names as
 well.  Readline provides a function for doing that:
 </P><P>
 
-<A NAME="IDX210"></A>
+<A NAME="IDX212"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_add_defun</B> <I>(const char *name, rl_command_func_t *function, int key)</I>
 <DD>Add <VAR>name</VAR> to the list of named functions.  Make <VAR>function</VAR> be
@@ -2803,7 +2811,7 @@ get run.  You can make your own keymaps, copy existing keymaps, and tell
 Readline which keymap to use.
 </P><P>
 
-<A NAME="IDX211"></A>
+<A NAME="IDX213"></A>
 <DL>
 <DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>(void)</I>
 <DD>Returns a new, empty keymap.  The space for the keymap is allocated with
@@ -2812,14 +2820,14 @@ Readline which keymap to use.
 </DL>
 </P><P>
 
-<A NAME="IDX212"></A>
+<A NAME="IDX214"></A>
 <DL>
 <DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I>
 <DD>Return a new keymap which is a copy of <VAR>map</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX213"></A>
+<A NAME="IDX215"></A>
 <DL>
 <DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>(void)</I>
 <DD>Return a new keymap with the printing characters bound to rl_insert,
@@ -2828,7 +2836,7 @@ the Meta digits bound to produce numeric arguments.
 </DL>
 </P><P>
 
-<A NAME="IDX214"></A>
+<A NAME="IDX216"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I>
 <DD>Free the storage associated with <VAR>keymap</VAR>.
@@ -2839,21 +2847,21 @@ Readline has several internal keymaps.  These functions allow you to
 change which keymap is active.
 </P><P>
 
-<A NAME="IDX215"></A>
+<A NAME="IDX217"></A>
 <DL>
 <DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>(void)</I>
 <DD>Returns the currently active keymap.
 </DL>
 </P><P>
 
-<A NAME="IDX216"></A>
+<A NAME="IDX218"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I>
 <DD>Makes <VAR>keymap</VAR> the currently active keymap.
 </DL>
 </P><P>
 
-<A NAME="IDX217"></A>
+<A NAME="IDX219"></A>
 <DL>
 <DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(const char *name)</I>
 <DD>Return the keymap matching <VAR>name</VAR>.  <VAR>name</VAR> is one which would
@@ -2861,7 +2869,7 @@ be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="read
 </DL>
 </P><P>
 
-<A NAME="IDX218"></A>
+<A NAME="IDX220"></A>
 <DL>
 <DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I>
 <DD>Return the name matching <VAR>keymap</VAR>.  <VAR>name</VAR> is one which would
@@ -2906,7 +2914,7 @@ initialization function assigned to the <CODE>rl_startup_hook</CODE> variable
 These functions manage key bindings.
 </P><P>
 
-<A NAME="IDX219"></A>
+<A NAME="IDX221"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, rl_command_func_t *function)</I>
 <DD>Binds <VAR>key</VAR> to <VAR>function</VAR> in the currently active keymap.
@@ -2914,7 +2922,7 @@ Returns non-zero in the case of an invalid <VAR>key</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX220"></A>
+<A NAME="IDX222"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_bind_key_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I>
 <DD>Bind <VAR>key</VAR> to <VAR>function</VAR> in <VAR>map</VAR>.
@@ -2922,7 +2930,7 @@ Returns non-zero in the case of an invalid <VAR>key</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX221"></A>
+<A NAME="IDX223"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_bind_key_if_unbound</B> <I>(int key, rl_command_func_t *function)</I>
 <DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in the
@@ -2932,7 +2940,7 @@ already bound.
 </DL>
 </P><P>
 
-<A NAME="IDX222"></A>
+<A NAME="IDX224"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_bind_key_if_unbound_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I>
 <DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>.
@@ -2941,7 +2949,7 @@ already bound.
 </DL>
 </P><P>
 
-<A NAME="IDX223"></A>
+<A NAME="IDX225"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I>
 <DD>Bind <VAR>key</VAR> to the null function in the currently active keymap.
@@ -2949,7 +2957,7 @@ Returns non-zero in case of error.
 </DL>
 </P><P>
 
-<A NAME="IDX224"></A>
+<A NAME="IDX226"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I>
 <DD>Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>.
@@ -2957,21 +2965,21 @@ Returns non-zero in case of error.
 </DL>
 </P><P>
 
-<A NAME="IDX225"></A>
+<A NAME="IDX227"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_unbind_function_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
 <DD>Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX226"></A>
+<A NAME="IDX228"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_unbind_command_in_map</B> <I>(const char *command, Keymap map)</I>
 <DD>Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX227"></A>
+<A NAME="IDX229"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_bind_keyseq</B> <I>(const char *keyseq, rl_command_func_t *function)</I>
 <DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
@@ -2981,7 +2989,7 @@ The return value is non-zero if <VAR>keyseq</VAR> is invalid.
 </DL>
 </P><P>
 
-<A NAME="IDX228"></A>
+<A NAME="IDX230"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_bind_keyseq_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
 <DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
@@ -2991,14 +2999,14 @@ The return value is non-zero if <VAR>keyseq</VAR> is invalid.
 </DL>
 </P><P>
 
-<A NAME="IDX229"></A>
+<A NAME="IDX231"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_set_key</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
 <DD>Equivalent to <CODE>rl_bind_keyseq_in_map</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX230"></A>
+<A NAME="IDX232"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound</B> <I>(const char *keyseq, rl_command_func_t *function)</I>
 <DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in the
@@ -3008,7 +3016,7 @@ already bound.
 </DL>
 </P><P>
 
-<A NAME="IDX231"></A>
+<A NAME="IDX233"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
 <DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>.
@@ -3017,7 +3025,7 @@ already bound.
 </DL>
 </P><P>
 
-<A NAME="IDX232"></A>
+<A NAME="IDX234"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, const char *keyseq, char *data, Keymap map)</I>
 <DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the arbitrary
@@ -3028,7 +3036,7 @@ necessary.  The initial keymap in which to do bindings is <VAR>map</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX233"></A>
+<A NAME="IDX235"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I>
 <DD>Parse <VAR>line</VAR> as if it had been read from the <CODE>inputrc</CODE> file and
@@ -3037,7 +3045,7 @@ perform any key bindings and variable assignments found
 </DL>
 </P><P>
 
-<A NAME="IDX234"></A>
+<A NAME="IDX236"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(const char *filename)</I>
 <DD>Read keybindings and variable assignments from <VAR>filename</VAR>
@@ -3068,14 +3076,14 @@ and the functions invoked by a particular key sequence.  You may also
 associate a new function name with an arbitrary function.
 </P><P>
 
-<A NAME="IDX235"></A>
+<A NAME="IDX237"></A>
 <DL>
 <DT><U>Function:</U> rl_command_func_t * <B>rl_named_function</B> <I>(const char *name)</I>
 <DD>Return the function with name <VAR>name</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX236"></A>
+<A NAME="IDX238"></A>
 <DL>
 <DT><U>Function:</U> rl_command_func_t * <B>rl_function_of_keyseq</B> <I>(const char *keyseq, Keymap map, int *type)</I>
 <DD>Return the function invoked by <VAR>keyseq</VAR> in keymap <VAR>map</VAR>.
@@ -3085,7 +3093,7 @@ it points to (one of <CODE>ISFUNC</CODE>, <CODE>ISKMAP</CODE>, or <CODE>ISMACR</
 </DL>
 </P><P>
 
-<A NAME="IDX237"></A>
+<A NAME="IDX239"></A>
 <DL>
 <DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(rl_command_func_t *function)</I>
 <DD>Return an array of strings representing the key sequences used to
@@ -3093,7 +3101,7 @@ invoke <VAR>function</VAR> in the current keymap.
 </DL>
 </P><P>
 
-<A NAME="IDX238"></A>
+<A NAME="IDX240"></A>
 <DL>
 <DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
 <DD>Return an array of strings representing the key sequences used to
@@ -3101,7 +3109,7 @@ invoke <VAR>function</VAR> in the keymap <VAR>map</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX239"></A>
+<A NAME="IDX241"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I>
 <DD>Print the readline function names and the key sequences currently
@@ -3111,14 +3119,14 @@ the list is formatted in such a way that it can be made part of an
 </DL>
 </P><P>
 
-<A NAME="IDX240"></A>
+<A NAME="IDX242"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>(void)</I>
 <DD>Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX241"></A>
+<A NAME="IDX243"></A>
 <DL>
 <DT><U>Function:</U> const char ** <B>rl_funmap_names</B> <I>(void)</I>
 <DD>Return a NULL terminated array of known function names.  The array is
@@ -3127,7 +3135,7 @@ should <CODE>free()</CODE> the array when you are done, but not the pointers.
 </DL>
 </P><P>
 
-<A NAME="IDX242"></A>
+<A NAME="IDX244"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_add_funmap_entry</B> <I>(const char *name, rl_command_func_t *function)</I>
 <DD>Add <VAR>name</VAR> to the list of bindable Readline command names, and make
@@ -3182,7 +3190,7 @@ tells what to undo, not how to undo it.  <CODE>UNDO_BEGIN</CODE> and
 <CODE>rl_end_undo_group()</CODE>.
 </P><P>
 
-<A NAME="IDX243"></A>
+<A NAME="IDX245"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>(void)</I>
 <DD>Begins saving undo information in a group construct.  The undo
@@ -3192,7 +3200,7 @@ information usually comes from calls to <CODE>rl_insert_text()</CODE> and
 </DL>
 </P><P>
 
-<A NAME="IDX244"></A>
+<A NAME="IDX246"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>(void)</I>
 <DD>Closes the current undo group started with <CODE>rl_begin_undo_group
@@ -3201,7 +3209,7 @@ for each call to <CODE>rl_begin_undo_group()</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX245"></A>
+<A NAME="IDX247"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_add_undo</B> <I>(enum undo_code what, int start, int end, char *text)</I>
 <DD>Remember how to undo an event (according to <VAR>what</VAR>).  The affected
@@ -3209,14 +3217,14 @@ text runs from <VAR>start</VAR> to <VAR>end</VAR>, and encompasses <VAR>text</VA
 </DL>
 </P><P>
 
-<A NAME="IDX246"></A>
+<A NAME="IDX248"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_free_undo_list</B> <I>(void)</I>
 <DD>Free the existing undo list.
 </DL>
 </P><P>
 
-<A NAME="IDX247"></A>
+<A NAME="IDX249"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_do_undo</B> <I>(void)</I>
 <DD>Undo the first thing on the undo list.  Returns <CODE>0</CODE> if there was
@@ -3230,7 +3238,7 @@ once, just before you modify the text.  You must supply the indices of
 the text range that you are going to modify.
 </P><P>
 
-<A NAME="IDX248"></A>
+<A NAME="IDX250"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I>
 <DD>Tell Readline to save the text between <VAR>start</VAR> and <VAR>end</VAR> as a
@@ -3257,7 +3265,7 @@ that text.
 <!--docid::SEC35::-->
 <P>
 
-<A NAME="IDX249"></A>
+<A NAME="IDX251"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_redisplay</B> <I>(void)</I>
 <DD>Change what's displayed on the screen to reflect the current contents
@@ -3265,7 +3273,7 @@ of <CODE>rl_line_buffer</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX250"></A>
+<A NAME="IDX252"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>(void)</I>
 <DD>Force the line to be updated and redisplayed, whether or not
@@ -3273,7 +3281,7 @@ Readline thinks the screen display is correct.
 </DL>
 </P><P>
 
-<A NAME="IDX251"></A>
+<A NAME="IDX253"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_on_new_line</B> <I>(void)</I>
 <DD>Tell the update functions that we have moved onto a new (empty) line,
@@ -3281,7 +3289,7 @@ usually after ouputting a newline.
 </DL>
 </P><P>
 
-<A NAME="IDX252"></A>
+<A NAME="IDX254"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_on_new_line_with_prompt</B> <I>(void)</I>
 <DD>Tell the update functions that we have moved onto a new line, with
@@ -3293,7 +3301,7 @@ It should be used after setting <VAR>rl_already_prompted</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX253"></A>
+<A NAME="IDX255"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>(void)</I>
 <DD>Reset the display state to a clean state and redisplay the current line
@@ -3301,14 +3309,14 @@ starting on a new line.
 </DL>
 </P><P>
 
-<A NAME="IDX254"></A>
+<A NAME="IDX256"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_crlf</B> <I>(void)</I>
 <DD>Move the cursor to the start of the next screen line.
 </DL>
 </P><P>
 
-<A NAME="IDX255"></A>
+<A NAME="IDX257"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_show_char</B> <I>(int c)</I>
 <DD>Display character <VAR>c</VAR> on <CODE>rl_outstream</CODE>.
@@ -3319,7 +3327,7 @@ redisplay.
 </DL>
 </P><P>
 
-<A NAME="IDX256"></A>
+<A NAME="IDX258"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_message</B> <I>(const char *, <small>...</small>)</I>
 <DD>The arguments are a format string as would be supplied to <CODE>printf</CODE>,
@@ -3330,14 +3338,14 @@ is also used to display numeric arguments and search strings.
 </DL>
 </P><P>
 
-<A NAME="IDX257"></A>
+<A NAME="IDX259"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_clear_message</B> <I>(void)</I>
 <DD>Clear the message in the echo area.
 </DL>
 </P><P>
 
-<A NAME="IDX258"></A>
+<A NAME="IDX260"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_save_prompt</B> <I>(void)</I>
 <DD>Save the local Readline prompt display state in preparation for
@@ -3345,7 +3353,7 @@ displaying a new message in the message area with <CODE>rl_message()</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX259"></A>
+<A NAME="IDX261"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_restore_prompt</B> <I>(void)</I>
 <DD>Restore the local Readline prompt display state saved by the most
@@ -3353,7 +3361,7 @@ recent call to <CODE>rl_save_prompt</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX260"></A>
+<A NAME="IDX262"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_expand_prompt</B> <I>(char *prompt)</I>
 <DD>Expand any special character sequences in <VAR>prompt</VAR> and set up the
@@ -3363,10 +3371,15 @@ expand the primary prompt if the <CODE>rl_on_new_line_with_prompt()</CODE>
 function or <CODE>rl_already_prompted</CODE> variable is used.
 It returns the number of visible characters on the last line of the
 (possibly multi-line) prompt.
+Applications may indicate that the prompt contains characters that take
+up no physical screen space when displayed by bracketing a sequence of
+such characters with the special markers <CODE>RL_PROMPT_START_IGNORE</CODE>
+and <CODE>RL_PROMPT_END_IGNORE</CODE> (declared in <TT>`readline.h'</TT>.  This may
+be used to embed terminal-specific escape sequences in prompts.
 </DL>
 </P><P>
 
-<A NAME="IDX261"></A>
+<A NAME="IDX263"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_set_prompt</B> <I>(const char *prompt)</I>
 <DD>Make Readline use <VAR>prompt</VAR> for subsequent redisplay.  This calls
@@ -3393,7 +3406,7 @@ to the result.
 <!--docid::SEC36::-->
 <P>
 
-<A NAME="IDX262"></A>
+<A NAME="IDX264"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_insert_text</B> <I>(const char *text)</I>
 <DD>Insert <VAR>text</VAR> into the line at the current cursor position.
@@ -3401,7 +3414,7 @@ Returns the number of characters inserted.
 </DL>
 </P><P>
 
-<A NAME="IDX263"></A>
+<A NAME="IDX265"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I>
 <DD>Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line.
@@ -3409,7 +3422,7 @@ Returns the number of characters deleted.
 </DL>
 </P><P>
 
-<A NAME="IDX264"></A>
+<A NAME="IDX266"></A>
 <DL>
 <DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I>
 <DD>Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in
@@ -3417,7 +3430,7 @@ the current line.
 </DL>
 </P><P>
 
-<A NAME="IDX265"></A>
+<A NAME="IDX267"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I>
 <DD>Copy the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line
@@ -3429,7 +3442,7 @@ not a kill, a new kill ring slot is used.
 </DL>
 </P><P>
 
-<A NAME="IDX266"></A>
+<A NAME="IDX268"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_push_macro_input</B> <I>(char *macro)</I>
 <DD>Cause <VAR>macro</VAR> to be inserted into the line, as if it had been invoked
@@ -3456,7 +3469,7 @@ by a key bound to a macro.  Not especially useful; use
 <!--docid::SEC37::-->
 <P>
 
-<A NAME="IDX267"></A>
+<A NAME="IDX269"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_read_key</B> <I>(void)</I>
 <DD>Return the next character available from Readline's current input stream.
@@ -3468,7 +3481,7 @@ the <CODE>rl_event_hook</CODE> variable.
 </DL>
 </P><P>
 
-<A NAME="IDX268"></A>
+<A NAME="IDX270"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *stream)</I>
 <DD>Return the next character available from <VAR>stream</VAR>, which is assumed to
@@ -3476,7 +3489,7 @@ be the keyboard.
 </DL>
 </P><P>
 
-<A NAME="IDX269"></A>
+<A NAME="IDX271"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I>
 <DD>Insert <VAR>c</VAR> into the Readline input stream.  It will be "read"
@@ -3487,7 +3500,7 @@ before Readline attempts to read characters from the terminal with
 </DL>
 </P><P>
 
-<A NAME="IDX270"></A>
+<A NAME="IDX272"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_execute_next</B> <I>(int c)</I>
 <DD>Make <VAR>c</VAR> be the next command to be executed when <CODE>rl_read_key()</CODE>
@@ -3495,7 +3508,7 @@ is called.  This sets <VAR>rl_pending_input</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX271"></A>
+<A NAME="IDX273"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_clear_pending_input</B> <I>(void)</I>
 <DD>Unset <VAR>rl_pending_input</VAR>, effectively negating the effect of any
@@ -3504,7 +3517,7 @@ pending input has not already been read with <CODE>rl_read_key()</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX272"></A>
+<A NAME="IDX274"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_set_keyboard_input_timeout</B> <I>(int u)</I>
 <DD>While waiting for keyboard input in <CODE>rl_read_key()</CODE>, Readline will
@@ -3532,7 +3545,7 @@ one-tenth of a second.  Returns the old timeout value.
 <!--docid::SEC38::-->
 <P>
 
-<A NAME="IDX273"></A>
+<A NAME="IDX275"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_prep_terminal</B> <I>(int meta_flag)</I>
 <DD>Modify the terminal settings for Readline's use, so <CODE>readline()</CODE>
@@ -3542,7 +3555,7 @@ read eight-bit input.
 </DL>
 </P><P>
 
-<A NAME="IDX274"></A>
+<A NAME="IDX276"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_deprep_terminal</B> <I>(void)</I>
 <DD>Undo the effects of <CODE>rl_prep_terminal()</CODE>, leaving the terminal in
@@ -3551,7 +3564,7 @@ the state in which it was before the most recent call to
 </DL>
 </P><P>
 
-<A NAME="IDX275"></A>
+<A NAME="IDX277"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_tty_set_default_bindings</B> <I>(Keymap kmap)</I>
 <DD>Read the operating system's terminal editing characters (as would be
@@ -3560,7 +3573,7 @@ The bindings are performed in <VAR>kmap</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX276"></A>
+<A NAME="IDX278"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_tty_unset_default_bindings</B> <I>(Keymap kmap)</I>
 <DD>Reset the bindings manipulated by <CODE>rl_tty_set_default_bindings</CODE> so
@@ -3569,7 +3582,7 @@ The bindings are performed in <VAR>kmap</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX277"></A>
+<A NAME="IDX279"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(const char *terminal_name)</I>
 <DD>Reinitialize Readline's idea of the terminal settings using
@@ -3597,7 +3610,7 @@ environment variable is used.
 <!--docid::SEC39::-->
 <P>
 
-<A NAME="IDX278"></A>
+<A NAME="IDX280"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_replace_line</B> <I>(const char *text, int clear_undo)</I>
 <DD>Replace the contents of <CODE>rl_line_buffer</CODE> with <VAR>text</VAR>.
@@ -3607,7 +3620,7 @@ current line is cleared.
 </DL>
 </P><P>
 
-<A NAME="IDX279"></A>
+<A NAME="IDX281"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_extend_line_buffer</B> <I>(int len)</I>
 <DD>Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR>
@@ -3615,7 +3628,7 @@ characters, possibly reallocating it if necessary.
 </DL>
 </P><P>
 
-<A NAME="IDX280"></A>
+<A NAME="IDX282"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_initialize</B> <I>(void)</I>
 <DD>Initialize or re-initialize Readline's internal state.
@@ -3624,21 +3637,21 @@ reading any input.
 </DL>
 </P><P>
 
-<A NAME="IDX281"></A>
+<A NAME="IDX283"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_ding</B> <I>(void)</I>
 <DD>Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX282"></A>
+<A NAME="IDX284"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_alphabetic</B> <I>(int c)</I>
 <DD>Return 1 if <VAR>c</VAR> is an alphabetic character.
 </DL>
 </P><P>
 
-<A NAME="IDX283"></A>
+<A NAME="IDX285"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_display_match_list</B> <I>(char **matches, int len, int max)</I>
 <DD>A convenience function for displaying a list of strings in
@@ -3655,28 +3668,28 @@ The following are implemented as macros, defined in <CODE>chardefs.h</CODE>.
 Applications should refrain from using them.
 </P><P>
 
-<A NAME="IDX284"></A>
+<A NAME="IDX286"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_uppercase_p</B> <I>(int c)</I>
 <DD>Return 1 if <VAR>c</VAR> is an uppercase alphabetic character.
 </DL>
 </P><P>
 
-<A NAME="IDX285"></A>
+<A NAME="IDX287"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_lowercase_p</B> <I>(int c)</I>
 <DD>Return 1 if <VAR>c</VAR> is a lowercase alphabetic character.
 </DL>
 </P><P>
 
-<A NAME="IDX286"></A>
+<A NAME="IDX288"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_digit_p</B> <I>(int c)</I>
 <DD>Return 1 if <VAR>c</VAR> is a numeric character.
 </DL>
 </P><P>
 
-<A NAME="IDX287"></A>
+<A NAME="IDX289"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_to_upper</B> <I>(int c)</I>
 <DD>If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding
@@ -3684,7 +3697,7 @@ uppercase character.
 </DL>
 </P><P>
 
-<A NAME="IDX288"></A>
+<A NAME="IDX290"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_to_lower</B> <I>(int c)</I>
 <DD>If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding
@@ -3692,7 +3705,7 @@ lowercase character.
 </DL>
 </P><P>
 
-<A NAME="IDX289"></A>
+<A NAME="IDX291"></A>
 <DL>
 <DT><U>Function:</U> int <B>_rl_digit_value</B> <I>(int c)</I>
 <DD>If <VAR>c</VAR> is a number, return the value it represents.
@@ -3717,7 +3730,7 @@ lowercase character.
 <!--docid::SEC40::-->
 <P>
 
-<A NAME="IDX290"></A>
+<A NAME="IDX292"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_macro_bind</B> <I>(const char *keyseq, const char *macro, Keymap map)</I>
 <DD>Bind the key sequence <VAR>keyseq</VAR> to invoke the macro <VAR>macro</VAR>.
@@ -3727,7 +3740,7 @@ use <CODE>rl_generic_bind()</CODE> instead.
 </DL>
 </P><P>
 
-<A NAME="IDX291"></A>
+<A NAME="IDX293"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_macro_dumper</B> <I>(int readable)</I>
 <DD>Print the key sequences bound to macros and their values, using
@@ -3737,7 +3750,7 @@ that it can be made part of an <CODE>inputrc</CODE> file and re-read.
 </DL>
 </P><P>
 
-<A NAME="IDX292"></A>
+<A NAME="IDX294"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_variable_bind</B> <I>(const char *variable, const char *value)</I>
 <DD>Make the Readline variable <VAR>variable</VAR> have <VAR>value</VAR>.
@@ -3747,7 +3760,7 @@ file (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax<
 </DL>
 </P><P>
 
-<A NAME="IDX293"></A>
+<A NAME="IDX295"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_variable_dumper</B> <I>(int readable)</I>
 <DD>Print the readline variable names and their current values
@@ -3757,7 +3770,7 @@ that it can be made part of an <CODE>inputrc</CODE> file and re-read.
 </DL>
 </P><P>
 
-<A NAME="IDX294"></A>
+<A NAME="IDX296"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_set_paren_blink_timeout</B> <I>(int u)</I>
 <DD>Set the time interval (in microseconds) that Readline waits when showing
@@ -3765,7 +3778,7 @@ a balancing character when <CODE>blink-matching-paren</CODE> has been enabled.
 </DL>
 </P><P>
 
-<A NAME="IDX295"></A>
+<A NAME="IDX297"></A>
 <DL>
 <DT><U>Function:</U> char * <B>rl_get_termcap</B> <I>(const char *cap)</I>
 <DD>Retrieve the string value of the termcap capability <VAR>cap</VAR>.
@@ -3803,7 +3816,7 @@ also be invoked as a `callback' function from an event loop.  There
 are functions available to make this easy.
 </P><P>
 
-<A NAME="IDX296"></A>
+<A NAME="IDX298"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(const char *prompt, rl_vcpfunc_t *lhandler)</I>
 <DD>Set up the terminal for readline I/O and display the initial
@@ -3813,7 +3826,7 @@ The function takes the text of the line as an argument.
 </DL>
 </P><P>
 
-<A NAME="IDX297"></A>
+<A NAME="IDX299"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>(void)</I>
 <DD>Whenever an application determines that keyboard input is available, it
@@ -3832,7 +3845,7 @@ the terminal settings are modified for Readline's use again.
 </DL>
 </P><P>
 
-<A NAME="IDX298"></A>
+<A NAME="IDX300"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>(void)</I>
 <DD>Restore the terminal to its initial state and remove the line handler.
@@ -3990,7 +4003,7 @@ values of these variables only when calling <CODE>readline()</CODE>, not in
 a signal handler, so Readline's internal signal state is not corrupted.
 </P><P>
 
-<A NAME="IDX299"></A>
+<A NAME="IDX301"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_catch_signals</B>
 <DD>If this variable is non-zero, Readline will install signal handlers for
@@ -4002,7 +4015,7 @@ The default value of <CODE>rl_catch_signals</CODE> is 1.
 </DL>
 </P><P>
 
-<A NAME="IDX300"></A>
+<A NAME="IDX302"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_catch_sigwinch</B>
 <DD>If this variable is non-zero, Readline will install a signal handler for
@@ -4020,7 +4033,7 @@ Readline provides convenience functions to do the necessary terminal
 and internal state cleanup upon receipt of a signal.
 </P><P>
 
-<A NAME="IDX301"></A>
+<A NAME="IDX303"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_cleanup_after_signal</B> <I>(void)</I>
 <DD>This function will reset the state of the terminal to what it was before
@@ -4030,7 +4043,7 @@ all signals, depending on the values of <CODE>rl_catch_signals</CODE> and
 </DL>
 </P><P>
 
-<A NAME="IDX302"></A>
+<A NAME="IDX304"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_free_line_state</B> <I>(void)</I>
 <DD>This will free any partial state associated with the current input line
@@ -4042,7 +4055,7 @@ current input line.
 </DL>
 </P><P>
 
-<A NAME="IDX303"></A>
+<A NAME="IDX305"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_reset_after_signal</B> <I>(void)</I>
 <DD>This will reinitialize the terminal and reinstall any Readline signal
@@ -4057,14 +4070,14 @@ Readline to update its idea of the terminal size when a <CODE>SIGWINCH</CODE>
 is received.
 </P><P>
 
-<A NAME="IDX304"></A>
+<A NAME="IDX306"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_resize_terminal</B> <I>(void)</I>
 <DD>Update Readline's internal screen size by reading values from the kernel.
 </DL>
 </P><P>
 
-<A NAME="IDX305"></A>
+<A NAME="IDX307"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_set_screen_size</B> <I>(int rows, int cols)</I>
 <DD>Set Readline's idea of the terminal size to <VAR>rows</VAR> rows and
@@ -4077,7 +4090,7 @@ is still interested in the screen dimensions, Readline's idea of the screen
 size may be queried.
 </P><P>
 
-<A NAME="IDX306"></A>
+<A NAME="IDX308"></A>
 <DL>
 <DT><U>Function:</U> void <B>rl_get_screen_size</B> <I>(int *rows, int *cols)</I>
 <DD>Return Readline's idea of the terminal's size in the
@@ -4088,7 +4101,7 @@ variables pointed to by the arguments.
 The following functions install and remove Readline's signal handlers.
 </P><P>
 
-<A NAME="IDX307"></A>
+<A NAME="IDX309"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_set_signals</B> <I>(void)</I>
 <DD>Install Readline's signal handler for <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>,
@@ -4098,7 +4111,7 @@ The following functions install and remove Readline's signal handlers.
 </DL>
 </P><P>
 
-<A NAME="IDX308"></A>
+<A NAME="IDX310"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_clear_signals</B> <I>(void)</I>
 <DD>Remove all of the Readline signal handlers installed by
@@ -4211,7 +4224,7 @@ Such a generator function is referred to as an
 </OL>
 <P>
 
-<A NAME="IDX309"></A>
+<A NAME="IDX311"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
 <DD>Complete the word at or before point.  You have supplied the function
@@ -4220,7 +4233,7 @@ that does the initial simple matching selection algorithm (see
 </DL>
 </P><P>
 
-<A NAME="IDX310"></A>
+<A NAME="IDX312"></A>
 <DL>
 <DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
 <DD>This is a pointer to the generator function for
@@ -4256,7 +4269,7 @@ Here is the complete list of callable completion functions present in
 Readline.
 </P><P>
 
-<A NAME="IDX311"></A>
+<A NAME="IDX313"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I>
 <DD>Complete the word at or before point.  <VAR>what_to_do</VAR> says what to do
@@ -4270,7 +4283,7 @@ a common prefix.
 </DL>
 </P><P>
 
-<A NAME="IDX312"></A>
+<A NAME="IDX314"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
 <DD>Complete the word at or before point.  You have supplied the function
@@ -4282,7 +4295,7 @@ argument depending on <VAR>invoking_key</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX313"></A>
+<A NAME="IDX315"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key)</I>
 <DD>List the possible completions.  See description of <CODE>rl_complete
@@ -4291,7 +4304,7 @@ argument depending on <VAR>invoking_key</VAR>.
 </DL>
 </P><P>
 
-<A NAME="IDX314"></A>
+<A NAME="IDX316"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key)</I>
 <DD>Insert the list of possible completions into the line, deleting the
@@ -4300,7 +4313,7 @@ This calls <CODE>rl_complete_internal()</CODE> with an argument of <SAMP>`*'</SA
 </DL>
 </P><P>
 
-<A NAME="IDX315"></A>
+<A NAME="IDX317"></A>
 <DL>
 <DT><U>Function:</U> int <B>rl_completion_mode</B> <I>(rl_command_func_t *cfunc)</I>
 <DD>Returns the apppriate value to pass to <CODE>rl_complete_internal()</CODE>
@@ -4312,7 +4325,7 @@ the same interface as <CODE>rl_complete()</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX316"></A>
+<A NAME="IDX318"></A>
 <DL>
 <DT><U>Function:</U> char ** <B>rl_completion_matches</B> <I>(const char *text, rl_compentry_func_t *entry_func)</I>
 <DD>Returns an array of strings which is a list of completions for
@@ -4330,7 +4343,7 @@ when there are no more matches.
 </DL>
 </P><P>
 
-<A NAME="IDX317"></A>
+<A NAME="IDX319"></A>
 <DL>
 <DT><U>Function:</U> char * <B>rl_filename_completion_function</B> <I>(const char *text, int state)</I>
 <DD>A generator function for filename completion in the general case.
@@ -4341,7 +4354,7 @@ Readline functions).
 </DL>
 </P><P>
 
-<A NAME="IDX318"></A>
+<A NAME="IDX320"></A>
 <DL>
 <DT><U>Function:</U> char * <B>rl_username_completion_function</B> <I>(const char *text, int state)</I>
 <DD>A completion generator for usernames.  <VAR>text</VAR> contains a partial
@@ -4369,7 +4382,7 @@ for subsequent calls.
 <!--docid::SEC47::-->
 <P>
 
-<A NAME="IDX319"></A>
+<A NAME="IDX321"></A>
 <DL>
 <DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
 <DD>A pointer to the generator function for <CODE>rl_completion_matches()</CODE>.
@@ -4378,7 +4391,7 @@ the default filename completer.
 </DL>
 </P><P>
 
-<A NAME="IDX320"></A>
+<A NAME="IDX322"></A>
 <DL>
 <DT><U>Variable:</U> rl_completion_func_t * <B>rl_attempted_completion_function</B>
 <DD>A pointer to an alternative function to create matches.
@@ -4395,7 +4408,7 @@ completion even if this function returns no matches.
 </DL>
 </P><P>
 
-<A NAME="IDX321"></A>
+<A NAME="IDX323"></A>
 <DL>
 <DT><U>Variable:</U> rl_quote_func_t * <B>rl_filename_quoting_function</B>
 <DD>A pointer to a function that will quote a filename in an
@@ -4412,7 +4425,7 @@ to reset this character.
 </DL>
 </P><P>
 
-<A NAME="IDX322"></A>
+<A NAME="IDX324"></A>
 <DL>
 <DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_dequoting_function</B>
 <DD>A pointer to a function that will remove application-specific quoting
@@ -4425,7 +4438,7 @@ that delimits the filename (usually <SAMP>`''</SAMP> or <SAMP>`"'</SAMP>).  If
 </DL>
 </P><P>
 
-<A NAME="IDX323"></A>
+<A NAME="IDX325"></A>
 <DL>
 <DT><U>Variable:</U> rl_linebuf_func_t * <B>rl_char_is_quoted_p</B>
 <DD>A pointer to a function to call that determines whether or not a specific
@@ -4438,7 +4451,7 @@ used to break words for the completer.
 </DL>
 </P><P>
 
-<A NAME="IDX324"></A>
+<A NAME="IDX326"></A>
 <DL>
 <DT><U>Variable:</U> rl_compignore_func_t * <B>rl_ignore_some_completions_function</B>
 <DD>This function, if defined, is called by the completer when real filename
@@ -4451,7 +4464,7 @@ from the array must be freed.
 </DL>
 </P><P>
 
-<A NAME="IDX325"></A>
+<A NAME="IDX327"></A>
 <DL>
 <DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_completion_hook</B>
 <DD>This function, if defined, is allowed to modify the directory portion
@@ -4467,7 +4480,7 @@ It could be used to expand symbolic links or shell variables in pathnames.
 </DL>
 </P><P>
 
-<A NAME="IDX326"></A>
+<A NAME="IDX328"></A>
 <DL>
 <DT><U>Variable:</U> rl_compdisp_func_t * <B>rl_completion_display_matches_hook</B>
 <DD>If non-zero, then this is the address of a function to call when
@@ -4484,7 +4497,7 @@ function may be called from this hook.
 </DL>
 </P><P>
 
-<A NAME="IDX327"></A>
+<A NAME="IDX329"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_basic_word_break_characters</B>
 <DD>The basic list of characters that signal a break between words for the
@@ -4494,14 +4507,14 @@ which break words for completion in Bash:
 </DL>
 </P><P>
 
-<A NAME="IDX328"></A>
+<A NAME="IDX330"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_basic_quote_characters</B>
 <DD>A list of quote characters which can cause a word break.
 </DL>
 </P><P>
 
-<A NAME="IDX329"></A>
+<A NAME="IDX331"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_completer_word_break_characters</B>
 <DD>The list of characters that signal a break between words for
@@ -4510,7 +4523,19 @@ which break words for completion in Bash:
 </DL>
 </P><P>
 
-<A NAME="IDX330"></A>
+<A NAME="IDX332"></A>
+<DL>
+<DT><U>Variable:</U> rl_cpvfunc_t * <B>rl_completion_word_break_hook</B>
+<DD>If non-zero, this is the address of a function to call when Readline is
+deciding where to separate words for word completion.  It should return
+a character string like <CODE>rl_completer_word_break_characters</CODE> to be
+used to perform the current completion.  The function may choose to set
+<CODE>rl_completer_word_break_characters</CODE> itself.  If the function
+returns <CODE>NULL</CODE>, <CODE>rl_completer_word_break_characters</CODE> is used.
+</DL>
+</P><P>
+
+<A NAME="IDX333"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_completer_quote_characters</B>
 <DD>A list of characters which can be used to quote a substring of the line.
@@ -4520,7 +4545,7 @@ unless they also appear within this list.
 </DL>
 </P><P>
 
-<A NAME="IDX331"></A>
+<A NAME="IDX334"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_filename_quote_characters</B>
 <DD>A list of characters that cause a filename to be quoted by the completer
@@ -4528,7 +4553,7 @@ when they appear in a completed filename.  The default is the null string.
 </DL>
 </P><P>
 
-<A NAME="IDX332"></A>
+<A NAME="IDX335"></A>
 <DL>
 <DT><U>Variable:</U> const char * <B>rl_special_prefixes</B>
 <DD>The list of characters that are word break characters, but should be
@@ -4539,7 +4564,7 @@ shell variables and hostnames.
 </DL>
 </P><P>
 
-<A NAME="IDX333"></A>
+<A NAME="IDX336"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_completion_query_items</B>
 <DD>Up to this many items will be displayed in response to a
@@ -4548,7 +4573,7 @@ she wants to see them all.  The default value is 100.
 </DL>
 </P><P>
 
-<A NAME="IDX334"></A>
+<A NAME="IDX337"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_completion_append_character</B>
 <DD>When a single completion alternative matches at the end of the command
@@ -4561,17 +4586,47 @@ an application-specific command line syntax specification.
 </DL>
 </P><P>
 
-<A NAME="IDX335"></A>
+<A NAME="IDX338"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_completion_suppress_append</B>
 <DD>If non-zero, <VAR>rl_completion_append_character</VAR> is not appended to
-matches at the end of the command line, as described above.  It is
-set to 0 before any application-specific completion function is called,
-and may only be changed within such a function.
+matches at the end of the command line, as described above.
+It is set to 0 before any application-specific completion function
+is called, and may only be changed within such a function.
 </DL>
 </P><P>
 
-<A NAME="IDX336"></A>
+<A NAME="IDX339"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_quote_character</B>
+<DD>When Readline is completing quoted text, as delimited by one of the
+characters in <VAR>rl_completer_quote_characters</VAR>, it sets this variable
+to the quoting character found.
+This is set before any application-specific completion function is called.
+</DL>
+</P><P>
+
+<A NAME="IDX340"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_suppress_quote</B>
+<DD>If non-zero, Readline does not append a matching quote character when
+performing completion on a quoted string.
+It is set to 0 before any application-specific completion function
+is called, and may only be changed within such a function.
+</DL>
+</P><P>
+
+<A NAME="IDX341"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_found_quote</B>
+<DD>When Readline is completing quoted text, it sets this variable
+to a non-zero value if the word being completed contains or is delimited
+by any quoting characters, including backslashes.
+This is set before any application-specific completion function is called.
+</DL>
+</P><P>
+
+<A NAME="IDX342"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_completion_mark_symlink_dirs</B>
 <DD>If non-zero, a slash will be appended to completed filenames that are
@@ -4586,7 +4641,7 @@ function modifies the value, the user's preferences are honored.
 </DL>
 </P><P>
 
-<A NAME="IDX337"></A>
+<A NAME="IDX343"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B>
 <DD>If non-zero, then duplicates in the matches are removed.
@@ -4594,7 +4649,7 @@ The default is 1.
 </DL>
 </P><P>
 
-<A NAME="IDX338"></A>
+<A NAME="IDX344"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_filename_completion_desired</B>
 <DD>Non-zero means that the results of the matches are to be treated as
@@ -4608,7 +4663,7 @@ characters in <CODE>rl_filename_quote_characters</CODE> and
 </DL>
 </P><P>
 
-<A NAME="IDX339"></A>
+<A NAME="IDX345"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B>
 <DD>Non-zero means that the results of the matches are to be quoted using
@@ -4622,7 +4677,7 @@ by <CODE>rl_filename_quoting_function</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX340"></A>
+<A NAME="IDX346"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_attempted_completion_over</B>
 <DD>If an application-specific completion function assigned to
@@ -4633,7 +4688,7 @@ It should be set only by an application's completion function.
 </DL>
 </P><P>
 
-<A NAME="IDX341"></A>
+<A NAME="IDX347"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_completion_type</B>
 <DD>Set to a character describing the type of completion Readline is currently
@@ -4645,7 +4700,7 @@ the same interface as <CODE>rl_complete()</CODE>.
 </DL>
 </P><P>
 
-<A NAME="IDX342"></A>
+<A NAME="IDX348"></A>
 <DL>
 <DT><U>Variable:</U> int <B>rl_inhibit_completion</B>
 <DD>If this variable is non-zero, completion is inhibited.  The completion
@@ -5156,7 +5211,7 @@ valid_argument (caller, arg)
 <!--docid::SEC50::-->
 <P>
 
-<A NAME="IDX343"></A>
+<A NAME="IDX349"></A>
 <center>
  Version 1.2, November 2002
 </center>
@@ -5726,7 +5781,7 @@ to permit their use in free software.
 <TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">editing command lines</A></TD><TD valign=top><A HREF="rlman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="cp_F"></A>F</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX343">FDL, GNU Free Documentation License</A></TD><TD valign=top><A HREF="rlman.html#SEC50">A.1 GNU Free Documentation License</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX349">FDL, GNU Free Documentation License</A></TD><TD valign=top><A HREF="rlman.html#SEC50">A.1 GNU Free Documentation License</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#SEC9">initialization file, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC9">1.3 Readline Init File</A></TD></TR>
@@ -5740,7 +5795,7 @@ to permit their use in free software.
 <TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">notation, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176">readline, function</A></TD><TD valign=top><A HREF="rlman.html#SEC24">2.1 Basic Behavior</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178">readline, function</A></TD><TD valign=top><A HREF="rlman.html#SEC24">2.1 Basic Behavior</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX4">variables, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
@@ -5834,16 +5889,16 @@ to permit their use in free software.
 <TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn__"></A>_</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_A"></A>A</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX43"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX44"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
@@ -5865,62 +5920,62 @@ to permit their use in free software.
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX5">bell-style</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_C"></A>C</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX39"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX40"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX6">comment-begin</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX7">completion-query-items</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX8">convert-meta</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_D"></A>D</TH><TD></TD><TD></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX70"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX9">disable-completion</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_E"></A>E</TH><TD></TD><TD></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX10">editing-mode</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX11">enable-keypad</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX51"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX52"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX29"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX30"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX12">expand-tilde</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_F"></A>F</TH><TD></TD><TD></TD></TR>
@@ -5943,18 +5998,18 @@ to permit their use in free software.
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_I"></A>I</TH><TD></TD><TD></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX15">input-meta</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX17">isearch-terminators</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_K"></A>K</TH><TD></TD><TD></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX18">keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX93"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX99"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX101"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
@@ -5964,8 +6019,8 @@ to permit their use in free software.
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX19">mark-modified-lines</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX20">mark-symlinked-directories</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX21">match-hidden-files</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX16">meta-flag</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_N"></A>N</TH><TD></TD><TD></TD></TR>
@@ -5983,10 +6038,10 @@ to permit their use in free software.
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_P"></A>P</TH><TD></TD><TD></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX23">page-completions</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX45"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX46"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
@@ -5995,201 +6050,207 @@ to permit their use in free software.
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX76"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_R"></A>R</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC24">2.1 Basic Behavior</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC24">2.1 Basic Behavior</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX41"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX42"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX53"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX54"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187">rl_already_prompted</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX340">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221"><CODE>rl_bind_key_if_unbound</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222"><CODE>rl_bind_key_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227"><CODE>rl_bind_keyseq</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230"><CODE>rl_bind_keyseq_if_unbound</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231"><CODE>rl_bind_keyseq_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228"><CODE>rl_bind_keyseq_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204">rl_binding_keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299">rl_catch_signals</A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334">rl_completion_append_character</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310">rl_completion_entry_function</A></TD><TD valign=top><A HREF="rlman.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319">rl_completion_entry_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX336">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX333">rl_completion_query_items</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX335">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX341">rl_completion_type</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202">rl_deprep_term_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184">rl_dispatching</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181">rl_done</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209">rl_editing_mode</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179">rl_end</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185">rl_erase_empty_line</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198">rl_event_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203">rl_executing_keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205">rl_executing_macro</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207">rl_explicit_arg</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX338">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX339">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199">rl_getc_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX337">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX342">rl_inhibit_completion</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193">rl_instream</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195">rl_last_func</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188">rl_library_version</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177">rl_line_buffer</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180">rl_mark</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208">rl_numeric_arg</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194">rl_outstream</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183">rl_pending_input</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178">rl_point</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197">rl_pre_input_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201">rl_prep_term_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186">rl_prompt</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192">rl_readline_name</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206">rl_readline_state</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189">rl_readline_version</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200">rl_redisplay_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332">rl_special_prefixes</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196">rl_startup_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191">rl_terminal_name</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>rl_tty_unset_default_bindings</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189">rl_already_prompted</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX346">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223"><CODE>rl_bind_key_if_unbound</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224"><CODE>rl_bind_key_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229"><CODE>rl_bind_keyseq</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232"><CODE>rl_bind_keyseq_if_unbound</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233"><CODE>rl_bind_keyseq_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230"><CODE>rl_bind_keyseq_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206">rl_binding_keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301">rl_catch_signals</A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX333">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX337">rl_completion_append_character</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312">rl_completion_entry_function</A></TD><TD valign=top><A HREF="rlman.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321">rl_completion_entry_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX341">rl_completion_found_quote</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX342">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX336">rl_completion_query_items</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX339">rl_completion_quote_character</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX338">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX340">rl_completion_suppress_quote</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX347">rl_completion_type</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332">rl_completion_word_break_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204">rl_deprep_term_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186">rl_dispatching</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183">rl_done</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211">rl_editing_mode</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181">rl_end</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187">rl_erase_empty_line</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200">rl_event_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205">rl_executing_keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207">rl_executing_macro</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209">rl_explicit_arg</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX344">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX345">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201">rl_getc_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX343">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX348">rl_inhibit_completion</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195">rl_instream</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197">rl_last_func</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190">rl_library_version</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179">rl_line_buffer</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182">rl_mark</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210">rl_numeric_arg</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196">rl_outstream</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185">rl_pending_input</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180">rl_point</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199">rl_pre_input_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203">rl_prep_term_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188">rl_prompt</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194">rl_readline_name</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208">rl_readline_state</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191">rl_readline_version</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202">rl_redisplay_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX335">rl_special_prefixes</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198">rl_startup_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193">rl_terminal_name</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>rl_tty_unset_default_bindings</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_S"></A>S</TH><TD></TD><TD></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX24">show-all-if-ambiguous</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX25">show-all-if-unmodified</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_T"></A>T</TH><TD></TD><TD></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_U"></A>U</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX97"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
@@ -6198,19 +6259,19 @@ to permit their use in free software.
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_V"></A>V</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX26">visible-stats</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 <TR><TH><A NAME="fn_Y"></A>Y</TH><TD></TD><TD></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX68"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX65"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
 <TR><TD></TD><TD valign=top><A HREF="readline.html#IDX66"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
 <TR><TD COLSPAN=3> <HR></TD></TR>
 </TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
  &nbsp; 
@@ -6425,7 +6486,7 @@ to permit their use in free software.
 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
 </TR></TABLE>
 <H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>September, 22  2003</I>
+This document was generated by <I>Chet Ramey</I> on <I>July, 27  2004</I>
 using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
 "><I>texi2html</I></A>
 <P></P>  
@@ -6587,7 +6648,7 @@ the following structure:
 <BR>  
 <FONT SIZE="-1">
 This document was generated
-by <I>Chet Ramey</I> on <I>September, 22  2003</I>
+by <I>Chet Ramey</I> on <I>July, 27  2004</I>
 using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
 "><I>texi2html</I></A>
 
index 264ebdf..4f7b4ae 100644 (file)
@@ -1,12 +1,11 @@
 This is readline.info, produced by makeinfo version 4.5 from
 ./rlman.texi.
 
-This manual describes the GNU Readline Library (version 5.0, 19
-September 2003), a library which aids in the consistency of user
-interface across discrete programs which provide a command line
-interface.
+This manual describes the GNU Readline Library (version 5.0, 28 January
+2004), a library which aids in the consistency of user interface across
+discrete programs which provide a command line interface.
 
-   Copyright (C) 1988-2003 Free Software Foundation, Inc.
+   Copyright (C) 1988-2004 Free Software Foundation, Inc.
 
    Permission is granted to make and distribute verbatim copies of this
 manual provided the copyright notice and this permission notice are
@@ -1040,6 +1039,11 @@ Killing And Yanking
      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 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.
@@ -1261,7 +1265,7 @@ the standard `vi' movement keys, move to previous history lines with
 aiding in the consitency of user interface across discrete programs
 that need to provide a command line interface.
 
-   Copyright (C) 1988-2002 Free Software Foundation, Inc.
+   Copyright (C) 1988-2004 Free Software Foundation, Inc.
 
    Permission is granted to make and distribute verbatim copies of this
 manual provided the copyright notice and this permission notice pare
@@ -2141,7 +2145,12 @@ Redisplay
      primary prompt if the `rl_on_new_line_with_prompt()' function or
      `rl_already_prompted' variable is used.  It returns the number of
      visible characters on the last line of the (possibly multi-line)
-     prompt.
+     prompt.  Applications may indicate that the prompt contains
+     characters that take up no physical screen space when displayed by
+     bracketing a sequence of such characters with the special markers
+     `RL_PROMPT_START_IGNORE' and `RL_PROMPT_END_IGNORE' (declared in
+     `readline.h'.  This may be used to embed terminal-specific escape
+     sequences in prompts.
 
  - Function: int rl_set_prompt (const char *prompt)
      Make Readline use PROMPT for subsequent redisplay.  This calls
@@ -2836,6 +2845,15 @@ Completion Variables
      `rl_complete_internal()'.  The default list is the value of
      `rl_basic_word_break_characters'.
 
+ - Variable: rl_cpvfunc_t * rl_completion_word_break_hook
+     If non-zero, this is the address of a function to call when
+     Readline is deciding where to separate words for word completion.
+     It should return a character string like
+     `rl_completer_word_break_characters' to be used to perform the
+     current completion.  The function may choose to set
+     `rl_completer_word_break_characters' itself.  If the function
+     returns `NULL', `rl_completer_word_break_characters' is used.
+
  - Variable: const char * rl_completer_quote_characters
      A list of characters which can be used to quote a substring of the
      line.  Completion occurs on the entire substring, and within the
@@ -2875,6 +2893,25 @@ Completion Variables
      set to 0 before any application-specific completion function is
      called, and may only be changed within such a function.
 
+ - Variable: int rl_completion_quote_character
+     When Readline is completing quoted text, as delimited by one of the
+     characters in RL_COMPLETER_QUOTE_CHARACTERS, it sets this variable
+     to the quoting character found.  This is set before any
+     application-specific completion function is called.
+
+ - Variable: int rl_completion_suppress_quote
+     If non-zero, Readline does not append a matching quote character
+     when performing completion on a quoted string.  It is set to 0
+     before any application-specific completion function is called, and
+     may only be changed within such a function.
+
+ - Variable: int rl_completion_found_quote
+     When Readline is completing quoted text, it sets this variable to
+     a non-zero value if the word being completed contains or is
+     delimited by any quoting characters, including backslashes.  This
+     is set before any application-specific completion function is
+     called.
+
  - Variable: int rl_completion_mark_symlink_dirs
      If non-zero, a slash will be appended to completed filenames that
      are symbolic links to directory names, subject to the value of the
@@ -3958,21 +3995,25 @@ Function and Variable Index
 * rl_clear_message:                      Redisplay.
 * rl_clear_pending_input:                Character Input.
 * rl_clear_signals:                      Readline Signal Handling.
-* rl_complete <1>:                       Completion Functions.
-* rl_complete:                           How Completing Works.
+* rl_complete <1>:                       How Completing Works.
+* rl_complete:                           Completion Functions.
 * rl_complete_internal:                  Completion Functions.
 * rl_completer_quote_characters:         Completion Variables.
 * rl_completer_word_break_characters:    Completion Variables.
 * rl_completion_append_character:        Completion Variables.
 * rl_completion_display_matches_hook:    Completion Variables.
-* rl_completion_entry_function <1>:      How Completing Works.
-* rl_completion_entry_function:          Completion Variables.
+* rl_completion_entry_function <1>:      Completion Variables.
+* rl_completion_entry_function:          How Completing Works.
+* rl_completion_found_quote:             Completion Variables.
 * rl_completion_mark_symlink_dirs:       Completion Variables.
 * rl_completion_matches:                 Completion Functions.
 * rl_completion_mode:                    Completion Functions.
 * rl_completion_query_items:             Completion Variables.
+* rl_completion_quote_character:         Completion Variables.
 * rl_completion_suppress_append:         Completion Variables.
+* rl_completion_suppress_quote:          Completion Variables.
 * rl_completion_type:                    Completion Variables.
+* rl_completion_word_break_hook:         Completion Variables.
 * rl_copy_keymap:                        Keymaps.
 * rl_copy_text:                          Modifying Text.
 * rl_crlf:                               Redisplay.
@@ -4098,6 +4139,7 @@ Function and Variable Index
 * transpose-words (M-t):                 Commands For Text.
 * 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.
@@ -4110,58 +4152,58 @@ Function and Variable Index
 
 \1f
 Tag Table:
-Node: Top\7f1298
-Node: Command Line Editing\7f1939
-Node: Introduction and Notation\7f2590
-Node: Readline Interaction\7f4208
-Node: Readline Bare Essentials\7f5395
-Node: Readline Movement Commands\7f7176
-Node: Readline Killing Commands\7f8133
-Node: Readline Arguments\7f10043
-Node: Searching\7f11079
-Node: Readline Init File\7f13222
-Node: Readline Init File Syntax\7f14283
-Node: Conditional Init Constructs\7f25646
-Node: Sample Init File\7f28171
-Node: Bindable Readline Commands\7f31355
-Node: Commands For Moving\7f32405
-Node: Commands For History\7f33255
-Node: Commands For Text\7f36114
-Node: Commands For Killing\7f38829
-Node: Numeric Arguments\7f40780
-Node: Commands For Completion\7f41908
-Node: Keyboard Macros\7f43441
-Node: Miscellaneous Commands\7f44001
-Node: Readline vi Mode\7f47351
-Node: Programming with GNU Readline\7f49169
-Node: Basic Behavior\7f50143
-Node: Custom Functions\7f53573
-Node: Readline Typedefs\7f55051
-Node: Function Writing\7f56681
-Node: Readline Variables\7f57889
-Node: Readline Convenience Functions\7f67312
-Node: Function Naming\7f68294
-Node: Keymaps\7f69546
-Node: Binding Keys\7f71302
-Node: Associating Function Names and Bindings\7f75824
-Node: Allowing Undoing\7f78069
-Node: Redisplay\7f80604
-Node: Modifying Text\7f83675
-Node: Character Input\7f84904
-Node: Terminal Management\7f86684
-Node: Utility Functions\7f88103
-Node: Miscellaneous Functions\7f90442
-Node: Alternate Interface\7f92506
-Node: A Readline Example\7f94651
-Node: Readline Signal Handling\7f96588
-Node: Custom Completers\7f102191
-Node: How Completing Works\7f102906
-Node: Completion Functions\7f106209
-Node: Completion Variables\7f109764
-Node: A Short Completion Example\7f120386
-Node: Copying This Manual\7f132939
-Node: GNU Free Documentation License\7f133179
-Node: Concept Index\7f155573
-Node: Function and Variable Index\7f156522
+Node: Top\7f1296
+Node: Command Line Editing\7f1937
+Node: Introduction and Notation\7f2588
+Node: Readline Interaction\7f4206
+Node: Readline Bare Essentials\7f5393
+Node: Readline Movement Commands\7f7174
+Node: Readline Killing Commands\7f8131
+Node: Readline Arguments\7f10041
+Node: Searching\7f11077
+Node: Readline Init File\7f13220
+Node: Readline Init File Syntax\7f14281
+Node: Conditional Init Constructs\7f25644
+Node: Sample Init File\7f28169
+Node: Bindable Readline Commands\7f31353
+Node: Commands For Moving\7f32403
+Node: Commands For History\7f33253
+Node: Commands For Text\7f36112
+Node: Commands For Killing\7f38827
+Node: Numeric Arguments\7f40958
+Node: Commands For Completion\7f42086
+Node: Keyboard Macros\7f43619
+Node: Miscellaneous Commands\7f44179
+Node: Readline vi Mode\7f47529
+Node: Programming with GNU Readline\7f49347
+Node: Basic Behavior\7f50321
+Node: Custom Functions\7f53751
+Node: Readline Typedefs\7f55229
+Node: Function Writing\7f56859
+Node: Readline Variables\7f58067
+Node: Readline Convenience Functions\7f67490
+Node: Function Naming\7f68472
+Node: Keymaps\7f69724
+Node: Binding Keys\7f71480
+Node: Associating Function Names and Bindings\7f76002
+Node: Allowing Undoing\7f78247
+Node: Redisplay\7f80782
+Node: Modifying Text\7f84216
+Node: Character Input\7f85445
+Node: Terminal Management\7f87225
+Node: Utility Functions\7f88644
+Node: Miscellaneous Functions\7f90983
+Node: Alternate Interface\7f93047
+Node: A Readline Example\7f95192
+Node: Readline Signal Handling\7f97129
+Node: Custom Completers\7f102732
+Node: How Completing Works\7f103447
+Node: Completion Functions\7f106750
+Node: Completion Variables\7f110305
+Node: A Short Completion Example\7f122375
+Node: Copying This Manual\7f134928
+Node: GNU Free Documentation License\7f135168
+Node: Concept Index\7f157562
+Node: Function and Variable Index\7f158511
 \1f
 End Tag Table
index d371838..a6b031a 100644 (file)
@@ -1,14 +1,14 @@
 %!PS-Adobe-2.0
 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
 %%Title: readline.dvi
-%%Pages: 72
+%%Pages: 74
 %%PageOrder: Ascend
 %%BoundingBox: 0 0 596 842
 %%EndComments
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 300 -o readline.ps readline.dvi
 %DVIPSParameters: dpi=300, compressed
-%DVIPSSource:  TeX output 2003.09.22:0904
+%DVIPSSource:  TeX output 2004.07.27:0931
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -797,8 +797,8 @@ FC000F006C6C131E6C6C5BEC803890387FC078013F5B90381FE1E090380FF3C0ECFF806D
 306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0
 D900FEC7FC272B7DA02E>13 D E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fr cmbx12 14.4 53
-/Fr 53 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
+%DVIPSBitmapFont: Fr cmbx12 14.4 54
+/Fr 54 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
 0E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
 D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
 D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2
@@ -814,64 +814,66 @@ C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218
 22>I<EB07F8EB3FFE90B5FC3901FC07803903F00FC03807C01FEA0F80121F130048EB0F
 8091C7FC127EA3EAFE02EB1FF0EB3FFCEB603EEB801F00FF14809038000FC0A24814E0A4
 127EA4123E003F14C07EEC1F80D80F8013003807E07E6CB45A6C5B38003FC01B277DA622
->I<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F1480
-A249486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F08049130300
-0181491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F800
-1FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EAFE
-00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1FF8
-B712E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF00F
-9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290C9
-FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F090397F
-F007C0011FB512800107EBFE009038007FF028297CA831>I<B612FCEDFF8016E03A03FC
-001FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0A2
-17C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0A3
-3903FC001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3EB
-FC0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A32729
-7EA82C>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A3160014
-03A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387FE0
-03903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F4848804848804848
-80485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E6C
-7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5D8
-F00FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835>
-I<B512F0A33803FC00B3B1B512F0A314297EA819>I<B500F0EBFFFEA3D803FCC7EA0F00
-161E5E5E16E0ED03C04B5A4BC7FC151E5D15F04A5A4A5A1407140F4A7EEC7FF04A7EEBFD
-E79038FFC3FCEC83FE9038FE01FF497E6F7E826F7E151F6F7E8215076F7E6F7E8281EE7F
-80B539F00FFFFEA32F297EA835>75 D<B512FCA3D803FCC8FCB3A3ED01C0A415031680A2
-1507A2150FA2151F157F913801FF00B7FCA322297EA828>I<D8FFFE92383FFF80A26D5D
-0003EFE000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D983F8
-130EA2D981FC131CA3D980FE1338A2027F1370A291383F80E0A391381FC1C0A291380FE3
-80A2913807F700A3EC03FEA26E5AA26E5AD8FFFE0203B51280A2157039297DA840>I<D8
-FFFCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB87FCEB83FEEB81FF01801380
-147F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E1381ED7FC1ED3FE1ED1FF115
-0F16F9ED07FDED03FF8181167FA2163F161F160F1607D8FFFE14031601A230297EA835>
-I<ECFFC0010F13FC90383F807F9039FE001FC0D801F8EB07E048486D7E48486D7E000F81
-48486D7EA24848147FA2007F168090C8123FA34816C0AA6C16806D147FA2003F1600A26C
-6C14FEA26C6C495A6C6C495A6C6C495A6C6C495A6C6C495A90263FC0FFC7FC90380FFFFC
-010013C02A297CA833>I<B612F815FF16C03A03FC003FE0ED07F0ED03F816FC150116FE
-A716FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B512F0A327297EA82E>I<
-ECFFC0010F13FC90383FC0FF9039FE001FC048486D7ED803F0EB03F000078148486D7E48
-486D7EA24848147FA2007F1680A290C8123FA24816C0AA6C16806D147FA2003F1600A26C
-6C14FE143E3A0FE07F81FC00079038C1C1F83A03F18063F0D801F9EB67E0D800FFEB3FC0
-90263FC07FC7FC90380FFFFC01004913C0EC003C811601ED1F8316FF6F1380A21700816F
-5A6F5A6F5A2A357CA833>I<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A6
-5E4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170E
-A21503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>I<9038FF80600003EBF0E0
-000F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7F
-FCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E0
-1303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA8
-25>I<007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A24815
-01A5C791C7FCB3A490B612C0A32A287EA72F>I<B500F0EBFFFEA3D803FCC7EA0380B3AA
-0001ED07007F0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7
-FC2F297EA834>I<B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B
-017F140E80013F5CA26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE03
-01015CECFF076D91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA230
-297FA833>I<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E
-13016C604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F16
-0E17F09126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703FC7003
-5BA2913AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E8002
-1E141EA242297FA845>I<B500F0EB3FFFA3D803FEC7EA03C06C6C15806C6DEB07005E6D
-6C130E6E5B013F143C6D6C13386E5B010F14F06D6C5B6E485A01031303D901FF5B0387C7
-FC6D138FEC7FCE15FC143F6E5A5D140FAE0103B512C0A330297FA833>89
+>I<1238123E003FB512F0A34814E015C0158015003870000EA25C485B5C5CC6485AA249
+5A130791C7FC5B5B131E133EA2137E137CA213FCA41201A76C5A13701C297CA822>I<EC
+0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F1480A24948
+6C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F08049130300018149
+1301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F8001FE0ED
+0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EAFE00EDFF
+C09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1FF8B712E0
+16C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF00F9F9039
+FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290C9FC5AA9
+7E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F090397FF007C0
+011FB512800107EBFE009038007FF028297CA831>I<B612FCEDFF8016E03A03FC001FF8
+ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0A217C016
+1FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0A33903FC
+001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3EBFC0F14
+03A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327297EA82C
+>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A316001403A214
+0F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387FE0039039
+07FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F484880484880484880485A
+82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E6C7E6C7E
+6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5D8F00FB5
+FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835>I<B512
+F0A33803FC00B3B1B512F0A314297EA819>I<B500F0EBFFFEA3D803FCC7EA0F00161E5E
+5E16E0ED03C04B5A4BC7FC151E5D15F04A5A4A5A1407140F4A7EEC7FF04A7EEBFDE79038
+FFC3FCEC83FE9038FE01FF497E6F7E826F7E151F6F7E8215076F7E6F7E8281EE7F80B539
+F00FFFFEA32F297EA835>75 D<B512FCA3D803FCC8FCB3A3ED01C0A415031680A21507A2
+150FA2151F157F913801FF00B7FCA322297EA828>I<D8FFFE92383FFF80A26D5D0003EF
+E000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D983F8130EA2
+D981FC131CA3D980FE1338A2027F1370A291383F80E0A391381FC1C0A291380FE380A291
+3807F700A3EC03FEA26E5AA26E5AD8FFFE0203B51280A2157039297DA840>I<D8FFFCEC
+7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB87FCEB83FEEB81FF01801380147F15
+C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E1381ED7FC1ED3FE1ED1FF1150F16F9
+ED07FDED03FF8181167FA2163F161F160F1607D8FFFE14031601A230297EA835>I<ECFF
+C0010F13FC90383F807F9039FE001FC0D801F8EB07E048486D7E48486D7E000F8148486D
+7EA24848147FA2007F168090C8123FA34816C0AA6C16806D147FA2003F1600A26C6C14FE
+A26C6C495A6C6C495A6C6C495A6C6C495A6C6C495A90263FC0FFC7FC90380FFFFC010013
+C02A297CA833>I<B612F815FF16C03A03FC003FE0ED07F0ED03F816FC150116FEA716FC
+150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B512F0A327297EA82E>I<ECFFC0
+010F13FC90383FC0FF9039FE001FC048486D7ED803F0EB03F000078148486D7E48486D7E
+A24848147FA2007F1680A290C8123FA24816C0AA6C16806D147FA2003F1600A26C6C14FE
+143E3A0FE07F81FC00079038C1C1F83A03F18063F0D801F9EB67E0D800FFEB3FC090263F
+C07FC7FC90380FFFFC01004913C0EC003C811601ED1F8316FF6F1380A21700816F5A6F5A
+6F5A2A357CA833>I<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A65E4B5A
+1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170EA21503
+923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>I<9038FF80600003EBF0E0000F13
+F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7FFCEBFF
+E06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E01303A4
+6C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA825>I<
+007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A2481501A5C7
+91C7FCB3A490B612C0A32A287EA72F>I<B500F0EBFFFEA3D803FCC7EA0380B3AA0001ED
+07007F0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7FC2F29
+7EA834>I<B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B017F14
+0E80013F5CA26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE0301015C
+ECFF076D91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA230297FA8
+33>I<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E13016C
+604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F160E17F0
+9126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703FC70035BA291
+3AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E80021E141E
+A242297FA845>I<B500F0EB3FFFA3D803FEC7EA03C06C6C15806C6DEB07005E6D6C130E
+6E5B013F143C6D6C13386E5B010F14F06D6C5B6E485A01031303D901FF5B0387C7FC6D13
+8FEC7FCE15FC143F6E5A5D140FAE0103B512C0A330297FA833>89
 D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA
 0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B7E9A21
 >97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F09038F001F89038E0
@@ -1219,25 +1221,25 @@ TeXDict begin
 %%Page: 1 1
 1 0 bop 75 659 a Fu(GNU)33 b(Readline)h(Library)p 75
 709 1800 17 v 936 757 a Ft(Edition)17 b(5.0,)c(for)i
-Fs(Readline)f(Library)g Ft(V)l(ersion)i(5.0.)1559 811
-y(Septem)o(b)q(er)g(2003)75 2467 y Fr(Chet)22 b(Ramey)-6
-b(,)23 b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
+Fs(Readline)f(Library)g Ft(V)l(ersion)i(5.0.)1609 811
+y(Jan)o(uary)f(2004)75 2467 y Fr(Chet)22 b(Ramey)-6 b(,)23
+b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
 2534 y(Brian)h(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
 b(oundation)p 75 2570 1800 9 v eop
 %%Page: 2 2
-2 1 bop 75 1512 a Ft(This)11 b(man)o(ual)g(describ)q(es)h(the)f(GNU)g
-(Readline)h(Library)f(\(v)o(ersion)f(5.0,)h(19)f(Septem)o(b)q(er)h
-(2003\),)f(a)g(library)75 1567 y(whic)o(h)20 b(aids)h(in)f(the)g
-(consistency)g(of)f(user)h(in)o(terface)g(across)f(discrete)h(programs)
-f(whic)o(h)h(pro)o(vide)g(a)75 1621 y(command)15 b(line)i(in)o
-(terface.)75 1689 y(Cop)o(yrigh)o(t)301 1688 y(c)289
-1689 y Fq(\015)d Ft(1988-2003)f(F)l(ree)i(Soft)o(w)o(are)f(F)l
-(oundation,)h(Inc.)75 1756 y(P)o(ermission)i(is)f(gran)o(ted)g(to)f
-(mak)o(e)h(and)g(distribute)i(v)o(erbatim)d(copies)i(of)f(this)h(man)o
-(ual)f(pro)o(vided)h(the)75 1811 y(cop)o(yrigh)o(t)e(notice)h(and)f
-(this)h(p)q(ermission)g(notice)g(are)f(preserv)o(ed)h(on)f(all)h
-(copies.)195 1878 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)l(,)
-h(distribute)h(and/or)e(mo)q(dify)h(this)g(do)q(cumen)o(t)g(under)195
+2 1 bop 75 1512 a Ft(This)15 b(man)o(ual)g(describ)q(es)h(the)f(GNU)f
+(Readline)i(Library)g(\(v)o(ersion)e(5.0,)f(28)i(Jan)o(uary)f(2004\),)f
+(a)h(library)75 1567 y(whic)o(h)20 b(aids)h(in)f(the)g(consistency)g
+(of)f(user)h(in)o(terface)g(across)f(discrete)h(programs)f(whic)o(h)h
+(pro)o(vide)g(a)75 1621 y(command)15 b(line)i(in)o(terface.)75
+1689 y(Cop)o(yrigh)o(t)301 1688 y(c)289 1689 y Fq(\015)d
+Ft(1988-2004)f(F)l(ree)i(Soft)o(w)o(are)f(F)l(oundation,)h(Inc.)75
+1756 y(P)o(ermission)i(is)f(gran)o(ted)g(to)f(mak)o(e)h(and)g
+(distribute)i(v)o(erbatim)d(copies)i(of)f(this)h(man)o(ual)f(pro)o
+(vided)h(the)75 1811 y(cop)o(yrigh)o(t)e(notice)h(and)f(this)h(p)q
+(ermission)g(notice)g(are)f(preserv)o(ed)h(on)f(all)h(copies.)195
+1878 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)l(,)h(distribute)
+h(and/or)e(mo)q(dify)h(this)g(do)q(cumen)o(t)g(under)195
 1933 y(the)h(terms)f(of)h(the)g(GNU)g(F)l(ree)g(Do)q(cumen)o(tation)g
 (License,)i(V)l(ersion)f(1.1)e(or)g(an)o(y)h(later)195
 1988 y(v)o(ersion)14 b(published)i(b)o(y)e(the)g(F)l(ree)f(Soft)o(w)o
@@ -1388,20 +1390,20 @@ Fn(.)c(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
 (.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Ft(43)374 315
 y(2.6.4)44 b(A)15 b(Short)g(Completion)h(Example)5 b
 Fn(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)20 b Ft(46)75 437 y Fr(App)r(endix)k(A)50 b(Cop)n(ying)23
+(.)f(.)20 b Ft(47)75 437 y Fr(App)r(endix)k(A)50 b(Cop)n(ying)23
 b(This)g(Man)n(ual)15 b Fo(.)c(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)37
-b Fr(55)224 505 y Ft(A.1)45 b(GNU)15 b(F)l(ree)h(Do)q(cumen)o(tation)f
+b Fr(57)224 505 y Ft(A.1)45 b(GNU)15 b(F)l(ree)h(Do)q(cumen)o(tation)f
 (License)g Fn(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)28 b Ft(55)374 560 y(A.1.1)44
+(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)28 b Ft(57)374 560 y(A.1.1)44
 b(ADDENDUM:)14 b(Ho)o(w)g(to)h(use)h(this)f(License)i(for)e(y)o(our)465
 615 y(do)q(cumen)o(ts)f Fn(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
 h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)29 b Ft(61)75
+(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)29 b Ft(63)75
 736 y Fr(Concept)22 b(Index)10 b Fo(.)i(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)33 b Fr(63)75 871 y(F)-6 b(unction)25
+g(.)g(.)h(.)f(.)33 b Fr(65)75 871 y(F)-6 b(unction)25
 b(and)d(V)-6 b(ariable)24 b(Index)9 b Fo(.)i(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)32 b Fr(65)p
+h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)32 b Fr(67)p
 eop
 %%Page: 1 5
 1 4 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
@@ -2309,114 +2311,119 @@ b(With)11 b(an)g(explicit)i(non-p)q(ositiv)o(e)f(n)o(umeric)g(argumen)o
 Fs(emacs)e Ft(mo)q(de;)h Fs(vi)g Ft(mo)q(de)h(do)q(es)g(o)o(v)o
 (erwrite)315 204 y(di\013eren)o(tly)l(.)21 b(Eac)o(h)15
 b(call)h(to)f Fs(readline\(\))f Ft(starts)f(in)k(insert)e(mo)q(de.)315
-271 y(In)g(o)o(v)o(erwrite)f(mo)q(de,)h(c)o(haracters)f(b)q(ound)h(to)f
+269 y(In)g(o)o(v)o(erwrite)f(mo)q(de,)h(c)o(haracters)f(b)q(ound)h(to)f
 Fs(self-insert)f Ft(replace)j(the)e(text)h(at)e(p)q(oin)o(t)315
-326 y(rather)20 b(than)h(pushing)h(the)f(text)f(to)g(the)h(righ)o(t.)36
-b(Characters)20 b(b)q(ound)i(to)e Fs(backward-)315 381
+324 y(rather)20 b(than)h(pushing)h(the)f(text)f(to)g(the)h(righ)o(t.)36
+b(Characters)20 b(b)q(ound)i(to)e Fs(backward-)315 379
 y(delete-char)14 b Ft(replace)i(the)f(c)o(haracter)g(b)q(efore)g(p)q
-(oin)o(t)h(with)f(a)g(space.)315 448 y(By)g(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 559 y Fh(1.4.4)30 b(Killing)20
-b(And)h(Y)-5 b(anking)75 680 y Fs(kill-line)14 b(\(C-k\))315
-735 y Ft(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
-(the)g(line.)75 814 y Fs(backward-kill-line)e(\(C-x)h(Rubout\))315
-869 y Ft(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
-(line.)75 948 y Fs(unix-line-discard)e(\(C-u\))315 1003
+(oin)o(t)h(with)f(a)g(space.)315 444 y(By)g(default,)h(this)f(command)g
+(is)h(un)o(b)q(ound.)75 550 y Fh(1.4.4)30 b(Killing)20
+b(And)h(Y)-5 b(anking)75 669 y Fs(kill-line)14 b(\(C-k\))315
+724 y Ft(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
+(the)g(line.)75 800 y Fs(backward-kill-line)e(\(C-x)h(Rubout\))315
+854 y Ft(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
+(line.)75 930 y Fs(unix-line-discard)e(\(C-u\))315 985
 y Ft(Kill)k(bac)o(kw)o(ard)e(from)f(the)i(cursor)e(to)h(the)g(b)q
-(eginning)j(of)c(the)i(curren)o(t)f(line.)75 1082 y Fs(kill-whole-line)
-e(\(\))315 1137 y Ft(Kill)20 b(all)g(c)o(haracters)d(on)h(the)h(curren)
+(eginning)j(of)c(the)i(curren)o(t)f(line.)75 1060 y Fs(kill-whole-line)
+e(\(\))315 1115 y Ft(Kill)20 b(all)g(c)o(haracters)d(on)h(the)h(curren)
 o(t)f(line,)i(no)e(matter)g(where)g(p)q(oin)o(t)h(is.)29
-b(By)19 b(default,)315 1192 y(this)d(is)f(un)o(b)q(ound.)75
-1271 y Fs(kill-word)f(\(M-d\))315 1325 y Ft(Kill)j(from)d(p)q(oin)o(t)h
+b(By)19 b(default,)315 1170 y(this)d(is)f(un)o(b)q(ound.)75
+1245 y Fs(kill-word)f(\(M-d\))315 1300 y Ft(Kill)j(from)d(p)q(oin)o(t)h
 (to)f(the)h(end)g(of)f(the)h(curren)o(t)g(w)o(ord,)e(or)i(if)g(b)q(et)o
-(w)o(een)g(w)o(ords,)e(to)i(the)f(end)315 1380 y(of)h(the)g(next)g(w)o
+(w)o(een)g(w)o(ords,)e(to)i(the)f(end)315 1355 y(of)h(the)g(next)g(w)o
 (ord.)20 b(W)l(ord)14 b(b)q(oundaries)j(are)e(the)g(same)g(as)g
-Fs(forward-word)p Ft(.)75 1459 y Fs(backward-kill-word)e(\(M-)592
-1457 y Fk(h)p 603 1431 73 2 v 603 1459 a Fj(DEL)p 603
-1467 V 674 1457 a Fk(i)689 1459 y Fs(\))315 1514 y Ft(Kill)k(the)d(w)o
+Fs(forward-word)p Ft(.)75 1430 y Fs(backward-kill-word)e(\(M-)592
+1428 y Fk(h)p 603 1402 73 2 v 603 1430 a Fj(DEL)p 603
+1438 V 674 1428 a Fk(i)689 1430 y Fs(\))315 1485 y Ft(Kill)k(the)d(w)o
 (ord)g(b)q(ehind)i(p)q(oin)o(t.)21 b(W)l(ord)14 b(b)q(oundaries)h(are)f
-(the)h(same)f(as)g Fs(backward-word)p Ft(.)75 1593 y
-Fs(unix-word-rubout)f(\(C-w\))315 1648 y Ft(Kill)18 b(the)e(w)o(ord)f
+(the)h(same)f(as)g Fs(backward-word)p Ft(.)75 1560 y
+Fs(unix-word-rubout)f(\(C-w\))315 1615 y Ft(Kill)18 b(the)e(w)o(ord)f
 (b)q(ehind)j(p)q(oin)o(t,)e(using)h(white)f(space)g(as)g(a)f(w)o(ord)g
-(b)q(oundary)l(.)23 b(The)16 b(killed)315 1703 y(text)f(is)g(sa)o(v)o
-(ed)g(on)g(the)h(kill-ring.)75 1782 y Fs(delete-horizontal-space)c
-(\(\))315 1836 y Ft(Delete)k(all)g(spaces)f(and)h(tabs)e(around)i(p)q
-(oin)o(t.)k(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75
-1915 y Fs(kill-region)e(\(\))315 1970 y Ft(Kill)j(the)f(text)e(in)i
-(the)g(curren)o(t)f(region.)20 b(By)15 b(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 2049 y Fs(copy-region-as-kill)d(\(\))315
-2104 y Ft(Cop)o(y)j(the)i(text)e(in)i(the)f(region)g(to)g(the)g(kill)h
-(bu\013er,)f(so)g(it)g(can)g(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)g(a)o(w)o
-(a)o(y)l(.)315 2159 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q
-(ound.)75 2238 y Fs(copy-backward-word)d(\(\))315 2293
-y Ft(Cop)o(y)19 b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)h(to)e(the)i
-(kill)h(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)h(are)f(the)315
-2348 y(same)c(as)g Fs(backward-word)p Ft(.)j(By)d(default,)g(this)h
-(command)f(is)h(un)o(b)q(ound.)75 2427 y Fs(copy-forward-word)d(\(\))
-315 2481 y Ft(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)j(p)q(oin)o(t)f
+(b)q(oundary)l(.)23 b(The)16 b(killed)315 1670 y(text)f(is)g(sa)o(v)o
+(ed)g(on)g(the)h(kill-ring.)75 1745 y Fs(unix-filename-rubout)c(\(\))
+315 1800 y Ft(Kill)20 b(the)f(w)o(ord)e(b)q(ehind)j(p)q(oin)o(t,)f
+(using)g(white)g(space)f(and)h(the)f(slash)h(c)o(haracter)e(as)h(the)
+315 1855 y(w)o(ord)d(b)q(oundaries.)21 b(The)15 b(killed)j(text)c(is)i
+(sa)o(v)o(ed)f(on)g(the)g(kill-ring.)75 1930 y Fs
+(delete-horizontal-space)d(\(\))315 1985 y Ft(Delete)k(all)g(spaces)f
+(and)h(tabs)e(around)i(p)q(oin)o(t.)k(By)15 b(default,)h(this)f(is)h
+(un)o(b)q(ound.)75 2060 y Fs(kill-region)e(\(\))315 2115
+y Ft(Kill)j(the)f(text)e(in)i(the)g(curren)o(t)f(region.)20
+b(By)15 b(default,)h(this)f(command)g(is)h(un)o(b)q(ound.)75
+2190 y Fs(copy-region-as-kill)d(\(\))315 2245 y Ft(Cop)o(y)j(the)i
+(text)e(in)i(the)f(region)g(to)g(the)g(kill)h(bu\013er,)f(so)g(it)g
+(can)g(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)g(a)o(w)o(a)o(y)l(.)315
+2300 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q(ound.)75
+2375 y Fs(copy-backward-word)d(\(\))315 2430 y Ft(Cop)o(y)19
+b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)h(to)e(the)i(kill)h
+(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)h(are)f(the)315
+2485 y(same)c(as)g Fs(backward-word)p Ft(.)j(By)d(default,)g(this)h
+(command)f(is)h(un)o(b)q(ound.)75 2560 y Fs(copy-forward-word)d(\(\))
+315 2615 y Ft(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)j(p)q(oin)o(t)f
 (to)f(the)g(kill)j(bu\013er.)i(The)c(w)o(ord)f(b)q(oundaries)i(are)e
-(the)315 2536 y(same)g(as)g Fs(forward-word)p Ft(.)j(By)d(default,)h
-(this)f(command)g(is)h(un)o(b)q(ound.)75 2615 y Fs(yank)f(\(C-y\))315
-2670 y Ft(Y)l(ank)g(the)h(top)f(of)f(the)i(kill)h(ring)e(in)o(to)g(the)
-h(bu\013er)f(at)f(p)q(oin)o(t.)p eop
+(the)315 2670 y(same)g(as)g Fs(forward-word)p Ft(.)j(By)d(default,)h
+(this)f(command)g(is)h(un)o(b)q(ound.)p eop
 %%Page: 17 21
 17 20 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(17)75 149 y Fs(yank-pop)14 b(\(M-y\))315 204 y Ft(Rotate)i(the)h
-(kill-ring,)j(and)d(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17
-b(can)h(only)g(do)f(this)h(if)f(the)h(prior)315 259 y(command)d(is)h
-Fs(yank)e Ft(or)h Fs(yank-pop)p Ft(.)75 382 y Fh(1.4.5)30
-b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts)75 507 y
-Fs(digit-argument)13 b(\()p Fl(M-0)p Fs(,)i Fl(M-1)p
-Fs(,)f(...)h Fl(M--)p Fs(\))315 562 y Ft(Add)f(this)g(digit)g(to)f(the)
-h(argumen)o(t)e(already)i(accum)o(ulating,)g(or)f(start)f(a)h(new)h
-(argumen)o(t.)315 616 y Fl(M--)h Ft(starts)f(a)h(negativ)o(e)g(argumen)
-o(t.)75 702 y Fs(universal-argument)e(\(\))315 756 y
-Ft(This)g(is)h(another)e(w)o(a)o(y)g(to)g(sp)q(ecify)i(an)f(argumen)o
-(t.)18 b(If)13 b(this)g(command)g(is)g(follo)o(w)o(ed)g(b)o(y)g(one)315
-811 y(or)h(more)h(digits,)g(optionally)h(with)f(a)g(leading)h(min)o(us)
-f(sign,)g(those)g(digits)g(de\014ne)h(the)f(ar-)315 866
+b(17)75 149 y Fs(yank)15 b(\(C-y\))315 204 y Ft(Y)l(ank)g(the)h(top)f
+(of)f(the)i(kill)h(ring)e(in)o(to)g(the)h(bu\013er)f(at)f(p)q(oin)o(t.)
+75 276 y Fs(yank-pop)g(\(M-y\))315 331 y Ft(Rotate)i(the)h(kill-ring,)j
+(and)d(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f
+(this)h(if)f(the)h(prior)315 386 y(command)d(is)h Fs(yank)e
+Ft(or)h Fs(yank-pop)p Ft(.)75 486 y Fh(1.4.5)30 b(Sp)r(ecifying)20
+b(Numeric)h(Argumen)n(ts)75 604 y Fs(digit-argument)13
+b(\()p Fl(M-0)p Fs(,)i Fl(M-1)p Fs(,)f(...)h Fl(M--)p
+Fs(\))315 658 y Ft(Add)f(this)g(digit)g(to)f(the)h(argumen)o(t)e
+(already)i(accum)o(ulating,)g(or)f(start)f(a)h(new)h(argumen)o(t.)315
+713 y Fl(M--)h Ft(starts)f(a)h(negativ)o(e)g(argumen)o(t.)75
+785 y Fs(universal-argument)e(\(\))315 840 y Ft(This)g(is)h(another)e
+(w)o(a)o(y)g(to)g(sp)q(ecify)i(an)f(argumen)o(t.)18 b(If)13
+b(this)g(command)g(is)g(follo)o(w)o(ed)g(b)o(y)g(one)315
+895 y(or)h(more)h(digits,)g(optionally)h(with)f(a)g(leading)h(min)o(us)
+f(sign,)g(those)g(digits)g(de\014ne)h(the)f(ar-)315 949
 y(gumen)o(t.)k(If)c(the)g(command)f(is)h(follo)o(w)o(ed)g(b)o(y)g
-(digits,)g(executing)g Fs(universal-argument)315 921
+(digits,)g(executing)g Fs(universal-argument)315 1004
 y Ft(again)h(ends)g(the)g(n)o(umeric)h(argumen)o(t,)e(but)h(is)h
 (otherwise)f(ignored.)22 b(As)16 b(a)g(sp)q(ecial)h(case,)315
-976 y(if)g(this)g(command)f(is)h(immediately)h(follo)o(w)o(ed)f(b)o(y)f
-(a)g(c)o(haracter)g(that)g(is)h(neither)g(a)f(digit)315
-1030 y(or)d(min)o(us)i(sign,)f(the)g(argumen)o(t)g(coun)o(t)f(for)h
+1059 y(if)g(this)g(command)f(is)h(immediately)h(follo)o(w)o(ed)f(b)o(y)
+f(a)g(c)o(haracter)g(that)g(is)h(neither)g(a)f(digit)315
+1114 y(or)d(min)o(us)i(sign,)f(the)g(argumen)o(t)g(coun)o(t)f(for)h
 (the)g(next)g(command)g(is)g(m)o(ultiplied)j(b)o(y)d(four.)315
-1085 y(The)19 b(argumen)o(t)f(coun)o(t)g(is)h(initially)j(one,)d(so)f
+1169 y(The)19 b(argumen)o(t)f(coun)o(t)g(is)h(initially)j(one,)d(so)f
 (executing)i(this)f(function)h(the)e(\014rst)h(time)315
-1140 y(mak)o(es)c(the)h(argumen)o(t)f(coun)o(t)h(four,)f(a)h(second)g
+1223 y(mak)o(es)c(the)h(argumen)o(t)f(coun)o(t)h(four,)f(a)h(second)g
 (time)g(mak)o(es)g(the)g(argumen)o(t)f(coun)o(t)g(six-)315
-1195 y(teen,)g(and)g(so)g(on.)20 b(By)15 b(default,)h(this)f(is)h(not)f
-(b)q(ound)h(to)f(a)g(k)o(ey)l(.)75 1318 y Fh(1.4.6)30
+1278 y(teen,)g(and)g(so)g(on.)20 b(By)15 b(default,)h(this)f(is)h(not)f
+(b)q(ound)h(to)f(a)g(k)o(ey)l(.)75 1378 y Fh(1.4.6)30
 b(Letting)20 b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5
-b(ou)75 1443 y Fs(complete)14 b(\()305 1441 y Fk(h)p
-317 1414 74 2 v 317 1443 a Fj(T)m(AB)p 317 1450 V 389
-1441 a Fk(i)404 1443 y Fs(\))315 1497 y Ft(A)o(ttempt)c(to)h(p)q
+b(ou)75 1496 y Fs(complete)14 b(\()305 1494 y Fk(h)p
+317 1468 74 2 v 317 1496 a Fj(T)m(AB)p 317 1504 V 389
+1494 a Fk(i)404 1496 y Fs(\))315 1551 y Ft(A)o(ttempt)c(to)h(p)q
 (erform)g(completion)i(on)e(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)19
-b(The)11 b(actual)h(completion)315 1552 y(p)q(erformed)j(is)h
+b(The)11 b(actual)h(completion)315 1606 y(p)q(erformed)j(is)h
 (application-sp)q(eci\014)q(c.)23 b(The)15 b(default)h(is)g(\014lename)
-g(completion.)75 1637 y Fs(possible-completions)c(\(M-?\))315
-1692 y Ft(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b)
-q(efore)h(p)q(oin)o(t.)75 1777 y Fs(insert-completions)d(\(M-*\))315
-1832 y Ft(Insert)j(all)g(completions)g(of)f(the)g(text)g(b)q(efore)h(p)
+g(completion.)75 1678 y Fs(possible-completions)c(\(M-?\))315
+1732 y Ft(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b)
+q(efore)h(p)q(oin)o(t.)75 1804 y Fs(insert-completions)d(\(M-*\))315
+1859 y Ft(Insert)j(all)g(completions)g(of)f(the)g(text)g(b)q(efore)h(p)
 q(oin)o(t)f(that)g(w)o(ould)h(ha)o(v)o(e)f(b)q(een)h(generated)315
-1887 y(b)o(y)f Fs(possible-completions)p Ft(.)75 1972
-y Fs(menu-complete)e(\(\))315 2027 y Ft(Similar)g(to)f
+1914 y(b)o(y)f Fs(possible-completions)p Ft(.)75 1985
+y Fs(menu-complete)e(\(\))315 2040 y Ft(Similar)g(to)f
 Fs(complete)p Ft(,)f(but)h(replaces)h(the)f(w)o(ord)f(to)g(b)q(e)i
-(completed)f(with)h(a)e(single)j(matc)o(h)315 2082 y(from)k(the)h(list)
+(completed)f(with)h(a)e(single)j(matc)o(h)315 2095 y(from)k(the)h(list)
 h(of)e(p)q(ossible)j(completions.)32 b(Rep)q(eated)19
-b(execution)h(of)f Fs(menu-complete)315 2136 y Ft(steps)h(through)g
+b(execution)h(of)f Fs(menu-complete)315 2150 y Ft(steps)h(through)g
 (the)g(list)h(of)f(p)q(ossible)i(completions,)g(inserting)f(eac)o(h)f
-(matc)o(h)f(in)i(turn.)315 2191 y(A)o(t)d(the)g(end)h(of)f(the)h(list)g
+(matc)o(h)f(in)i(turn.)315 2205 y(A)o(t)d(the)g(end)h(of)f(the)h(list)g
 (of)f(completions,)i(the)e(b)q(ell)j(is)d(rung)h(\(sub)s(ject)f(to)f
-(the)i(setting)315 2246 y(of)f Fs(bell-style)p Ft(\))e(and)i(the)g
+(the)i(setting)315 2259 y(of)f Fs(bell-style)p Ft(\))e(and)i(the)g
 (original)h(text)f(is)g(restored.)28 b(An)19 b(argumen)o(t)e(of)g
-Fi(n)i Ft(mo)o(v)o(es)e Fi(n)315 2301 y Ft(p)q(ositions)h(forw)o(ard)e
+Fi(n)i Ft(mo)o(v)o(es)e Fi(n)315 2314 y Ft(p)q(ositions)h(forw)o(ard)e
 (in)j(the)e(list)h(of)f(matc)o(hes;)h(a)f(negativ)o(e)g(argumen)o(t)g
-(ma)o(y)g(b)q(e)h(used)g(to)315 2356 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h
+(ma)o(y)g(b)q(e)h(used)g(to)315 2369 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h
 (through)g(the)g(list.)32 b(This)20 b(command)f(is)h(in)o(tended)g(to)f
-(b)q(e)h(b)q(ound)g(to)315 2408 y Fk(h)p 327 2382 V 327
-2410 a Fj(T)m(AB)p 327 2418 V 399 2408 a Fk(i)414 2410
+(b)q(e)h(b)q(ound)g(to)315 2422 y Fk(h)p 327 2396 V 327
+2424 a Fj(T)m(AB)p 327 2431 V 399 2422 a Fk(i)414 2424
 y Ft(,)15 b(but)g(is)h(un)o(b)q(ound)g(b)o(y)f(default.)75
 2496 y Fs(delete-char-or-list)e(\(\))315 2550 y Ft(Deletes)h(the)f(c)o
 (haracter)g(under)h(the)g(cursor)f(if)h(not)f(at)g(the)g(b)q(eginning)j
@@ -3387,302 +3394,312 @@ b Ff(rl)p 216 149 18 3 v 25 w(forced)p 395 149 V 25 w(up)r(date)p
 594 149 V 24 w(displa)n(y)25 b Fe(\()p Fs(void)p Fe(\))195
 204 y Ft(F)l(orce)20 b(the)g(line)h(to)e(b)q(e)i(up)q(dated)f(and)g
 (redispla)o(y)o(ed,)i(whether)e(or)g(not)f(Readline)i(thinks)g(the)195
-259 y(screen)16 b(displa)o(y)g(is)g(correct.)1675 358
-y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 358 V
-25 w(on)p 302 358 V 25 w(new)p 426 358 V 26 w(line)k
-Fe(\()p Fs(void)p Fe(\))195 412 y Ft(T)l(ell)16 b(the)f(up)q(date)h
+259 y(screen)16 b(displa)o(y)g(is)g(correct.)1675 352
+y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 352 V
+25 w(on)p 302 352 V 25 w(new)p 426 352 V 26 w(line)k
+Fe(\()p Fs(void)p Fe(\))195 407 y Ft(T)l(ell)16 b(the)f(up)q(date)h
 (functions)g(that)e(w)o(e)g(ha)o(v)o(e)h(mo)o(v)o(ed)f(on)o(to)g(a)h
-(new)g(\(empt)o(y\))f(line,)i(usually)h(after)195 467
-y(ouputting)f(a)e(newline.)1675 566 y([F)l(unction])-1800
-b Fg(int)20 b Ff(rl)p 216 566 V 25 w(on)p 302 566 V 25
-w(new)p 426 566 V 26 w(line)p 540 566 V 27 w(with)p 677
-566 V 26 w(prompt)h Fe(\()p Fs(void)p Fe(\))195 621 y
+(new)g(\(empt)o(y\))f(line,)i(usually)h(after)195 462
+y(ouputting)f(a)e(newline.)1675 555 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 555 V 25 w(on)p 302 555 V 25
+w(new)p 426 555 V 26 w(line)p 540 555 V 27 w(with)p 677
+555 V 26 w(prompt)h Fe(\()p Fs(void)p Fe(\))195 610 y
 Ft(T)l(ell)13 b(the)g(up)q(date)f(functions)h(that)e(w)o(e)h(ha)o(v)o
 (e)g(mo)o(v)o(ed)f(on)o(to)g(a)h(new)g(line,)i(with)f
-Fi(rl)p 1553 621 14 2 v 20 w(prompt)g Ft(already)195
-675 y(displa)o(y)o(ed.)21 b(This)15 b(could)g(b)q(e)g(used)g(b)o(y)f
+Fi(rl)p 1553 610 14 2 v 20 w(prompt)g Ft(already)195
+665 y(displa)o(y)o(ed.)21 b(This)15 b(could)g(b)q(e)g(used)g(b)o(y)f
 (applications)i(that)e(w)o(an)o(t)f(to)h(output)g(the)g(prompt)g
-(string)195 730 y(themselv)o(es,)g(but)g(still)h(need)g(Readline)g(to)e
+(string)195 719 y(themselv)o(es,)g(but)g(still)h(need)g(Readline)g(to)e
 (kno)o(w)g(the)h(prompt)f(string)h(length)g(for)f(redispla)o(y)l(.)21
-b(It)195 785 y(should)16 b(b)q(e)g(used)g(after)e(setting)i
-Fi(rl)p 795 785 V 20 w(already)p 960 785 V 20 w(prompted)p
-Ft(.)1675 884 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p
-216 884 18 3 v 25 w(reset)p 362 884 V 25 w(line)p 475
-884 V 28 w(state)j Fe(\()p Fs(void)p Fe(\))195 938 y
+b(It)195 774 y(should)16 b(b)q(e)g(used)g(after)e(setting)i
+Fi(rl)p 795 774 V 20 w(already)p 960 774 V 20 w(prompted)p
+Ft(.)1675 867 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p
+216 867 18 3 v 25 w(reset)p 362 867 V 25 w(line)p 475
+867 V 28 w(state)j Fe(\()p Fs(void)p Fe(\))195 922 y
 Ft(Reset)17 b(the)g(displa)o(y)i(state)d(to)h(a)g(clean)h(state)f(and)g
 (redispla)o(y)i(the)e(curren)o(t)g(line)i(starting)e(on)g(a)195
-993 y(new)e(line.)1675 1092 y([F)l(unction])-1800 b Fg(int)20
-b Ff(rl)p 216 1092 V 25 w(crlf)j Fe(\()p Fs(void)p Fe(\))195
-1147 y Ft(Mo)o(v)o(e)14 b(the)h(cursor)g(to)g(the)g(start)f(of)h(the)g
-(next)g(screen)h(line.)1675 1245 y([F)l(unction])-1800
-b Fg(int)20 b Ff(rl)p 216 1245 V 25 w(sho)n(w)p 364 1245
-V 25 w(c)n(har)j Fe(\()p Fs(int)15 b(c)p Fe(\))195 1300
+977 y(new)e(line.)1675 1070 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 1070 V 25 w(crlf)j Fe(\()p Fs(void)p Fe(\))195
+1125 y Ft(Mo)o(v)o(e)14 b(the)h(cursor)g(to)g(the)g(start)f(of)h(the)g
+(next)g(screen)h(line.)1675 1218 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 1218 V 25 w(sho)n(w)p 364 1218
+V 25 w(c)n(har)j Fe(\()p Fs(int)15 b(c)p Fe(\))195 1273
 y Ft(Displa)o(y)i(c)o(haracter)e Fi(c)20 b Ft(on)c Fs(rl_outstream)p
 Ft(.)21 b(If)c(Readline)g(has)f(not)g(b)q(een)i(set)e(to)f(displa)o(y)j
-(meta)195 1355 y(c)o(haracters)12 b(directly)l(,)j(this)e(will)i(con)o
+(meta)195 1328 y(c)o(haracters)12 b(directly)l(,)j(this)e(will)i(con)o
 (v)o(ert)d(meta)h(c)o(haracters)f(to)g(a)h(meta-pre\014xed)g(k)o(ey)g
-(sequence.)195 1410 y(This)j(is)f(in)o(tended)i(for)e(use)g(b)o(y)g
+(sequence.)195 1382 y(This)j(is)f(in)o(tended)i(for)e(use)g(b)o(y)g
 (applications)i(whic)o(h)f(wish)g(to)f(do)g(their)g(o)o(wn)g(redispla)o
-(y)l(.)1675 1508 y([F)l(unction])-1800 b Fg(int)20 b
-Ff(rl)p 216 1508 V 25 w(message)h Fe(\()p Fs(const)14
-b(char)h(*,)g(...)o Fe(\))195 1563 y Ft(The)c(argumen)o(ts)e(are)h(a)g
+(y)l(.)1675 1475 y([F)l(unction])-1800 b Fg(int)20 b
+Ff(rl)p 216 1475 V 25 w(message)h Fe(\()p Fs(const)14
+b(char)h(*,)g(...)o Fe(\))195 1530 y Ft(The)c(argumen)o(ts)e(are)h(a)g
 (format)f(string)h(as)g(w)o(ould)h(b)q(e)g(supplied)i(to)c
-Fs(printf)p Ft(,)h(p)q(ossibly)i(con)o(taining)195 1618
+Fs(printf)p Ft(,)h(p)q(ossibly)i(con)o(taining)195 1585
 y(con)o(v)o(ersion)22 b(sp)q(eci\014cations)i(suc)o(h)f(as)e(`)p
 Fs(\045d)p Ft(',)i(and)f(an)o(y)g(additional)h(argumen)o(ts)e
-(necessary)i(to)195 1673 y(satisfy)d(the)h(con)o(v)o(ersion)g(sp)q
+(necessary)i(to)195 1640 y(satisfy)d(the)h(con)o(v)o(ersion)g(sp)q
 (eci\014cations.)38 b(The)21 b(resulting)h(string)e(is)i(displa)o(y)o
-(ed)g(in)f(the)g Fi(ec)o(ho)195 1728 y(area)p Ft(.)e(The)d(ec)o(ho)f
+(ed)g(in)f(the)g Fi(ec)o(ho)195 1695 y(area)p Ft(.)e(The)d(ec)o(ho)f
 (area)g(is)g(also)g(used)h(to)f(displa)o(y)h(n)o(umeric)g(argumen)o(ts)
-f(and)g(searc)o(h)g(strings.)1675 1826 y([F)l(unction])-1800
-b Fg(int)20 b Ff(rl)p 216 1826 V 25 w(clear)p 359 1826
-V 27 w(message)g Fe(\()p Fs(void)p Fe(\))195 1881 y Ft(Clear)15
-b(the)h(message)e(in)i(the)g(ec)o(ho)f(area.)1675 1980
-y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p 242 1980
-V 25 w(sa)n(v)n(e)p 370 1980 V 26 w(prompt)h Fe(\()p
-Fs(void)p Fe(\))195 2034 y Ft(Sa)o(v)o(e)g(the)h(lo)q(cal)g(Readline)h
+f(and)g(searc)o(h)g(strings.)1675 1788 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 1788 V 25 w(clear)p 359 1788
+V 27 w(message)g Fe(\()p Fs(void)p Fe(\))195 1843 y Ft(Clear)15
+b(the)h(message)e(in)i(the)g(ec)o(ho)f(area.)1675 1936
+y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p 242 1936
+V 25 w(sa)n(v)n(e)p 370 1936 V 26 w(prompt)h Fe(\()p
+Fs(void)p Fe(\))195 1991 y Ft(Sa)o(v)o(e)g(the)h(lo)q(cal)g(Readline)h
 (prompt)e(displa)o(y)i(state)e(in)h(preparation)f(for)g(displa)o(ying)j
-(a)d(new)195 2089 y(message)15 b(in)h(the)f(message)g(area)f(with)i
-Fs(rl_message\(\))p Ft(.)1675 2188 y([F)l(unction])-1800
-b Fg(void)20 b Ff(rl)p 242 2188 V 25 w(restore)p 441
-2188 V 25 w(prompt)g Fe(\()p Fs(void)p Fe(\))195 2243
+(a)d(new)195 2045 y(message)15 b(in)h(the)f(message)g(area)f(with)i
+Fs(rl_message\(\))p Ft(.)1675 2138 y([F)l(unction])-1800
+b Fg(void)20 b Ff(rl)p 242 2138 V 25 w(restore)p 441
+2138 V 25 w(prompt)g Fe(\()p Fs(void)p Fe(\))195 2193
 y Ft(Restore)g(the)i(lo)q(cal)g(Readline)h(prompt)e(displa)o(y)h(state)
 f(sa)o(v)o(ed)g(b)o(y)g(the)g(most)g(recen)o(t)g(call)i(to)195
-2297 y Fs(rl_save_prompt)p Ft(.)1675 2396 y([F)l(unction])-1800
-b Fg(int)20 b Ff(rl)p 216 2396 V 25 w(expand)p 421 2396
+2248 y Fs(rl_save_prompt)p Ft(.)1675 2341 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 2341 V 25 w(expand)p 421 2341
 V 25 w(prompt)h Fe(\()p Fs(char)14 b(*prompt)p Fe(\))195
-2451 y Ft(Expand)22 b(an)o(y)f(sp)q(ecial)i(c)o(haracter)e(sequences)h
+2396 y Ft(Expand)22 b(an)o(y)f(sp)q(ecial)i(c)o(haracter)e(sequences)h
 (in)g Fi(prompt)g Ft(and)g(set)f(up)h(the)f(lo)q(cal)i(Readline)195
-2506 y(prompt)17 b(redispla)o(y)i(v)m(ariables.)30 b(This)18
+2451 y(prompt)17 b(redispla)o(y)i(v)m(ariables.)30 b(This)18
 b(function)h(is)f(called)i(b)o(y)e Fs(readline\(\))p
-Ft(.)26 b(It)18 b(ma)o(y)f(also)h(b)q(e)195 2560 y(called)12
+Ft(.)26 b(It)18 b(ma)o(y)f(also)h(b)q(e)195 2506 y(called)12
 b(to)e(expand)h(the)g(primary)g(prompt)f(if)h(the)f Fs
-(rl_on_new_line_with_prompt\(\))d Ft(function)195 2615
+(rl_on_new_line_with_prompt\(\))d Ft(function)195 2560
 y(or)12 b Fs(rl_already_prompted)e Ft(v)m(ariable)k(is)g(used.)19
 b(It)13 b(returns)g(the)f(n)o(um)o(b)q(er)i(of)e(visible)j(c)o
-(haracters)195 2670 y(on)g(the)g(last)h(line)g(of)f(the)g(\(p)q
-(ossibly)i(m)o(ulti-line\))g(prompt.)p eop
+(haracters)195 2615 y(on)i(the)g(last)g(line)h(of)f(the)g(\(p)q
+(ossibly)h(m)o(ulti-line\))h(prompt.)24 b(Applications)19
+b(ma)o(y)d(indicate)j(that)195 2670 y(the)14 b(prompt)f(con)o(tains)i
+(c)o(haracters)e(that)g(tak)o(e)g(up)h(no)g(ph)o(ysical)i(screen)e
+(space)g(when)h(displa)o(y)o(ed)p eop
 %%Page: 34 38
-34 37 bop 75 -58 a Ft(34)1299 b(GNU)15 b(Readline)h(Library)1675
-149 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 149
-18 3 v 25 w(set)p 312 149 V 26 w(prompt)g Fe(\()p Fs(const)14
-b(char)h(*prompt)p Fe(\))195 204 y Ft(Mak)o(e)e(Readline)i(use)e
-Fi(prompt)h Ft(for)f(subsequen)o(t)h(redispla)o(y)l(.)21
-b(This)14 b(calls)g Fs(rl_expand_prompt\(\))195 259 y
-Ft(to)h(expand)g(the)h(prompt)e(and)i(sets)f Fs(rl_prompt)f
-Ft(to)g(the)h(result.)75 375 y Fh(2.4.7)30 b(Mo)r(difying)20
-b(T)-5 b(ext)1675 499 y Ft([F)l(unction])-1800 b Fg(int)20
-b Ff(rl)p 216 499 V 25 w(insert)p 383 499 V 26 w(text)k
-Fe(\()p Fs(const)14 b(char)g(*text)p Fe(\))195 554 y
-Ft(Insert)i Fi(text)g Ft(in)o(to)g(the)g(line)h(at)f(the)g(curren)o(t)f
-(cursor)h(p)q(osition.)22 b(Returns)16 b(the)g(n)o(um)o(b)q(er)g(of)f
-(c)o(har-)195 608 y(acters)g(inserted.)1675 704 y([F)l(unction])-1800
-b Fg(int)20 b Ff(rl)p 216 704 V 25 w(delete)p 388 704
+34 37 bop 75 -58 a Ft(34)1299 b(GNU)15 b(Readline)h(Library)195
+149 y(b)o(y)k(brac)o(k)o(eting)h(a)f(sequence)i(of)e(suc)o(h)g(c)o
+(haracters)g(with)h(the)g(sp)q(ecial)h(mark)o(ers)d Fs(RL_PROMPT_)195
+204 y(START_IGNORE)14 b Ft(and)h Fs(RL_PROMPT_END_IGNORE)e
+Ft(\(declared)j(in)g(`)p Fs(readline.h)p Ft('.)j(This)d(ma)o(y)e(b)q(e)
+195 259 y(used)i(to)e(em)o(b)q(ed)i(terminal-sp)q(eci\014c)i(escap)q(e)
+e(sequences)h(in)f(prompts.)1675 355 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 355 18 3 v 25 w(set)p 312 355
+V 26 w(prompt)g Fe(\()p Fs(const)14 b(char)h(*prompt)p
+Fe(\))195 410 y Ft(Mak)o(e)e(Readline)i(use)e Fi(prompt)h
+Ft(for)f(subsequen)o(t)h(redispla)o(y)l(.)21 b(This)14
+b(calls)g Fs(rl_expand_prompt\(\))195 465 y Ft(to)h(expand)g(the)h
+(prompt)e(and)i(sets)f Fs(rl_prompt)f Ft(to)g(the)h(result.)75
+580 y Fh(2.4.7)30 b(Mo)r(difying)20 b(T)-5 b(ext)1675
+704 y Ft([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
+704 V 25 w(insert)p 383 704 V 26 w(text)k Fe(\()p Fs(const)14
+b(char)g(*text)p Fe(\))195 759 y Ft(Insert)i Fi(text)g
+Ft(in)o(to)g(the)g(line)h(at)f(the)g(curren)o(t)f(cursor)h(p)q
+(osition.)22 b(Returns)16 b(the)g(n)o(um)o(b)q(er)g(of)f(c)o(har-)195
+814 y(acters)g(inserted.)1675 910 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 910 V 25 w(delete)p 388 910
 V 27 w(text)k Fe(\()p Fs(int)14 b(start,)h(int)g(end)p
-Fe(\))195 759 y Ft(Delete)k(the)g(text)g(b)q(et)o(w)o(een)g
+Fe(\))195 965 y Ft(Delete)k(the)g(text)g(b)q(et)o(w)o(een)g
 Fi(start)g Ft(and)g Fi(end)i Ft(in)f(the)f(curren)o(t)f(line.)33
-b(Returns)18 b(the)h(n)o(um)o(b)q(er)g(of)195 814 y(c)o(haracters)14
-b(deleted.)1675 910 y([F)l(unction])-1800 b Fg(char)20
-b(*)f Ff(rl)p 287 910 V 26 w(cop)n(y)p 427 910 V 25 w(text)24
-b Fe(\()p Fs(int)15 b(start,)f(int)h(end)p Fe(\))195
-965 y Ft(Return)g(a)g(cop)o(y)g(of)g(the)g(text)f(b)q(et)o(w)o(een)i
-Fi(start)f Ft(and)g Fi(end)j Ft(in)e(the)f(curren)o(t)g(line.)1675
-1060 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
-1060 V 25 w(kill)p 316 1060 V 28 w(text)k Fe(\()p Fs(int)15
-b(start,)f(int)h(end)p Fe(\))195 1115 y Ft(Cop)o(y)i(the)g(text)f(b)q
-(et)o(w)o(een)i Fi(start)f Ft(and)g Fi(end)i Ft(in)f(the)f(curren)o(t)g
-(line)i(to)e(the)g(kill)i(ring,)e(app)q(ending)195 1170
-y(or)f(prep)q(ending)k(to)c(the)h(last)g(kill)i(if)e(the)g(last)g
-(command)g(w)o(as)f(a)h(kill)i(command.)25 b(The)17 b(text)f(is)195
-1225 y(deleted.)26 b(If)17 b Fi(start)g Ft(is)g(less)g(than)g
-Fi(end)p Ft(,)g(the)g(text)g(is)g(app)q(ended,)h(otherwise)f(prep)q
-(ended.)27 b(If)17 b(the)195 1280 y(last)e(command)g(w)o(as)g(not)f(a)h
-(kill,)i(a)e(new)g(kill)i(ring)f(slot)f(is)h(used.)1675
-1375 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
-1375 V 25 w(push)p 360 1375 V 25 w(macro)p 540 1375 V
-23 w(input)j Fe(\()p Fs(char)15 b(*macro)p Fe(\))195
-1430 y Ft(Cause)f Fi(macro)i Ft(to)d(b)q(e)i(inserted)g(in)o(to)f(the)g
-(line,)i(as)e(if)g(it)h(had)f(b)q(een)h(in)o(v)o(ok)o(ed)g(b)o(y)f(a)g
-(k)o(ey)g(b)q(ound)h(to)195 1485 y(a)g(macro.)k(Not)c(esp)q(ecially)i
-(useful;)f(use)g Fs(rl_insert_text\(\))d Ft(instead.)75
-1601 y Fh(2.4.8)30 b(Character)21 b(Input)1675 1725 y
-Ft([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 1725
-V 25 w(read)p 351 1725 V 25 w(k)n(ey)k Fe(\()p Fs(void)p
-Fe(\))195 1780 y Ft(Return)14 b(the)h(next)g(c)o(haracter)f(a)o(v)m
-(ailable)i(from)e(Readline's)i(curren)o(t)f(input)g(stream.)k(This)d
-(han-)195 1834 y(dles)e(input)g(inserted)h(in)o(to)e(the)g(input)h
-(stream)f(via)g Fi(rl)p 1112 1834 14 2 v 21 w(p)q(ending)p
-1289 1834 V 22 w(input)i Ft(\(see)e(Section)h(2.3)f([Read-)195
-1889 y(line)21 b(V)l(ariables],)g(page)f(24\))f(and)h
+b(Returns)18 b(the)h(n)o(um)o(b)q(er)g(of)195 1019 y(c)o(haracters)14
+b(deleted.)1675 1115 y([F)l(unction])-1800 b Fg(char)20
+b(*)f Ff(rl)p 287 1115 V 26 w(cop)n(y)p 427 1115 V 25
+w(text)24 b Fe(\()p Fs(int)15 b(start,)f(int)h(end)p
+Fe(\))195 1170 y Ft(Return)g(a)g(cop)o(y)g(of)g(the)g(text)f(b)q(et)o
+(w)o(een)i Fi(start)f Ft(and)g Fi(end)j Ft(in)e(the)f(curren)o(t)g
+(line.)1675 1266 y([F)l(unction])-1800 b Fg(int)20 b
+Ff(rl)p 216 1266 V 25 w(kill)p 316 1266 V 28 w(text)k
+Fe(\()p Fs(int)15 b(start,)f(int)h(end)p Fe(\))195 1321
+y Ft(Cop)o(y)i(the)g(text)f(b)q(et)o(w)o(een)i Fi(start)f
+Ft(and)g Fi(end)i Ft(in)f(the)f(curren)o(t)g(line)i(to)e(the)g(kill)i
+(ring,)e(app)q(ending)195 1375 y(or)f(prep)q(ending)k(to)c(the)h(last)g
+(kill)i(if)e(the)g(last)g(command)g(w)o(as)f(a)h(kill)i(command.)25
+b(The)17 b(text)f(is)195 1430 y(deleted.)26 b(If)17 b
+Fi(start)g Ft(is)g(less)g(than)g Fi(end)p Ft(,)g(the)g(text)g(is)g(app)
+q(ended,)h(otherwise)f(prep)q(ended.)27 b(If)17 b(the)195
+1485 y(last)e(command)g(w)o(as)g(not)f(a)h(kill,)i(a)e(new)g(kill)i
+(ring)f(slot)f(is)h(used.)1675 1581 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 1581 V 25 w(push)p 360 1581
+V 25 w(macro)p 540 1581 V 23 w(input)j Fe(\()p Fs(char)15
+b(*macro)p Fe(\))195 1636 y Ft(Cause)f Fi(macro)i Ft(to)d(b)q(e)i
+(inserted)g(in)o(to)f(the)g(line,)i(as)e(if)g(it)h(had)f(b)q(een)h(in)o
+(v)o(ok)o(ed)g(b)o(y)f(a)g(k)o(ey)g(b)q(ound)h(to)195
+1691 y(a)g(macro.)k(Not)c(esp)q(ecially)i(useful;)f(use)g
+Fs(rl_insert_text\(\))d Ft(instead.)75 1806 y Fh(2.4.8)30
+b(Character)21 b(Input)1675 1930 y Ft([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 1930 V 25 w(read)p 351 1930
+V 25 w(k)n(ey)k Fe(\()p Fs(void)p Fe(\))195 1985 y Ft(Return)14
+b(the)h(next)g(c)o(haracter)f(a)o(v)m(ailable)i(from)e(Readline's)i
+(curren)o(t)f(input)g(stream.)k(This)d(han-)195 2040
+y(dles)e(input)g(inserted)h(in)o(to)e(the)g(input)h(stream)f(via)g
+Fi(rl)p 1112 2040 14 2 v 21 w(p)q(ending)p 1289 2040
+V 22 w(input)i Ft(\(see)e(Section)h(2.3)f([Read-)195
+2095 y(line)21 b(V)l(ariables],)g(page)f(24\))f(and)h
 Fs(rl_stuff_char\(\))p Ft(,)e(macros,)h(and)h(c)o(haracters)f(read)h
-(from)195 1944 y(the)d(k)o(eyb)q(oard.)25 b(While)19
+(from)195 2149 y(the)d(k)o(eyb)q(oard.)25 b(While)19
 b(w)o(aiting)e(for)f(input,)j(this)e(function)h(will)h(call)f(an)o(y)e
-(function)i(assigned)195 1999 y(to)d(the)g Fs(rl_event_hook)e
-Ft(v)m(ariable.)1675 2095 y([F)l(unction])-1800 b Fg(int)20
-b Ff(rl)p 216 2095 18 3 v 25 w(getc)k Fe(\()p Fs(FILE)14
-b(*stream)p Fe(\))195 2149 y Ft(Return)c(the)h(next)g(c)o(haracter)f(a)
+(function)i(assigned)195 2204 y(to)d(the)g Fs(rl_event_hook)e
+Ft(v)m(ariable.)1675 2300 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 2300 18 3 v 25 w(getc)k Fe(\()p Fs(FILE)14
+b(*stream)p Fe(\))195 2355 y Ft(Return)c(the)h(next)g(c)o(haracter)f(a)
 o(v)m(ailable)i(from)e Fi(stream)p Ft(,)g(whic)o(h)i(is)f(assumed)f(to)
-g(b)q(e)i(the)e(k)o(eyb)q(oard.)1675 2245 y([F)l(unction])-1800
-b Fg(int)20 b Ff(rl)p 216 2245 V 25 w(stu\013)p 351 2245
-V 26 w(c)n(har)i Fe(\()p Fs(int)15 b(c)p Fe(\))195 2300
+g(b)q(e)i(the)e(k)o(eyb)q(oard.)1675 2451 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 2451 V 25 w(stu\013)p 351 2451
+V 26 w(c)n(har)i Fe(\()p Fs(int)15 b(c)p Fe(\))195 2506
 y Ft(Insert)i Fi(c)i Ft(in)o(to)d(the)h(Readline)h(input)f(stream.)23
 b(It)16 b(will)i(b)q(e)f Fs(")p Ft(read)p Fs(")g Ft(b)q(efore)f
-(Readline)i(attempts)195 2355 y(to)13 b(read)g(c)o(haracters)g(from)f
+(Readline)i(attempts)195 2560 y(to)13 b(read)g(c)o(haracters)g(from)f
 (the)i(terminal)g(with)g Fs(rl_read_key\(\))p Ft(.)j(Up)d(to)f(512)f(c)
-o(haracters)h(ma)o(y)195 2410 y(b)q(e)j(pushed)g(bac)o(k.)k
+o(haracters)h(ma)o(y)195 2615 y(b)q(e)j(pushed)g(bac)o(k.)k
 Fs(rl_stuff_char)14 b Ft(returns)h(1)g(if)h(the)f(c)o(haracter)g(w)o
-(as)f(successfully)j(inserted;)195 2465 y(0)e(otherwise.)1675
-2560 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
-2560 V 25 w(execute)p 428 2560 V 27 w(next)j Fe(\()p
-Fs(int)15 b(c)p Fe(\))195 2615 y Ft(Mak)o(e)i Fi(c)k
-Ft(b)q(e)d(the)g(next)g(command)g(to)f(b)q(e)i(executed)f(when)h
-Fs(rl_read_key\(\))d Ft(is)i(called.)29 b(This)195 2670
-y(sets)15 b Fi(rl)p 317 2670 14 2 v 20 w(p)q(ending)p
-493 2670 V 22 w(input)p Ft(.)p eop
+(as)f(successfully)j(inserted;)195 2670 y(0)e(otherwise.)p
+eop
 %%Page: 35 39
 35 38 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
 (Readline)843 b(35)1675 149 y([F)l(unction])-1800 b Fg(int)20
-b Ff(rl)p 216 149 18 3 v 25 w(clear)p 359 149 V 27 w(p)r(ending)p
-586 149 V 24 w(input)k Fe(\()p Fs(void)p Fe(\))195 204
-y Ft(Unset)d Fi(rl)p 364 204 14 2 v 20 w(p)q(ending)p
-540 204 V 22 w(input)p Ft(,)i(e\013ectiv)o(ely)f(negating)f(the)g
-(e\013ect)g(of)f(an)o(y)h(previous)g(call)h(to)e Fs(rl_)195
-259 y(execute_next\(\))p Ft(.)29 b(This)19 b(w)o(orks)f(only)h(if)h
-(the)e(p)q(ending)j(input)f(has)f(not)f(already)h(b)q(een)h(read)195
-314 y(with)c Fs(rl_read_key\(\))p Ft(.)1675 404 y([F)l(unction])-1800
-b Fg(int)20 b Ff(rl)p 216 404 18 3 v 25 w(set)p 312 404
-V 26 w(k)n(eyb)r(oard)p 569 404 V 24 w(input)p 726 404
-V 26 w(timeout)j Fe(\()p Fs(int)14 b(u)p Fe(\))195 459
-y Ft(While)21 b(w)o(aiting)g(for)e(k)o(eyb)q(oard)h(input)h(in)g
-Fs(rl_read_key\(\))p Ft(,)e(Readline)i(will)h(w)o(ait)e(for)f
-Fi(u)h Ft(mi-)195 514 y(croseconds)h(for)e(input)j(b)q(efore)f(calling)
-h(an)o(y)e(function)h(assigned)g(to)f Fs(rl_event_hook)p
-Ft(.)34 b(The)195 569 y(default)16 b(w)o(aiting)f(p)q(erio)q(d)i(is)e
-(one-ten)o(th)h(of)e(a)h(second.)21 b(Returns)14 b(the)i(old)f(timeout)
-h(v)m(alue.)75 679 y Fh(2.4.9)30 b(T)-5 b(erminal)20
-b(Managemen)n(t)1675 800 y Ft([F)l(unction])-1800 b Fg(void)20
-b Ff(rl)p 242 800 V 25 w(prep)p 381 800 V 25 w(terminal)j
-Fe(\()p Fs(int)15 b(meta_flag)p Fe(\))195 855 y Ft(Mo)q(dify)22
+b Ff(rl)p 216 149 18 3 v 25 w(execute)p 428 149 V 27
+w(next)j Fe(\()p Fs(int)15 b(c)p Fe(\))195 204 y Ft(Mak)o(e)i
+Fi(c)k Ft(b)q(e)d(the)g(next)g(command)g(to)f(b)q(e)i(executed)f(when)h
+Fs(rl_read_key\(\))d Ft(is)i(called.)29 b(This)195 259
+y(sets)15 b Fi(rl)p 317 259 14 2 v 20 w(p)q(ending)p
+493 259 V 22 w(input)p Ft(.)1675 349 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 349 18 3 v 25 w(clear)p 359
+349 V 27 w(p)r(ending)p 586 349 V 24 w(input)k Fe(\()p
+Fs(void)p Fe(\))195 404 y Ft(Unset)d Fi(rl)p 364 404
+14 2 v 20 w(p)q(ending)p 540 404 V 22 w(input)p Ft(,)i(e\013ectiv)o
+(ely)f(negating)f(the)g(e\013ect)g(of)f(an)o(y)h(previous)g(call)h(to)e
+Fs(rl_)195 459 y(execute_next\(\))p Ft(.)29 b(This)19
+b(w)o(orks)f(only)h(if)h(the)e(p)q(ending)j(input)f(has)f(not)f
+(already)h(b)q(een)h(read)195 514 y(with)c Fs(rl_read_key\(\))p
+Ft(.)1675 604 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p
+216 604 18 3 v 25 w(set)p 312 604 V 26 w(k)n(eyb)r(oard)p
+569 604 V 24 w(input)p 726 604 V 26 w(timeout)j Fe(\()p
+Fs(int)14 b(u)p Fe(\))195 659 y Ft(While)21 b(w)o(aiting)g(for)e(k)o
+(eyb)q(oard)h(input)h(in)g Fs(rl_read_key\(\))p Ft(,)e(Readline)i(will)
+h(w)o(ait)e(for)f Fi(u)h Ft(mi-)195 714 y(croseconds)h(for)e(input)j(b)
+q(efore)f(calling)h(an)o(y)e(function)h(assigned)g(to)f
+Fs(rl_event_hook)p Ft(.)34 b(The)195 768 y(default)16
+b(w)o(aiting)f(p)q(erio)q(d)i(is)e(one-ten)o(th)h(of)e(a)h(second.)21
+b(Returns)14 b(the)i(old)f(timeout)h(v)m(alue.)75 879
+y Fh(2.4.9)30 b(T)-5 b(erminal)20 b(Managemen)n(t)1675
+1000 y Ft([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p
+242 1000 V 25 w(prep)p 381 1000 V 25 w(terminal)j Fe(\()p
+Fs(int)15 b(meta_flag)p Fe(\))195 1055 y Ft(Mo)q(dify)22
 b(the)f(terminal)h(settings)f(for)g(Readline's)h(use,)h(so)d
-Fs(readline\(\))g Ft(can)i(read)f(a)g(single)195 910
+Fs(readline\(\))g Ft(can)i(read)f(a)g(single)195 1110
 y(c)o(haracter)15 b(at)g(a)g(time)g(from)g(the)h(k)o(eyb)q(oard.)k(The)
-c Fi(meta)p 1189 910 14 2 v 19 w(\015ag)j Ft(argumen)o(t)c(should)i(b)q
-(e)f(non-zero)195 965 y(if)g(Readline)g(should)g(read)f(eigh)o(t-bit)i
-(input.)1675 1055 y([F)l(unction])-1800 b Fg(void)20
-b Ff(rl)p 242 1055 18 3 v 25 w(deprep)p 439 1055 V 25
-w(terminal)j Fe(\()p Fs(void)p Fe(\))195 1110 y Ft(Undo)16
+c Fi(meta)p 1189 1110 14 2 v 19 w(\015ag)j Ft(argumen)o(t)c(should)i(b)
+q(e)f(non-zero)195 1165 y(if)g(Readline)g(should)g(read)f(eigh)o(t-bit)
+i(input.)1675 1255 y([F)l(unction])-1800 b Fg(void)20
+b Ff(rl)p 242 1255 18 3 v 25 w(deprep)p 439 1255 V 25
+w(terminal)j Fe(\()p Fs(void)p Fe(\))195 1310 y Ft(Undo)16
 b(the)g(e\013ects)f(of)h Fs(rl_prep_terminal\(\))p Ft(,)d(lea)o(ving)k
 (the)e(terminal)i(in)g(the)e(state)g(in)i(whic)o(h)195
-1165 y(it)e(w)o(as)g(b)q(efore)g(the)h(most)e(recen)o(t)h(call)i(to)d
-Fs(rl_prep_terminal\(\))p Ft(.)1675 1255 y([F)l(unction])-1800
-b Fg(void)20 b Ff(rl)p 242 1255 V 25 w(tt)n(y)p 339 1255
-V 27 w(set)p 437 1255 V 25 w(default)p 635 1255 V 26
+1365 y(it)e(w)o(as)g(b)q(efore)g(the)h(most)e(recen)o(t)h(call)i(to)d
+Fs(rl_prep_terminal\(\))p Ft(.)1675 1455 y([F)l(unction])-1800
+b Fg(void)20 b Ff(rl)p 242 1455 V 25 w(tt)n(y)p 339 1455
+V 27 w(set)p 437 1455 V 25 w(default)p 635 1455 V 26
 w(bindings)j Fe(\()p Fs(Keymap)14 b(kmap)p Fe(\))195
-1310 y Ft(Read)k(the)h(op)q(erating)f(system's)g(terminal)h(editing)h
+1510 y Ft(Read)k(the)h(op)q(erating)f(system's)g(terminal)h(editing)h
 (c)o(haracters)e(\(as)f(w)o(ould)i(b)q(e)g(displa)o(y)o(ed)h(b)o(y)195
-1365 y Fs(stty)p Ft(\))14 b(to)h(their)h(Readline)g(equiv)m(alen)o(ts.)
+1564 y Fs(stty)p Ft(\))14 b(to)h(their)h(Readline)g(equiv)m(alen)o(ts.)
 22 b(The)15 b(bindings)i(are)e(p)q(erformed)g(in)h Fi(kmap)p
-Ft(.)1675 1455 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p
-242 1455 V 25 w(tt)n(y)p 339 1455 V 27 w(unset)p 501
-1455 V 25 w(default)p 699 1455 V 25 w(bindings)k Fe(\()p
-Fs(Keymap)14 b(kmap)p Fe(\))195 1510 y Ft(Reset)h(the)h(bindings)i
+Ft(.)1675 1655 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p
+242 1655 V 25 w(tt)n(y)p 339 1655 V 27 w(unset)p 501
+1655 V 25 w(default)p 699 1655 V 25 w(bindings)k Fe(\()p
+Fs(Keymap)14 b(kmap)p Fe(\))195 1710 y Ft(Reset)h(the)h(bindings)i
 (manipulated)f(b)o(y)f Fs(rl_tty_set_default_bindings)c
-Ft(so)k(that)f(the)h(ter-)195 1564 y(minal)21 b(editing)g(c)o
+Ft(so)k(that)f(the)h(ter-)195 1764 y(minal)21 b(editing)g(c)o
 (haracters)e(are)h(b)q(ound)g(to)f Fs(rl_insert)p Ft(.)33
-b(The)20 b(bindings)i(are)d(p)q(erformed)h(in)195 1619
-y Fi(kmap)p Ft(.)1675 1710 y([F)l(unction])-1800 b Fg(int)20
-b Ff(rl)p 216 1710 V 25 w(reset)p 362 1710 V 25 w(terminal)k
+b(The)20 b(bindings)i(are)d(p)q(erformed)h(in)195 1819
+y Fi(kmap)p Ft(.)1675 1910 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 1910 V 25 w(reset)p 362 1910 V 25 w(terminal)k
 Fe(\()p Fs(const)14 b(char)g(*terminal_name)p Fe(\))195
-1764 y Ft(Reinitialize)h(Readline's)d(idea)h(of)f(the)g(terminal)g
-(settings)g(using)h Fi(terminal)p 1488 1764 14 2 v 21
-w(name)h Ft(as)e(the)g(termi-)195 1819 y(nal)k(t)o(yp)q(e)g(\(e.g.,)f
-Fs(vt100)p Ft(\).)21 b(If)16 b Fi(terminal)p 876 1819
+1964 y Ft(Reinitialize)h(Readline's)d(idea)h(of)f(the)g(terminal)g
+(settings)g(using)h Fi(terminal)p 1488 1964 14 2 v 21
+w(name)h Ft(as)e(the)g(termi-)195 2019 y(nal)k(t)o(yp)q(e)g(\(e.g.,)f
+Fs(vt100)p Ft(\).)21 b(If)16 b Fi(terminal)p 876 2019
 V 21 w(name)i Ft(is)f Fs(NULL)p Ft(,)e(the)h(v)m(alue)h(of)e(the)h
-Fs(TERM)g Ft(en)o(vironmen)o(t)195 1874 y(v)m(ariable)h(is)e(used.)75
-1984 y Fh(2.4.10)29 b(Utilit)n(y)22 b(F)-5 b(unctions)1675
-2106 y Ft([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p
-242 2106 18 3 v 25 w(replace)p 443 2106 V 27 w(line)k
+Fs(TERM)g Ft(en)o(vironmen)o(t)195 2074 y(v)m(ariable)h(is)e(used.)75
+2184 y Fh(2.4.10)29 b(Utilit)n(y)22 b(F)-5 b(unctions)1675
+2306 y Ft([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p
+242 2306 18 3 v 25 w(replace)p 443 2306 V 27 w(line)k
 Fe(\()p Fs(const)15 b(char)f(*text,)g(int)h(clear_undo)p
-Fe(\))195 2161 y Ft(Replace)20 b(the)g(con)o(ten)o(ts)f(of)g
+Fe(\))195 2360 y Ft(Replace)20 b(the)g(con)o(ten)o(ts)f(of)g
 Fs(rl_line_buffer)f Ft(with)i Fi(text)p Ft(.)33 b(The)20
-b(p)q(oin)o(t)g(and)g(mark)f(are)h(pre-)195 2215 y(serv)o(ed,)13
-b(if)g(p)q(ossible.)21 b(If)13 b Fi(clear)p 711 2215
+b(p)q(oin)o(t)g(and)g(mark)f(are)h(pre-)195 2415 y(serv)o(ed,)13
+b(if)g(p)q(ossible.)21 b(If)13 b Fi(clear)p 711 2415
 14 2 v 21 w(undo)i Ft(is)e(non-zero,)h(the)e(undo)i(list)f(asso)q
-(ciated)g(with)g(the)g(curren)o(t)195 2270 y(line)k(is)f(cleared.)1675
-2360 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
-2360 18 3 v 25 w(extend)p 409 2360 V 26 w(line)p 523
-2360 V 27 w(bu\013er)j Fe(\()p Fs(int)14 b(len)p Fe(\))195
-2415 y Ft(Ensure)h(that)g Fs(rl_line_buffer)e Ft(has)i(enough)g(space)h
+(ciated)g(with)g(the)g(curren)o(t)195 2470 y(line)k(is)f(cleared.)1675
+2560 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
+2560 18 3 v 25 w(extend)p 409 2560 V 26 w(line)p 523
+2560 V 27 w(bu\013er)j Fe(\()p Fs(int)14 b(len)p Fe(\))195
+2615 y Ft(Ensure)h(that)g Fs(rl_line_buffer)e Ft(has)i(enough)g(space)h
 (to)e(hold)i Fi(len)g Ft(c)o(haracters,)e(p)q(ossibly)i(real-)195
-2470 y(lo)q(cating)g(it)f(if)h(necessary)l(.)1675 2560
-y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 2560
-V 25 w(initial)q(i)q(ze)26 b Fe(\()p Fs(void)p Fe(\))195
-2615 y Ft(Initialize)21 b(or)d(re-initialize)k(Readline's)d(in)o
-(ternal)h(state.)28 b(It's)18 b(not)g(strictly)h(necessary)g(to)f(call)
-195 2670 y(this;)d Fs(readline\(\))f Ft(calls)i(it)g(b)q(efore)f
-(reading)h(an)o(y)f(input.)p eop
+2670 y(lo)q(cating)g(it)f(if)h(necessary)l(.)p eop
 %%Page: 36 40
 36 39 bop 75 -58 a Ft(36)1299 b(GNU)15 b(Readline)h(Library)1675
 149 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 149
-18 3 v 25 w(ding)j Fe(\()p Fs(void)p Fe(\))195 204 y
-Ft(Ring)15 b(the)g(terminal)h(b)q(ell,)h(ob)q(eying)f(the)g(setting)f
-(of)g Fs(bell-style)p Ft(.)1675 305 y([F)l(unction])-1800
-b Fg(int)20 b Ff(rl)p 216 305 V 25 w(alphab)r(etic)25
-b Fe(\()p Fs(int)14 b(c)p Fe(\))195 360 y Ft(Return)h(1)g(if)g
+18 3 v 25 w(initial)q(i)q(ze)26 b Fe(\()p Fs(void)p Fe(\))195
+204 y Ft(Initialize)21 b(or)d(re-initialize)k(Readline's)d(in)o(ternal)
+h(state.)28 b(It's)18 b(not)g(strictly)h(necessary)g(to)f(call)195
+259 y(this;)d Fs(readline\(\))f Ft(calls)i(it)g(b)q(efore)f(reading)h
+(an)o(y)f(input.)1675 343 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 343 V 25 w(ding)j Fe(\()p Fs(void)p Fe(\))195
+398 y Ft(Ring)15 b(the)g(terminal)h(b)q(ell,)h(ob)q(eying)f(the)g
+(setting)f(of)g Fs(bell-style)p Ft(.)1675 482 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 482 V 25 w(alphab)r(etic)25
+b Fe(\()p Fs(int)14 b(c)p Fe(\))195 537 y Ft(Return)h(1)g(if)g
 Fi(c)j Ft(is)e(an)f(alphab)q(etic)i(c)o(haracter.)1675
-462 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p 242
-462 V 25 w(displa)n(y)p 440 462 V 27 w(matc)n(h)p 621
-462 V 25 w(list)k Fe(\()p Fs(char)15 b(**matches,)e(int)i(len,)g(int)g
-(max)p Fe(\))195 516 y Ft(A)i(con)o(v)o(enience)i(function)f(for)f
+621 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p 242
+621 V 25 w(displa)n(y)p 440 621 V 27 w(matc)n(h)p 621
+621 V 25 w(list)k Fe(\()p Fs(char)15 b(**matches,)e(int)i(len,)g(int)g
+(max)p Fe(\))195 676 y Ft(A)i(con)o(v)o(enience)i(function)f(for)f
 (displa)o(ying)i(a)e(list)h(of)e(strings)h(in)i(columnar)e(format)f(on)
-h(Read-)195 571 y(line's)h(output)f(stream.)23 b Fs(matches)16
+h(Read-)195 731 y(line's)h(output)f(stream.)23 b Fs(matches)16
 b Ft(is)h(the)g(list)h(of)e(strings,)h(in)g(argv)f(format,)g(suc)o(h)h
-(as)f(a)h(list)g(of)195 626 y(completion)c(matc)o(hes.)19
+(as)f(a)h(list)g(of)195 786 y(completion)c(matc)o(hes.)19
 b Fs(len)11 b Ft(is)i(the)f(n)o(um)o(b)q(er)h(of)e(strings)h(in)h
 Fs(matches)p Ft(,)f(and)g Fs(max)g Ft(is)g(the)h(length)f(of)195
-681 y(the)h(longest)g(string)g(in)h Fs(matches)p Ft(.)19
+841 y(the)h(longest)g(string)g(in)h Fs(matches)p Ft(.)19
 b(This)13 b(function)h(uses)f(the)h(setting)f(of)f Fs
-(print-completions-)195 736 y(horizontally)k Ft(to)i(select)h(ho)o(w)e
+(print-completions-)195 895 y(horizontally)k Ft(to)i(select)h(ho)o(w)e
 (the)i(matc)o(hes)e(are)h(displa)o(y)o(ed)h(\(see)g(Section)g(1.3.1)d
-([Readline)195 790 y(Init)g(File)g(Syn)o(tax],)e(page)h(4\).)137
-892 y(The)i(follo)o(wing)f(are)g(implemen)o(ted)i(as)e(macros,)f
+([Readline)195 950 y(Init)g(File)g(Syn)o(tax],)e(page)h(4\).)137
+1034 y(The)i(follo)o(wing)f(are)g(implemen)o(ted)i(as)e(macros,)f
 (de\014ned)i(in)g Fs(chardefs.h)p Ft(.)k(Applications)d(should)75
-946 y(refrain)d(from)g(using)h(them.)1675 1048 y([F)l(unction])-1800
-b Fg(int)p 177 1048 V 45 w Ff(rl)p 241 1048 V 25 w(upp)r(ercase)p
-516 1048 V 25 w(p)22 b Fe(\()p Fs(int)15 b(c)p Fe(\))195
-1102 y Ft(Return)g(1)g(if)g Fi(c)j Ft(is)e(an)f(upp)q(ercase)i(alphab)q
-(etic)f(c)o(haracter.)1675 1204 y([F)l(unction])-1800
-b Fg(int)p 177 1204 V 45 w Ff(rl)p 241 1204 V 25 w(lo)n(w)n(ercase)p
-499 1204 V 27 w(p)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195
-1258 y Ft(Return)h(1)g(if)g Fi(c)j Ft(is)e(a)f(lo)o(w)o(ercase)g
-(alphab)q(etic)i(c)o(haracter.)1675 1360 y([F)l(unction])-1800
-b Fg(int)p 177 1360 V 45 w Ff(rl)p 241 1360 V 25 w(digit)p
-379 1360 V 27 w(p)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195
-1414 y Ft(Return)h(1)g(if)g Fi(c)j Ft(is)e(a)f(n)o(umeric)h(c)o
-(haracter.)1675 1516 y([F)l(unction])-1800 b Fg(int)p
-177 1516 V 45 w Ff(rl)p 241 1516 V 25 w(to)p 317 1516
+1089 y(refrain)d(from)g(using)h(them.)1675 1174 y([F)l(unction])-1800
+b Fg(int)p 177 1174 V 45 w Ff(rl)p 241 1174 V 25 w(upp)r(ercase)p
+516 1174 V 25 w(p)22 b Fe(\()p Fs(int)15 b(c)p Fe(\))195
+1228 y Ft(Return)g(1)g(if)g Fi(c)j Ft(is)e(an)f(upp)q(ercase)i(alphab)q
+(etic)f(c)o(haracter.)1675 1313 y([F)l(unction])-1800
+b Fg(int)p 177 1313 V 45 w Ff(rl)p 241 1313 V 25 w(lo)n(w)n(ercase)p
+499 1313 V 27 w(p)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195
+1367 y Ft(Return)h(1)g(if)g Fi(c)j Ft(is)e(a)f(lo)o(w)o(ercase)g
+(alphab)q(etic)i(c)o(haracter.)1675 1452 y([F)l(unction])-1800
+b Fg(int)p 177 1452 V 45 w Ff(rl)p 241 1452 V 25 w(digit)p
+379 1452 V 27 w(p)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195
+1507 y Ft(Return)h(1)g(if)g Fi(c)j Ft(is)e(a)f(n)o(umeric)h(c)o
+(haracter.)1675 1591 y([F)l(unction])-1800 b Fg(int)p
+177 1591 V 45 w Ff(rl)p 241 1591 V 25 w(to)p 317 1591
 V 26 w(upp)r(er)21 b Fe(\()p Fs(int)15 b(c)p Fe(\))195
-1571 y Ft(If)d Fi(c)j Ft(is)d(a)g(lo)o(w)o(ercase)f(alphab)q(etic)j(c)o
+1646 y Ft(If)d Fi(c)j Ft(is)d(a)g(lo)o(w)o(ercase)f(alphab)q(etic)j(c)o
 (haracter,)d(return)h(the)g(corresp)q(onding)h(upp)q(ercase)g(c)o
-(haracter.)1675 1672 y([F)l(unction])-1800 b Fg(int)p
-177 1672 V 45 w Ff(rl)p 241 1672 V 25 w(to)p 317 1672
+(haracter.)1675 1730 y([F)l(unction])-1800 b Fg(int)p
+177 1730 V 45 w Ff(rl)p 241 1730 V 25 w(to)p 317 1730
 V 26 w(lo)n(w)n(er)24 b Fe(\()p Fs(int)14 b(c)p Fe(\))195
-1727 y Ft(If)h Fi(c)i Ft(is)e(an)f(upp)q(ercase)i(alphab)q(etic)g(c)o
+1785 y Ft(If)h Fi(c)i Ft(is)e(an)f(upp)q(ercase)i(alphab)q(etic)g(c)o
 (haracter,)e(return)g(the)h(corresp)q(onding)g(lo)o(w)o(ercase)f(c)o
-(harac-)195 1781 y(ter.)1675 1883 y([F)l(unction])-1800
-b Fg(int)p 177 1883 V 45 w Ff(rl)p 241 1883 V 25 w(digit)p
-379 1883 V 27 w(v)m(alue)24 b Fe(\()p Fs(int)14 b(c)p
-Fe(\))195 1937 y Ft(If)h Fi(c)k Ft(is)c(a)g(n)o(um)o(b)q(er,)g(return)g
-(the)h(v)m(alue)g(it)g(represen)o(ts.)75 2059 y Fh(2.4.11)29
-b(Miscellaneous)22 b(F)-5 b(unctions)1675 2185 y Ft([F)l(unction])-1800
-b Fg(int)20 b Ff(rl)p 216 2185 V 25 w(macro)p 396 2185
+(harac-)195 1839 y(ter.)1675 1924 y([F)l(unction])-1800
+b Fg(int)p 177 1924 V 45 w Ff(rl)p 241 1924 V 25 w(digit)p
+379 1924 V 27 w(v)m(alue)24 b Fe(\()p Fs(int)14 b(c)p
+Fe(\))195 1979 y Ft(If)h Fi(c)k Ft(is)c(a)g(n)o(um)o(b)q(er,)g(return)g
+(the)h(v)m(alue)g(it)g(represen)o(ts.)75 2083 y Fh(2.4.11)29
+b(Miscellaneous)22 b(F)-5 b(unctions)1675 2202 y Ft([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 2202 V 25 w(macro)p 396 2202
 V 24 w(bind)j Fe(\()p Fs(const)14 b(char)h(*keyseq,)f(const)g(char)h
-(*macro,)f(Keymap)283 2240 y(map)p Fe(\))195 2295 y Ft(Bind)f(the)f(k)o
+(*macro,)f(Keymap)283 2257 y(map)p Fe(\))195 2312 y Ft(Bind)f(the)f(k)o
 (ey)f(sequence)i Fi(k)o(eyseq)g Ft(to)e(in)o(v)o(ok)o(e)g(the)h(macro)f
 Fi(macro)p Ft(.)18 b(The)12 b(binding)h(is)f(p)q(erformed)g(in)195
-2350 y Fi(map)p Ft(.)19 b(When)14 b Fi(k)o(eyseq)h Ft(is)f(in)o(v)o(ok)
+2367 y Fi(map)p Ft(.)19 b(When)14 b Fi(k)o(eyseq)h Ft(is)f(in)o(v)o(ok)
 o(ed,)g(the)g Fi(macro)i Ft(will)f(b)q(e)f(inserted)h(in)o(to)f(the)g
-(line.)21 b(This)14 b(function)195 2404 y(is)i(deprecated;)f(use)h
+(line.)21 b(This)14 b(function)195 2421 y(is)i(deprecated;)f(use)h
 Fs(rl_generic_bind\(\))d Ft(instead.)1675 2506 y([F)l(unction])-1800
 b Fg(void)20 b Ff(rl)p 242 2506 V 25 w(macro)p 422 2506
 V 24 w(dump)r(er)g Fe(\()p Fs(int)15 b(readable)p Fe(\))195
@@ -4318,180 +4335,221 @@ b(char)g(*)f Ff(rl)p 437 149 18 3 v 26 w(completer)p
 (for)g Fs(rl_complete_)195 259 y(internal\(\))p Ft(.)18
 b(The)e(default)g(list)g(is)f(the)h(v)m(alue)g(of)f Fs
 (rl_basic_word_break_chara)o(cters)p Ft(.)1685 355 y([V)l(ariable])
--1799 b Fg(const)20 b(char)g(*)f Ff(rl)p 437 355 V 26
-w(completer)p 711 355 V 25 w(quote)p 875 355 V 25 w(c)n(haracters)195
-410 y Ft(A)e(list)h(of)e(c)o(haracters)g(whic)o(h)i(can)f(b)q(e)g(used)
-h(to)e(quote)h(a)f(substring)h(of)g(the)g(line.)26 b(Completion)195
-465 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)g(substring,)h(and)f(within)i
-(the)e(substring)g Fs(rl_completer_word_break_)195 519
+-1799 b Fg(rl_cpvfunc_t)21 b(*)e Ff(rl)p 496 355 V 26
+w(completion)p 796 355 V 26 w(w)n(ord)p 946 355 V 25
+w(break)p 1111 355 V 25 w(ho)r(ok)195 410 y Ft(If)d(non-zero,)g(this)g
+(is)g(the)g(address)g(of)f(a)h(function)g(to)f(call)i(when)g(Readline)g
+(is)f(deciding)i(where)195 465 y(to)f(separate)f(w)o(ords)h(for)f(w)o
+(ord)g(completion.)27 b(It)18 b(should)g(return)f(a)g(c)o(haracter)f
+(string)h(lik)o(e)h Fs(rl_)195 519 y(completer_word_break_chara)o
+(cters)13 b Ft(to)j(b)q(e)h(used)g(to)f(p)q(erform)g(the)h(curren)o(t)f
+(completion.)195 574 y(The)d(function)g(ma)o(y)e(c)o(ho)q(ose)i(to)f
+(set)g Fs(rl_completer_word_break_)o(charact)o(ers)d
+Ft(itself.)20 b(If)13 b(the)195 629 y(function)j(returns)f
+Fs(NULL)p Ft(,)f Fs(rl_completer_word_break_chara)o(cters)e
+Ft(is)k(used.)1685 725 y([V)l(ariable])-1799 b Fg(const)20
+b(char)g(*)f Ff(rl)p 437 725 V 26 w(completer)p 711 725
+V 25 w(quote)p 875 725 V 25 w(c)n(haracters)195 780 y
+Ft(A)e(list)h(of)e(c)o(haracters)g(whic)o(h)i(can)f(b)q(e)g(used)h(to)e
+(quote)h(a)f(substring)h(of)g(the)g(line.)26 b(Completion)195
+834 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)g(substring,)h(and)f(within)i
+(the)e(substring)g Fs(rl_completer_word_break_)195 889
 y(characters)j Ft(are)h(treated)g(as)h(an)o(y)f(other)g(c)o(haracter,)g
 (unless)i(they)e(also)h(app)q(ear)g(within)h(this)195
-574 y(list.)1685 670 y([V)l(ariable])-1799 b Fg(const)20
-b(char)g(*)f Ff(rl)p 437 670 V 26 w(\014lename)p 671
-670 V 24 w(quote)p 834 670 V 26 w(c)n(haracters)195 725
-y Ft(A)e(list)h(of)e(c)o(haracters)g(that)g(cause)h(a)g(\014lename)h
-(to)e(b)q(e)i(quoted)e(b)o(y)h(the)g(completer)h(when)f(they)195
-780 y(app)q(ear)e(in)h(a)f(completed)h(\014lename.)21
+944 y(list.)1685 1040 y([V)l(ariable])-1799 b Fg(const)20
+b(char)g(*)f Ff(rl)p 437 1040 V 26 w(\014lename)p 671
+1040 V 24 w(quote)p 834 1040 V 26 w(c)n(haracters)195
+1095 y Ft(A)e(list)h(of)e(c)o(haracters)g(that)g(cause)h(a)g
+(\014lename)h(to)e(b)q(e)i(quoted)e(b)o(y)h(the)g(completer)h(when)f
+(they)195 1149 y(app)q(ear)e(in)h(a)f(completed)h(\014lename.)21
 b(The)16 b(default)g(is)f(the)h(n)o(ull)g(string.)1685
-875 y([V)l(ariable])-1799 b Fg(const)20 b(char)g(*)f
-Ff(rl)p 437 875 V 26 w(sp)r(ecial)p 629 875 V 26 w(pre\014xes)195
-930 y Ft(The)14 b(list)h(of)e(c)o(haracters)g(that)g(are)h(w)o(ord)f
+1245 y([V)l(ariable])-1799 b Fg(const)20 b(char)g(*)f
+Ff(rl)p 437 1245 V 26 w(sp)r(ecial)p 629 1245 V 26 w(pre\014xes)195
+1300 y Ft(The)14 b(list)h(of)e(c)o(haracters)g(that)g(are)h(w)o(ord)f
 (break)h(c)o(haracters,)f(but)h(should)h(b)q(e)f(left)g(in)h
-Fi(text)f Ft(when)195 985 y(it)f(is)f(passed)h(to)f(the)g(completion)h
+Fi(text)f Ft(when)195 1355 y(it)f(is)f(passed)h(to)f(the)g(completion)h
 (function.)20 b(Programs)11 b(can)h(use)h(this)g(to)f(help)h(determine)
-h(what)195 1040 y(kind)i(of)e(completing)i(to)e(do.)19
+h(what)195 1410 y(kind)i(of)e(completing)i(to)e(do.)19
 b(F)l(or)14 b(instance,)i(Bash)e(sets)h(this)g(v)m(ariable)h(to)e
-Fs(")p Ft($)p Fs(@")g Ft(so)g(that)g(it)h(can)195 1095
+Fs(")p Ft($)p Fs(@")g Ft(so)g(that)g(it)h(can)195 1465
 y(complete)h(shell)h(v)m(ariables)f(and)g(hostnames.)1685
-1191 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216
-1191 V 25 w(completion)p 515 1191 V 26 w(query)p 683
-1191 V 25 w(items)195 1245 y Ft(Up)e(to)g(this)g(man)o(y)g(items)g
+1560 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216
+1560 V 25 w(completion)p 515 1560 V 26 w(query)p 683
+1560 V 25 w(items)195 1615 y Ft(Up)e(to)g(this)g(man)o(y)g(items)g
 (will)i(b)q(e)f(displa)o(y)o(ed)g(in)g(resp)q(onse)g(to)e(a)h(p)q
-(ossible-completions)j(call.)195 1300 y(After)14 b(that,)f(w)o(e)h(ask)
+(ossible-completions)j(call.)195 1670 y(After)14 b(that,)f(w)o(e)h(ask)
 g(the)h(user)f(if)h(she)f(is)h(sure)g(she)f(w)o(an)o(ts)f(to)h(see)h
-(them)f(all.)20 b(The)15 b(default)g(v)m(alue)195 1355
-y(is)h(100.)1685 1451 y([V)l(ariable])-1799 b Fg(int)20
-b Ff(rl)p 216 1451 V 25 w(completion)p 515 1451 V 26
-w(app)r(end)p 725 1451 V 24 w(c)n(haracter)195 1506 y
+(them)f(all.)20 b(The)15 b(default)g(v)m(alue)195 1725
+y(is)h(100.)1685 1821 y([V)l(ariable])-1799 b Fg(int)20
+b Ff(rl)p 216 1821 V 25 w(completion)p 515 1821 V 26
+w(app)r(end)p 725 1821 V 24 w(c)n(haracter)195 1875 y
 Ft(When)d(a)f(single)i(completion)g(alternativ)o(e)f(matc)o(hes)f(at)g
-(the)h(end)g(of)f(the)h(command)f(line,)j(this)195 1560
+(the)h(end)g(of)f(the)h(command)f(line,)j(this)195 1930
 y(c)o(haracter)10 b(is)h(app)q(ended)i(to)d(the)g(inserted)i
 (completion)g(text.)18 b(The)11 b(default)g(is)g(a)g(space)g(c)o
-(haracter)195 1615 y(\(`)j('\).)42 b(Setting)23 b(this)g(to)f(the)h(n)o
+(haracter)195 1985 y(\(`)j('\).)42 b(Setting)23 b(this)g(to)f(the)h(n)o
 (ull)h(c)o(haracter)e(\(`)p Fs(\\0)p Ft('\))f(prev)o(en)o(ts)i(an)o
-(ything)f(b)q(eing)i(app)q(ended)195 1670 y(automatically)l(.)32
+(ything)f(b)q(eing)i(app)q(ended)195 2040 y(automatically)l(.)32
 b(This)19 b(can)g(b)q(e)h(c)o(hanged)f(in)g(application-sp)q(eci)q
-(\014c)j(completion)e(functions)g(to)195 1725 y(pro)o(vide)g(the)g
+(\014c)j(completion)e(functions)g(to)195 2095 y(pro)o(vide)g(the)g
 (\\most)f(sensible)j(w)o(ord)d(separator)g(c)o(haracter")g(according)h
-(to)f(an)h(application-)195 1780 y(sp)q(eci\014c)d(command)e(line)i
-(syn)o(tax)d(sp)q(eci\014cation.)1685 1875 y([V)l(ariable])-1799
-b Fg(int)20 b Ff(rl)p 216 1875 V 25 w(completion)p 515
-1875 V 26 w(suppress)p 756 1875 V 23 w(app)r(end)195
-1930 y Ft(If)d(non-zero,)g Fi(rl)p 474 1930 14 2 v 20
-w(completion)p 710 1930 V 21 w(app)q(end)p 875 1930 V
+(to)f(an)h(application-)195 2149 y(sp)q(eci\014c)d(command)e(line)i
+(syn)o(tax)d(sp)q(eci\014cation.)1685 2245 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(rl)p 216 2245 V 25 w(completion)p 515
+2245 V 26 w(suppress)p 756 2245 V 23 w(app)r(end)195
+2300 y Ft(If)d(non-zero,)g Fi(rl)p 474 2300 14 2 v 20
+w(completion)p 710 2300 V 21 w(app)q(end)p 875 2300 V
 22 w(c)o(haracter)i Ft(is)e(not)f(app)q(ended)i(to)e(matc)o(hes)h(at)f
-(the)g(end)195 1985 y(of)d(the)h(command)g(line,)h(as)f(describ)q(ed)h
+(the)g(end)195 2355 y(of)d(the)h(command)g(line,)h(as)f(describ)q(ed)h
 (ab)q(o)o(v)o(e.)k(It)14 b(is)h(set)e(to)g(0)h(b)q(efore)g(an)o(y)f
-(application-sp)q(eci)q(\014c)195 2040 y(completion)j(function)g(is)g
+(application-sp)q(eci)q(\014c)195 2410 y(completion)j(function)g(is)g
 (called,)g(and)g(ma)o(y)e(only)i(b)q(e)g(c)o(hanged)f(within)i(suc)o(h)
-e(a)g(function.)1685 2136 y([V)l(ariable])-1799 b Fg(int)20
-b Ff(rl)p 216 2136 18 3 v 25 w(completion)p 515 2136
-V 26 w(mark)p 672 2136 V 24 w(symlink)p 890 2136 V 25
-w(dirs)195 2191 y Ft(If)c(non-zero,)g(a)g(slash)g(will)i(b)q(e)e(app)q
-(ended)i(to)d(completed)i(\014lenames)g(that)e(are)g(sym)o(b)q(olic)j
-(links)195 2245 y(to)11 b(directory)i(names,)f(sub)s(ject)g(to)f(the)i
-(v)m(alue)g(of)f(the)g(user-settable)g Fi(mark-directories)j
-Ft(v)m(ariable.)195 2300 y(This)f(v)m(ariable)h(exists)f(so)g(that)f
-(application-sp)q(eci\014c)k(completion)e(functions)f(can)g(o)o(v)o
-(erride)g(the)195 2355 y(user's)21 b(global)h(preference)g(\(set)e(via)
-i(the)f Fi(mark-symlink)o(ed-directories)k Ft(Readline)e(v)m(ariable\))
-195 2410 y(if)c(appropriate.)31 b(This)19 b(v)m(ariable)h(is)g(set)e
-(to)g(the)h(user's)g(preference)h(b)q(efore)f(an)o(y)f(application-)195
-2465 y(sp)q(eci\014c)g(completion)f(function)f(is)h(called,)g(so)e
-(unless)i(that)e(function)i(mo)q(di\014es)g(the)f(v)m(alue,)h(the)195
-2519 y(user's)e(preferences)h(are)f(honored.)1685 2615
-y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 2615
-V 25 w(ignore)p 396 2615 V 25 w(completion)p 695 2615
-V 26 w(duplicates)195 2670 y Ft(If)15 b(non-zero,)h(then)f(duplicates)i
-(in)f(the)f(matc)o(hes)g(are)g(remo)o(v)o(ed.)k(The)d(default)g(is)f
-(1.)p eop
+e(a)g(function.)1685 2506 y([V)l(ariable])-1799 b Fg(int)20
+b Ff(rl)p 216 2506 18 3 v 25 w(completion)p 515 2506
+V 26 w(quote)p 680 2506 V 25 w(c)n(haracter)195 2560
+y Ft(When)e(Readline)i(is)e(completing)i(quoted)e(text,)g(as)f
+(delimited)k(b)o(y)d(one)g(of)g(the)g(c)o(haracters)f(in)195
+2615 y Fi(rl)p 228 2615 14 2 v 20 w(completer)p 442 2615
+V 21 w(quote)p 573 2615 V 20 w(c)o(haracters)p Ft(,)i(it)h(sets)f(this)
+h(v)m(ariable)h(to)e(the)h(quoting)f(c)o(haracter)g(found.)195
+2670 y(This)d(is)f(set)g(b)q(efore)h(an)o(y)f(application-sp)q
+(eci\014c)k(completion)d(function)g(is)g(called.)p eop
 %%Page: 46 50
 46 49 bop 75 -58 a Ft(46)1299 b(GNU)15 b(Readline)h(Library)1685
 149 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 149
-18 3 v 25 w(\014lename)p 449 149 V 25 w(completion)p
-748 149 V 26 w(desired)195 204 y Ft(Non-zero)c(means)g(that)f(the)h
+18 3 v 25 w(completion)p 515 149 V 26 w(suppress)p 756
+149 V 23 w(quote)195 204 y Ft(If)c(non-zero,)h(Readline)g(do)q(es)g
+(not)e(app)q(end)j(a)d(matc)o(hing)i(quote)f(c)o(haracter)f(when)i(p)q
+(erforming)195 259 y(completion)c(on)f(a)f(quoted)h(string.)19
+b(It)11 b(is)i(set)e(to)g(0)h(b)q(efore)g(an)o(y)f(application-sp)q
+(eci)q(\014c)k(completion)195 314 y(function)h(is)g(called,)g(and)g(ma)
+o(y)e(only)i(b)q(e)g(c)o(hanged)f(within)i(suc)o(h)e(a)g(function.)1685
+400 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 400
+V 25 w(completion)p 515 400 V 26 w(found)p 684 400 V
+24 w(quote)195 455 y Ft(When)c(Readline)h(is)g(completing)g(quoted)e
+(text,)h(it)g(sets)f(this)h(v)m(ariable)i(to)d(a)g(non-zero)h(v)m(alue)
+h(if)195 510 y(the)11 b(w)o(ord)e(b)q(eing)j(completed)g(con)o(tains)e
+(or)h(is)g(delimited)h(b)o(y)f(an)o(y)f(quoting)h(c)o(haracters,)f
+(including)195 564 y(bac)o(kslashes.)20 b(This)c(is)g(set)f(b)q(efore)g
+(an)o(y)g(application-sp)q(eci\014)q(c)j(completion)e(function)g(is)g
+(called.)1685 650 y([V)l(ariable])-1799 b Fg(int)20 b
+Ff(rl)p 216 650 V 25 w(completion)p 515 650 V 26 w(mark)p
+672 650 V 24 w(symlink)p 890 650 V 25 w(dirs)195 705
+y Ft(If)c(non-zero,)g(a)g(slash)g(will)i(b)q(e)e(app)q(ended)i(to)d
+(completed)i(\014lenames)g(that)e(are)g(sym)o(b)q(olic)j(links)195
+760 y(to)11 b(directory)i(names,)f(sub)s(ject)g(to)f(the)i(v)m(alue)g
+(of)f(the)g(user-settable)g Fi(mark-directories)j Ft(v)m(ariable.)195
+815 y(This)f(v)m(ariable)h(exists)f(so)g(that)f(application-sp)q
+(eci\014c)k(completion)e(functions)f(can)g(o)o(v)o(erride)g(the)195
+870 y(user's)21 b(global)h(preference)g(\(set)e(via)i(the)f
+Fi(mark-symlink)o(ed-directories)k Ft(Readline)e(v)m(ariable\))195
+924 y(if)c(appropriate.)31 b(This)19 b(v)m(ariable)h(is)g(set)e(to)g
+(the)h(user's)g(preference)h(b)q(efore)f(an)o(y)f(application-)195
+979 y(sp)q(eci\014c)g(completion)f(function)f(is)h(called,)g(so)e
+(unless)i(that)e(function)i(mo)q(di\014es)g(the)f(v)m(alue,)h(the)195
+1034 y(user's)e(preferences)h(are)f(honored.)1685 1120
+y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 1120
+V 25 w(ignore)p 396 1120 V 25 w(completion)p 695 1120
+V 26 w(duplicates)195 1175 y Ft(If)15 b(non-zero,)h(then)f(duplicates)i
+(in)f(the)f(matc)o(hes)g(are)g(remo)o(v)o(ed.)k(The)d(default)g(is)f
+(1.)1685 1261 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p
+216 1261 V 25 w(\014lename)p 449 1261 V 25 w(completion)p
+748 1261 V 26 w(desired)195 1316 y Ft(Non-zero)c(means)g(that)f(the)h
 (results)g(of)g(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(treated)e(as)g
-(\014lenames.)23 b(This)195 259 y(is)d Fn(always)k Ft(zero)c(when)g
+(\014lenames.)23 b(This)195 1371 y(is)d Fn(always)k Ft(zero)c(when)g
 (completion)h(is)g(attempted,)f(and)g(can)g(only)h(b)q(e)g(c)o(hanged)f
-(within)h(an)195 314 y(application-sp)q(eci\014)q(c)h(completion)f
+(within)h(an)195 1425 y(application-sp)q(eci\014)q(c)h(completion)f
 (function.)35 b(If)20 b(it)f(is)i(set)e(to)g(a)h(non-zero)g(v)m(alue)h
-(b)o(y)e(suc)o(h)h(a)195 369 y(function,)12 b(directory)g(names)f(ha)o
+(b)o(y)e(suc)o(h)h(a)195 1480 y(function,)12 b(directory)g(names)f(ha)o
 (v)o(e)g(a)f(slash)i(app)q(ended)h(and)e(Readline)h(attempts)f(to)f
-(quote)h(com-)195 423 y(pleted)19 b(\014lenames)f(if)g(they)g(con)o
+(quote)h(com-)195 1535 y(pleted)19 b(\014lenames)f(if)g(they)g(con)o
 (tain)g(an)o(y)f(c)o(haracters)f(in)j Fs(rl_filename_quote_charact)o
-(ers)195 478 y Ft(and)c Fs(rl_filename_quoting_desired)d
-Ft(is)k(set)f(to)f(a)h(non-zero)g(v)m(alue.)1685 570
-y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 570 V
-25 w(\014lename)p 449 570 V 25 w(quoting)p 663 570 V
-26 w(desired)195 625 y Ft(Non-zero)14 b(means)g(that)f(the)i(results)f
-(of)g(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(quoted)f(using)h(double)g
-(quotes)195 680 y(\(or)20 b(an)i(application-sp)q(eci\014c)i(quoting)e
-(mec)o(hanism\))f(if)h(the)f(completed)i(\014lename)f(con)o(tains)195
-735 y(an)o(y)13 b(c)o(haracters)h(in)g Fs(rl_filename_quote_chars)p
-Ft(.)i(This)f(is)f Fn(always)k Ft(non-zero)c(when)g(comple-)195
-790 y(tion)g(is)g(attempted,)g(and)g(can)g(only)g(b)q(e)g(c)o(hanged)h
-(within)g(an)e(application-sp)q(eci)q(\014c)k(completion)195
-844 y(function.)i(The)11 b(quoting)g(is)g(e\013ected)f(via)h(a)f(call)i
-(to)e(the)h(function)g(p)q(oin)o(ted)g(to)f(b)o(y)h Fs(rl_filename_)195
-899 y(quoting_function)p Ft(.)1685 991 y([V)l(ariable])-1799
-b Fg(int)20 b Ff(rl)p 216 991 V 25 w(attempted)p 500
-991 V 25 w(completion)p 799 991 V 26 w(o)n(v)n(er)195
-1046 y Ft(If)47 b(an)g(application-sp)q(eci\014)q(c)j(completion)e
-(function)g(assigned)f(to)g Fs(rl_attempted_)195 1101
-y(completion_function)24 b Ft(sets)i(this)h(v)m(ariable)h(to)e(a)g
-(non-zero)h(v)m(alue,)j(Readline)e(will)g(not)195 1156
-y(p)q(erform)15 b(its)g(default)g(\014lename)h(completion)g(ev)o(en)f
-(if)g(the)g(application's)h(completion)g(function)195
-1210 y(returns)f(no)g(matc)o(hes.)20 b(It)15 b(should)h(b)q(e)g(set)f
-(only)h(b)o(y)f(an)g(application's)h(completion)h(function.)1685
-1303 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216
-1303 V 25 w(completion)p 515 1303 V 26 w(t)n(yp)r(e)195
-1357 y Ft(Set)e(to)e(a)i(c)o(haracter)f(describing)i(the)e(t)o(yp)q(e)h
-(of)f(completion)i(Readline)g(is)f(curren)o(tly)g(attempt-)195
-1412 y(ing;)g(see)f(the)f(description)i(of)f Fs
-(rl_complete_internal\(\))c Ft(\(see)k(Section)h(2.6.2)d([Completion)
-195 1467 y(F)l(unctions],)k(page)f(42\))g(for)f(the)i(list)g(of)f(c)o
-(haracters.)28 b(This)19 b(is)g(set)f(to)g(the)g(appropriate)h(v)m
-(alue)195 1522 y(b)q(efore)d(an)o(y)g(application-sp)q(eci\014c)j
-(completion)e(function)g(is)f(called,)h(allo)o(wing)g(suc)o(h)f
-(functions)195 1577 y(to)f(presen)o(t)g(the)g(same)g(in)o(terface)g(as)
-g Fs(rl_complete\(\))p Ft(.)1685 1669 y([V)l(ariable])-1799
-b Fg(int)20 b Ff(rl)p 216 1669 V 25 w(inhibit)p 404 1669
-V 28 w(completion)195 1724 y Ft(If)14 b(this)h(v)m(ariable)g(is)g
-(non-zero,)f(completion)i(is)e(inhibited.)22 b(The)15
-b(completion)g(c)o(haracter)e(will)j(b)q(e)195 1778 y(inserted)g(as)f
-(an)o(y)g(other)g(b)q(ound)h(to)e Fs(self-insert)p Ft(.)75
-1890 y Fh(2.6.4)30 b(A)21 b(Short)f(Completion)g(Example)137
-2012 y Ft(Here)11 b(is)f(a)g(small)h(application)h(demonstrating)e(the)
-g(use)h(of)e(the)i(GNU)f(Readline)h(library)l(.)19 b(It)11
-b(is)f(called)75 2067 y Fs(fileman)p Ft(,)17 b(and)h(the)g(source)g(co)
-q(de)g(resides)h(in)f(`)p Fs(examples/fileman.c)p Ft('.)25
-b(This)18 b(sample)g(application)75 2122 y(pro)o(vides)c(completion)g
-(of)e(command)h(names,)g(line)i(editing)g(features,)d(and)i(access)f
-(to)f(the)h(history)h(list.)p eop
+(ers)195 1590 y Ft(and)c Fs(rl_filename_quoting_desired)d
+Ft(is)k(set)f(to)f(a)h(non-zero)g(v)m(alue.)1685 1676
+y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 1676
+V 25 w(\014lename)p 449 1676 V 25 w(quoting)p 663 1676
+V 26 w(desired)195 1731 y Ft(Non-zero)14 b(means)g(that)f(the)i
+(results)f(of)g(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(quoted)f(using)h
+(double)g(quotes)195 1785 y(\(or)20 b(an)i(application-sp)q(eci\014c)i
+(quoting)e(mec)o(hanism\))f(if)h(the)f(completed)i(\014lename)f(con)o
+(tains)195 1840 y(an)o(y)13 b(c)o(haracters)h(in)g Fs
+(rl_filename_quote_chars)p Ft(.)i(This)f(is)f Fn(always)k
+Ft(non-zero)c(when)g(comple-)195 1895 y(tion)g(is)g(attempted,)g(and)g
+(can)g(only)g(b)q(e)g(c)o(hanged)h(within)g(an)e(application-sp)q(eci)q
+(\014c)k(completion)195 1950 y(function.)i(The)11 b(quoting)g(is)g
+(e\013ected)f(via)h(a)f(call)i(to)e(the)h(function)g(p)q(oin)o(ted)g
+(to)f(b)o(y)h Fs(rl_filename_)195 2005 y(quoting_function)p
+Ft(.)1685 2091 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p
+216 2091 V 25 w(attempted)p 500 2091 V 25 w(completion)p
+799 2091 V 26 w(o)n(v)n(er)195 2146 y Ft(If)47 b(an)g(application-sp)q
+(eci\014)q(c)j(completion)e(function)g(assigned)f(to)g
+Fs(rl_attempted_)195 2200 y(completion_function)24 b
+Ft(sets)i(this)h(v)m(ariable)h(to)e(a)g(non-zero)h(v)m(alue,)j
+(Readline)e(will)g(not)195 2255 y(p)q(erform)15 b(its)g(default)g
+(\014lename)h(completion)g(ev)o(en)f(if)g(the)g(application's)h
+(completion)g(function)195 2310 y(returns)f(no)g(matc)o(hes.)20
+b(It)15 b(should)h(b)q(e)g(set)f(only)h(b)o(y)f(an)g(application's)h
+(completion)h(function.)1685 2396 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(rl)p 216 2396 V 25 w(completion)p 515
+2396 V 26 w(t)n(yp)r(e)195 2451 y Ft(Set)e(to)e(a)i(c)o(haracter)f
+(describing)i(the)e(t)o(yp)q(e)h(of)f(completion)i(Readline)g(is)f
+(curren)o(tly)g(attempt-)195 2506 y(ing;)g(see)f(the)f(description)i
+(of)f Fs(rl_complete_internal\(\))c Ft(\(see)k(Section)h(2.6.2)d
+([Completion)195 2560 y(F)l(unctions],)k(page)f(42\))g(for)f(the)i
+(list)g(of)f(c)o(haracters.)28 b(This)19 b(is)g(set)f(to)g(the)g
+(appropriate)h(v)m(alue)195 2615 y(b)q(efore)d(an)o(y)g(application-sp)
+q(eci\014c)j(completion)e(function)g(is)f(called,)h(allo)o(wing)g(suc)o
+(h)f(functions)195 2670 y(to)f(presen)o(t)g(the)g(same)g(in)o(terface)g
+(as)g Fs(rl_complete\(\))p Ft(.)p eop
 %%Page: 47 51
 47 50 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(47)195 149 y Fd(/*)19 b(fileman.c)d(--)j(A)g(tiny)f
-(applicatio)o(n)e(which)i(demonstrat)o(es)e(how)j(to)f(use)h(the)254
-193 y(GNU)f(Readline)f(library.)36 b(This)18 b(applicatio)o(n)e
-(interactive)o(ly)g(allows)h(users)254 237 y(to)i(manipulat)o(e)d
-(files)i(and)h(their)e(modes.)h(*/)195 324 y(#include)f(<stdio.h)o(>)
-195 367 y(#include)g(<sys/typ)o(es.)o(h>)195 411 y(#include)g(<sys/fil)
-o(e.h)o(>)195 455 y(#include)g(<sys/sta)o(t.h)o(>)195
-498 y(#include)g(<sys/err)o(no.)o(h>)195 585 y(#include)g(<readlin)o
-(e/r)o(ea)o(dli)o(ne.)o(h>)195 629 y(#include)g(<readlin)o(e/h)o(is)o
-(tor)o(y.h)o(>)195 716 y(extern)g(char)h(*xmalloc)f(\(\);)195
-803 y(/*)i(The)f(names)g(of)h(functions)d(that)i(actually)f(do)h(the)h
-(manipulat)o(ion)o(.)d(*/)195 847 y(int)i(com_list)f(__P\(\(char)f
-(*\)\);)195 890 y(int)i(com_view)f(__P\(\(char)f(*\)\);)195
-934 y(int)i(com_rename)e(__P\(\(char)g(*\)\);)195 978
-y(int)i(com_stat)f(__P\(\(char)f(*\)\);)195 1021 y(int)i(com_pwd)f
-(__P\(\(char)f(*\)\);)195 1065 y(int)i(com_delete)e(__P\(\(char)g
-(*\)\);)195 1108 y(int)i(com_help)f(__P\(\(char)f(*\)\);)195
-1152 y(int)i(com_cd)g(__P\(\(char)e(*\)\);)195 1196 y(int)i(com_quit)f
-(__P\(\(char)f(*\)\);)195 1283 y(/*)j(A)g(structure)d(which)i(contains)
-e(information)g(on)j(the)f(commands)f(this)h(program)254
-1326 y(can)g(understand)o(.)f(*/)195 1413 y(typedef)g(struct)g({)234
-1457 y(char)h(*name;)g(/*)g(User)g(printable)f(name)h(of)h(the)f
-(function.)e(*/)234 1501 y(rl_icpfunc)o(_t)g(*func;)h(/*)i(Function)e
-(to)i(call)f(to)h(do)f(the)h(job.)f(*/)234 1544 y(char)g(*doc;)g(/*)h
-(Documenta)o(tio)o(n)d(for)j(this)f(function.)36 b(*/)195
-1588 y(})19 b(COMMAND;)195 1675 y(COMMAND)e(commands[)o(])g(=)i({)234
-1719 y({)g("cd",)f(com_cd,)f("Change)g(to)i(directory)d(DIR")i(},)234
-1762 y({)h("delete",)e(com_dele)o(te,)f("Delete)h(FILE")h(},)234
-1806 y({)h("help",)e(com_help,)f("Display)h(this)h(text")g(},)234
-1849 y({)h("?",)g(com_help)o(,)e("Synonym)f(for)j(`help'")e(},)234
-1893 y({)i("list",)e(com_list,)f("List)i(files)g(in)h(DIR")f(},)234
+(Readline)843 b(47)1685 149 y([V)l(ariable])-1799 b Fg(int)20
+b Ff(rl)p 216 149 18 3 v 25 w(inhibit)p 404 149 V 28
+w(completion)195 204 y Ft(If)14 b(this)h(v)m(ariable)g(is)g(non-zero,)f
+(completion)i(is)e(inhibited.)22 b(The)15 b(completion)g(c)o(haracter)e
+(will)j(b)q(e)195 259 y(inserted)g(as)f(an)o(y)g(other)g(b)q(ound)h(to)
+e Fs(self-insert)p Ft(.)75 371 y Fh(2.6.4)30 b(A)21 b(Short)f
+(Completion)g(Example)137 493 y Ft(Here)11 b(is)f(a)g(small)h
+(application)h(demonstrating)e(the)g(use)h(of)e(the)i(GNU)f(Readline)h
+(library)l(.)19 b(It)11 b(is)f(called)75 548 y Fs(fileman)p
+Ft(,)17 b(and)h(the)g(source)g(co)q(de)g(resides)h(in)f(`)p
+Fs(examples/fileman.c)p Ft('.)25 b(This)18 b(sample)g(application)75
+603 y(pro)o(vides)c(completion)g(of)e(command)h(names,)g(line)i
+(editing)g(features,)d(and)i(access)f(to)f(the)h(history)h(list.)p
+eop
+%%Page: 48 52
+48 51 bop 75 -58 a Ft(48)1299 b(GNU)15 b(Readline)h(Library)195
+149 y Fd(/*)j(fileman.c)d(--)j(A)g(tiny)f(applicatio)o(n)e(which)i
+(demonstrat)o(es)e(how)j(to)f(use)h(the)254 193 y(GNU)f(Readline)f
+(library.)36 b(This)18 b(applicatio)o(n)e(interactive)o(ly)g(allows)h
+(users)254 237 y(to)i(manipulat)o(e)d(files)i(and)h(their)e(modes.)h
+(*/)195 324 y(#include)f(<stdio.h)o(>)195 367 y(#include)g(<sys/typ)o
+(es.)o(h>)195 411 y(#include)g(<sys/fil)o(e.h)o(>)195
+455 y(#include)g(<sys/sta)o(t.h)o(>)195 498 y(#include)g(<sys/err)o
+(no.)o(h>)195 585 y(#include)g(<readlin)o(e/r)o(ea)o(dli)o(ne.)o(h>)195
+629 y(#include)g(<readlin)o(e/h)o(is)o(tor)o(y.h)o(>)195
+716 y(extern)g(char)h(*xmalloc)f(\(\);)195 803 y(/*)i(The)f(names)g(of)
+h(functions)d(that)i(actually)f(do)h(the)h(manipulat)o(ion)o(.)d(*/)195
+847 y(int)i(com_list)f(__P\(\(char)f(*\)\);)195 890 y(int)i(com_view)f
+(__P\(\(char)f(*\)\);)195 934 y(int)i(com_rename)e(__P\(\(char)g
+(*\)\);)195 978 y(int)i(com_stat)f(__P\(\(char)f(*\)\);)195
+1021 y(int)i(com_pwd)f(__P\(\(char)f(*\)\);)195 1065
+y(int)i(com_delete)e(__P\(\(char)g(*\)\);)195 1108 y(int)i(com_help)f
+(__P\(\(char)f(*\)\);)195 1152 y(int)i(com_cd)g(__P\(\(char)e(*\)\);)
+195 1196 y(int)i(com_quit)f(__P\(\(char)f(*\)\);)195
+1283 y(/*)j(A)g(structure)d(which)i(contains)e(information)g(on)j(the)f
+(commands)f(this)h(program)254 1326 y(can)g(understand)o(.)f(*/)195
+1413 y(typedef)g(struct)g({)234 1457 y(char)h(*name;)g(/*)g(User)g
+(printable)f(name)h(of)h(the)f(function.)e(*/)234 1501
+y(rl_icpfunc)o(_t)g(*func;)h(/*)i(Function)e(to)i(call)f(to)h(do)f(the)
+h(job.)f(*/)234 1544 y(char)g(*doc;)g(/*)h(Documenta)o(tio)o(n)d(for)j
+(this)f(function.)36 b(*/)195 1588 y(})19 b(COMMAND;)195
+1675 y(COMMAND)e(commands[)o(])g(=)i({)234 1719 y({)g("cd",)f(com_cd,)f
+("Change)g(to)i(directory)d(DIR")i(},)234 1762 y({)h("delete",)e
+(com_dele)o(te,)f("Delete)h(FILE")h(},)234 1806 y({)h("help",)e
+(com_help,)f("Display)h(this)h(text")g(},)234 1849 y({)h("?",)g
+(com_help)o(,)e("Synonym)f(for)j(`help'")e(},)234 1893
+y({)i("list",)e(com_list,)f("List)i(files)g(in)h(DIR")f(},)234
 1936 y({)h("ls",)f(com_list,)e("Synonym)h(for)h(`list'")f(},)234
 1980 y({)i("pwd",)f(com_pwd,)e("Print)i(the)g(current)f(working)g
 (directory)o(")g(},)234 2024 y({)i("quit",)e(com_quit,)f("Quit)i(using)
@@ -4507,37 +4565,38 @@ y(/*)j(The)f(name)g(of)h(this)f(program,)f(as)i(taken)e(from)h
 (argv[0].)f(*/)195 2547 y(char)h(*progname;)195 2634
 y(/*)h(When)f(non-zero,)e(this)i(means)g(the)g(user)g(is)h(done)f
 (using)g(this)g(program.)f(*/)p eop
-%%Page: 48 52
-48 51 bop 75 -58 a Ft(48)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Fd(int)i(done;)195 237 y(char)g(*)195 280 y(dupstr)f(\(s\))293
-324 y(int)i(s;)195 367 y({)234 411 y(char)f(*r;)234 498
-y(r)h(=)h(xmalloc)d(\(strlen)f(\(s\))j(+)g(1\);)234 542
-y(strcpy)f(\(r,)g(s\);)234 585 y(return)g(\(r\);)195
-629 y(})195 716 y(main)g(\(argc,)f(argv\))293 760 y(int)i(argc;)293
-803 y(char)f(**argv;)195 847 y({)234 890 y(char)g(*line,)g(*s;)234
-978 y(progname)f(=)i(argv[0];)234 1065 y(initialize)o(_re)o(ad)o(lin)o
-(e)d(\(\);)j(/*)g(Bind)f(our)g(completer.)e(*/)234 1152
-y(/*)j(Loop)f(reading)f(and)h(executing)f(lines)g(until)h(the)g(user)h
-(quits.)e(*/)234 1196 y(for)i(\()g(;)g(done)f(==)h(0;)g(\))273
-1239 y({)313 1283 y(line)f(=)h(readline)d(\("FileMan:)g("\);)313
-1370 y(if)j(\(!line\))352 1413 y(break;)313 1501 y(/*)g(Remove)e
-(leading)g(and)h(trailing)f(whitespac)o(e)f(from)j(the)f(line.)372
-1544 y(Then,)f(if)i(there)f(is)h(anything)d(left,)i(add)g(it)h(to)g
-(the)f(history)f(list)372 1588 y(and)h(execute)f(it.)h(*/)313
-1631 y(s)h(=)g(stripwhite)d(\(line\);)313 1719 y(if)j(\(*s\))352
-1762 y({)391 1806 y(add_histor)o(y)d(\(s\);)391 1849
-y(execute_li)o(ne)g(\(s\);)352 1893 y(})313 1980 y(free)i(\(line\);)273
-2024 y(})234 2067 y(exit)g(\(0\);)195 2111 y(})195 2198
-y(/*)h(Execute)e(a)i(command)e(line.)h(*/)195 2242 y(int)195
-2285 y(execute_li)o(ne)e(\(line\))293 2329 y(char)i(*line;)195
-2372 y({)234 2416 y(register)f(int)h(i;)234 2460 y(COMMAND)f(*command;)
-234 2503 y(char)h(*word;)234 2590 y(/*)h(Isolate)e(the)h(command)f
-(word.)h(*/)234 2634 y(i)h(=)h(0;)p eop
 %%Page: 49 53
 49 52 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(49)234 149 y Fd(while)18 b(\(line[i])e(&&)j(whitespace)
-d(\(line[i]\)\))273 193 y(i++;)234 237 y(word)i(=)i(line)e(+)h(i;)234
-324 y(while)f(\(line[i])e(&&)j(!whitespac)o(e)e(\(line[i]\))o(\))273
+(Readline)843 b(49)195 149 y Fd(int)18 b(done;)195 237
+y(char)g(*)195 280 y(dupstr)f(\(s\))293 324 y(int)i(s;)195
+367 y({)234 411 y(char)f(*r;)234 498 y(r)h(=)h(xmalloc)d(\(strlen)f
+(\(s\))j(+)g(1\);)234 542 y(strcpy)f(\(r,)g(s\);)234
+585 y(return)g(\(r\);)195 629 y(})195 716 y(main)g(\(argc,)f(argv\))293
+760 y(int)i(argc;)293 803 y(char)f(**argv;)195 847 y({)234
+890 y(char)g(*line,)g(*s;)234 978 y(progname)f(=)i(argv[0];)234
+1065 y(initialize)o(_re)o(ad)o(lin)o(e)d(\(\);)j(/*)g(Bind)f(our)g
+(completer.)e(*/)234 1152 y(/*)j(Loop)f(reading)f(and)h(executing)f
+(lines)g(until)h(the)g(user)h(quits.)e(*/)234 1196 y(for)i(\()g(;)g
+(done)f(==)h(0;)g(\))273 1239 y({)313 1283 y(line)f(=)h(readline)d
+(\("FileMan:)g("\);)313 1370 y(if)j(\(!line\))352 1413
+y(break;)313 1501 y(/*)g(Remove)e(leading)g(and)h(trailing)f(whitespac)
+o(e)f(from)j(the)f(line.)372 1544 y(Then,)f(if)i(there)f(is)h(anything)
+d(left,)i(add)g(it)h(to)g(the)f(history)f(list)372 1588
+y(and)h(execute)f(it.)h(*/)313 1631 y(s)h(=)g(stripwhite)d(\(line\);)
+313 1719 y(if)j(\(*s\))352 1762 y({)391 1806 y(add_histor)o(y)d(\(s\);)
+391 1849 y(execute_li)o(ne)g(\(s\);)352 1893 y(})313
+1980 y(free)i(\(line\);)273 2024 y(})234 2067 y(exit)g(\(0\);)195
+2111 y(})195 2198 y(/*)h(Execute)e(a)i(command)e(line.)h(*/)195
+2242 y(int)195 2285 y(execute_li)o(ne)e(\(line\))293
+2329 y(char)i(*line;)195 2372 y({)234 2416 y(register)f(int)h(i;)234
+2460 y(COMMAND)f(*command;)234 2503 y(char)h(*word;)234
+2590 y(/*)h(Isolate)e(the)h(command)f(word.)h(*/)234
+2634 y(i)h(=)h(0;)p eop
+%%Page: 50 54
+50 53 bop 75 -58 a Ft(50)1299 b(GNU)15 b(Readline)h(Library)234
+149 y Fd(while)i(\(line[i])e(&&)j(whitespace)d(\(line[i]\)\))273
+193 y(i++;)234 237 y(word)i(=)i(line)e(+)h(i;)234 324
+y(while)f(\(line[i])e(&&)j(!whitespac)o(e)e(\(line[i]\))o(\))273
 367 y(i++;)234 455 y(if)i(\(line[i]\))273 498 y(line[i++])e(=)i('\\0';)
 234 585 y(command)e(=)i(find_comma)o(nd)d(\(word\);)234
 672 y(if)j(\(!command\))273 716 y({)313 760 y(fprintf)e(\(stderr,)f
@@ -4565,43 +4624,44 @@ y(char)i(*string;)195 2242 y({)234 2285 y(register)f(char)h(*s,)g(*t;)
 273 2416 y(;)234 2503 y(if)h(\(*s)g(==)f(0\))273 2547
 y(return)g(\(s\);)234 2634 y(t)h(=)h(s)f(+)g(strlen)e(\(s\))i(-)g(1;)p
 eop
-%%Page: 50 54
-50 53 bop 75 -58 a Ft(50)1299 b(GNU)15 b(Readline)h(Library)234
-149 y Fd(while)i(\(t)h(>)g(s)g(&&)g(whitespace)d(\(*t\)\))273
-193 y(t--;)234 237 y(*++t)i(=)i('\\0';)234 324 y(return)e(s;)195
-367 y(})195 455 y(/*)h(*********)o(***)o(**)o(***)o(**)o(***)o(***)o
-(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)
-o(***)o(***)d(*/)195 498 y(/*)1294 b(*/)195 542 y(/*)352
-b(Interface)16 b(to)j(Readline)e(Completio)o(n)311 b(*/)195
-585 y(/*)1294 b(*/)195 629 y(/*)19 b(*********)o(***)o(**)o(***)o(**)o
-(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o
-(**)o(***)o(**)o(***)o(***)d(*/)195 716 y(char)i(*command_g)o(en)o(era)
-o(to)o(r)f(__P\(\(cons)o(t)f(char)j(*,)f(int\)\);)195
-760 y(char)g(**fileman_)o(co)o(mpl)o(et)o(ion)e(__P\(\(cons)o(t)h(char)
-h(*,)h(int,)f(int\)\);)195 847 y(/*)h(Tell)f(the)g(GNU)h(Readline)d
-(library)h(how)i(to)g(complete)o(.)36 b(We)19 b(want)f(to)h(try)g(to)
-254 890 y(complete)d(on)j(command)e(names)h(if)h(this)f(is)h(the)f
-(first)g(word)g(in)h(the)f(line,)g(or)254 934 y(on)h(filenames)d(if)j
-(not.)f(*/)195 978 y(initialize)o(_r)o(ead)o(li)o(ne)e(\(\))195
-1021 y({)234 1065 y(/*)j(Allow)f(condition)o(al)e(parsing)h(of)i(the)f
-(~/.inputrc)e(file.)i(*/)234 1108 y(rl_readlin)o(e_n)o(am)o(e)f(=)i
-("FileMan")o(;)234 1196 y(/*)g(Tell)f(the)h(complete)o(r)e(that)h(we)h
-(want)f(a)h(crack)f(first.)f(*/)234 1239 y(rl_attempt)o(ed_)o(co)o(mpl)
-o(et)o(ion)o(_fu)o(nc)o(tio)o(n)f(=)k(fileman_c)o(om)o(ple)o(tio)o(n;)
-195 1283 y(})195 1370 y(/*)f(Attempt)e(to)i(complete)d(on)j(the)f
-(contents)f(of)i(TEXT.)37 b(START)18 b(and)g(END)254
-1413 y(bound)g(the)g(region)f(of)i(rl_line_bu)o(ff)o(er)d(that)i
-(contains)f(the)h(word)g(to)254 1457 y(complete.)36 b(TEXT)18
-b(is)g(the)h(word)f(to)h(complete.)36 b(We)18 b(can)h(use)f(the)h
-(entire)254 1501 y(contents)d(of)j(rl_line_bu)o(ffe)o(r)d(in)j(case)f
-(we)h(want)f(to)h(do)g(some)f(simple)254 1544 y(parsing.)36
-b(Returnthe)16 b(array)i(of)h(matches,)d(or)j(NULL)f(if)h(there)f
-(aren't)f(any.)h(*/)195 1588 y(char)g(**)195 1631 y(fileman_co)o(mp)o
-(let)o(io)o(n)f(\(text,)g(start,)g(end\))293 1675 y(const)h(char)g
-(*text;)293 1719 y(int)h(start,)e(end;)195 1762 y({)234
-1806 y(char)h(**matches;)234 1893 y(matches)f(=)i(\(char)f(**\)NULL;)
-234 1980 y(/*)h(If)g(this)f(word)g(is)h(at)g(the)f(start)g(of)h(the)f
-(line,)g(then)g(it)h(is)g(a)g(command)293 2024 y(to)g(complete.)36
+%%Page: 51 55
+51 54 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(51)234 149 y Fd(while)18 b(\(t)h(>)g(s)g(&&)g
+(whitespace)d(\(*t\)\))273 193 y(t--;)234 237 y(*++t)i(=)i('\\0';)234
+324 y(return)e(s;)195 367 y(})195 455 y(/*)h(*********)o(***)o(**)o
+(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o
+(***)o(***)o(**)o(***)o(**)o(***)o(***)d(*/)195 498 y(/*)1294
+b(*/)195 542 y(/*)352 b(Interface)16 b(to)j(Readline)e(Completio)o(n)
+311 b(*/)195 585 y(/*)1294 b(*/)195 629 y(/*)19 b(*********)o(***)o(**)
+o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o
+(***)o(***)o(**)o(***)o(**)o(***)o(***)d(*/)195 716 y(char)i
+(*command_g)o(en)o(era)o(to)o(r)f(__P\(\(cons)o(t)f(char)j(*,)f
+(int\)\);)195 760 y(char)g(**fileman_)o(co)o(mpl)o(et)o(ion)e
+(__P\(\(cons)o(t)h(char)h(*,)h(int,)f(int\)\);)195 847
+y(/*)h(Tell)f(the)g(GNU)h(Readline)d(library)h(how)i(to)g(complete)o(.)
+36 b(We)19 b(want)f(to)h(try)g(to)254 890 y(complete)d(on)j(command)e
+(names)h(if)h(this)f(is)h(the)f(first)g(word)g(in)h(the)f(line,)g(or)
+254 934 y(on)h(filenames)d(if)j(not.)f(*/)195 978 y(initialize)o(_r)o
+(ead)o(li)o(ne)e(\(\))195 1021 y({)234 1065 y(/*)j(Allow)f(condition)o
+(al)e(parsing)h(of)i(the)f(~/.inputrc)e(file.)i(*/)234
+1108 y(rl_readlin)o(e_n)o(am)o(e)f(=)i("FileMan")o(;)234
+1196 y(/*)g(Tell)f(the)h(complete)o(r)e(that)h(we)h(want)f(a)h(crack)f
+(first.)f(*/)234 1239 y(rl_attempt)o(ed_)o(co)o(mpl)o(et)o(ion)o(_fu)o
+(nc)o(tio)o(n)f(=)k(fileman_c)o(om)o(ple)o(tio)o(n;)195
+1283 y(})195 1370 y(/*)f(Attempt)e(to)i(complete)d(on)j(the)f(contents)
+f(of)i(TEXT.)37 b(START)18 b(and)g(END)254 1413 y(bound)g(the)g(region)
+f(of)i(rl_line_bu)o(ff)o(er)d(that)i(contains)f(the)h(word)g(to)254
+1457 y(complete.)36 b(TEXT)18 b(is)g(the)h(word)f(to)h(complete.)36
+b(We)18 b(can)h(use)f(the)h(entire)254 1501 y(contents)d(of)j
+(rl_line_bu)o(ffe)o(r)d(in)j(case)f(we)h(want)f(to)h(do)g(some)f
+(simple)254 1544 y(parsing.)36 b(Returnthe)16 b(array)i(of)h(matches,)d
+(or)j(NULL)f(if)h(there)f(aren't)f(any.)h(*/)195 1588
+y(char)g(**)195 1631 y(fileman_co)o(mp)o(let)o(io)o(n)f(\(text,)g
+(start,)g(end\))293 1675 y(const)h(char)g(*text;)293
+1719 y(int)h(start,)e(end;)195 1762 y({)234 1806 y(char)h(**matches;)
+234 1893 y(matches)f(=)i(\(char)f(**\)NULL;)234 1980
+y(/*)h(If)g(this)f(word)g(is)h(at)g(the)f(start)g(of)h(the)f(line,)g
+(then)g(it)h(is)g(a)g(command)293 2024 y(to)g(complete.)36
 b(Otherwise)16 b(it)j(is)f(the)h(name)f(of)h(a)g(file)f(in)h(the)f
 (current)293 2067 y(directory.)e(*/)234 2111 y(if)j(\(start)e(==)i(0\))
 273 2154 y(matches)e(=)j(rl_compl)o(eti)o(on_)o(ma)o(tch)o(es)c
@@ -4614,14 +4674,14 @@ b(lets)g(us)254 2416 y(know)g(whether)f(to)i(start)e(from)h(scratch;)f
 2503 y(char)g(*)195 2547 y(command_ge)o(ne)o(rat)o(or)e(\(text,)h
 (state\))293 2590 y(const)h(char)g(*text;)293 2634 y(int)h(state;)p
 eop
-%%Page: 51 55
-51 54 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(51)195 149 y Fd({)234 193 y(static)18
-b(int)g(list_inde)o(x,)e(len;)234 237 y(char)i(*name;)234
-324 y(/*)h(If)g(this)f(is)h(a)g(new)f(word)h(to)f(complete,)f(initiali)
-o(ze)f(now.)38 b(This)293 367 y(includes)17 b(saving)g(the)h(length)g
-(of)g(TEXT)h(for)f(efficiency)o(,)e(and)293 411 y(initializi)o(ng)g
-(the)i(index)g(variable)f(to)i(0.)f(*/)234 455 y(if)h(\(!state\))273
+%%Page: 52 56
+52 55 bop 75 -58 a Ft(52)1299 b(GNU)15 b(Readline)h(Library)195
+149 y Fd({)234 193 y(static)i(int)g(list_inde)o(x,)e(len;)234
+237 y(char)i(*name;)234 324 y(/*)h(If)g(this)f(is)h(a)g(new)f(word)h
+(to)f(complete,)f(initiali)o(ze)f(now.)38 b(This)293
+367 y(includes)17 b(saving)g(the)h(length)g(of)g(TEXT)h(for)f
+(efficiency)o(,)e(and)293 411 y(initializi)o(ng)g(the)i(index)g
+(variable)f(to)i(0.)f(*/)234 455 y(if)h(\(!state\))273
 498 y({)313 542 y(list_inde)o(x)d(=)k(0;)313 585 y(len)e(=)h(strlen)f
 (\(text\);)273 629 y(})234 716 y(/*)h(Return)e(the)i(next)f(name)g
 (which)g(partially)e(matches)h(from)h(the)293 760 y(command)f(list.)h
@@ -4650,17 +4710,17 @@ b(This)18 b(is)h(for)g(the)f(LIST,)g(VIEW)g(and)g(RENAME)254
 (arg\)\))273 2416 y(return)h(1;)234 2503 y(sprintf)f(\(syscom,)g("more)
 g(\045s",)h(arg\);)234 2547 y(return)g(\(system)e(\(syscom\)\);)195
 2590 y(})p eop
-%%Page: 52 56
-52 55 bop 75 -58 a Ft(52)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Fd(com_rename)g(\(arg\))293 193 y(char)i(*arg;)195
-237 y({)234 280 y(too_danger)o(ous)e(\("rename")o(\);)234
-324 y(return)i(\(1\);)195 367 y(})195 455 y(com_stat)f(\(arg\))293
-498 y(char)h(*arg;)195 542 y({)234 585 y(struct)g(stat)g(finfo;)234
-672 y(if)h(\(!valid_ar)o(gu)o(men)o(t)d(\("stat",)h(arg\)\))273
-716 y(return)h(\(1\);)234 803 y(if)h(\(stat)f(\(arg,)f(&finfo\))g(==)i
-(-1\))273 847 y({)313 890 y(perror)e(\(arg\);)313 934
-y(return)g(\(1\);)273 978 y(})234 1065 y(printf)h(\("Statis)o(tic)o(s)e
-(for)j(`\045s':\\n",)d(arg\);)234 1152 y(printf)i(\("\045s)g(has)g
+%%Page: 53 57
+53 56 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(53)195 149 y Fd(com_rename)16 b(\(arg\))293
+193 y(char)i(*arg;)195 237 y({)234 280 y(too_danger)o(ous)e(\("rename")
+o(\);)234 324 y(return)i(\(1\);)195 367 y(})195 455 y(com_stat)f
+(\(arg\))293 498 y(char)h(*arg;)195 542 y({)234 585 y(struct)g(stat)g
+(finfo;)234 672 y(if)h(\(!valid_ar)o(gu)o(men)o(t)d(\("stat",)h
+(arg\)\))273 716 y(return)h(\(1\);)234 803 y(if)h(\(stat)f(\(arg,)f
+(&finfo\))g(==)i(-1\))273 847 y({)313 890 y(perror)e(\(arg\);)313
+934 y(return)g(\(1\);)273 978 y(})234 1065 y(printf)h(\("Statis)o(tic)o
+(s)e(for)j(`\045s':\\n",)d(arg\);)234 1152 y(printf)i(\("\045s)g(has)g
 (\045d)h(link\045s,)e(and)h(is)h(\045d)g(byte\045s)e(in)i(length.\\n")o
 (,)d(arg,)391 1196 y(finfo.st_n)o(li)o(nk,)391 1239 y(\(finfo.st_)o(nl)
 o(ink)g(==)j(1\))g(?)g("")g(:)g("s",)391 1283 y(finfo.st_s)o(iz)o(e,)
@@ -4683,17 +4743,16 @@ y(})195 1936 y(/*)h(Print)f(out)g(help)g(for)g(ARG,)h(or)f(for)h(all)f
 2460 y(printf)e(\("\045s\\t\\t\045s.)o(\\n)o(",)f(commands[i)o(].n)o
 (am)o(e,)g(commands[i)o(].d)o(oc\))o(;)391 2503 y(printed++;)352
 2547 y(})273 2590 y(})p eop
-%%Page: 53 57
-53 56 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
-(Readline)843 b(53)234 149 y Fd(if)19 b(\(!printed\))273
-193 y({)313 237 y(printf)e(\("No)h(commands)f(match)g(`\045s'.)38
-b(Possibil)o(tie)o(s)17 b(are:\\n",)f(arg\);)313 324
-y(for)i(\(i)h(=)g(0;)g(commands[i)o(].)o(nam)o(e;)d(i++\))352
-367 y({)391 411 y(/*)j(Print)f(in)g(six)h(columns.)d(*/)391
-455 y(if)j(\(printed)d(==)j(6\))430 498 y({)470 542 y(printed)d(=)k(0;)
-470 585 y(printf)d(\("\\n"\);)430 629 y(})391 716 y(printf)g
-(\("\045s\\t",)g(commands[)o(i].)o(nam)o(e\))o(;)391
-760 y(printed++;)352 803 y(})313 890 y(if)i(\(printed)o(\))352
+%%Page: 54 58
+54 57 bop 75 -58 a Ft(54)1299 b(GNU)15 b(Readline)h(Library)234
+149 y Fd(if)j(\(!printed\))273 193 y({)313 237 y(printf)e(\("No)h
+(commands)f(match)g(`\045s'.)38 b(Possibil)o(tie)o(s)17
+b(are:\\n",)f(arg\);)313 324 y(for)i(\(i)h(=)g(0;)g(commands[i)o(].)o
+(nam)o(e;)d(i++\))352 367 y({)391 411 y(/*)j(Print)f(in)g(six)h
+(columns.)d(*/)391 455 y(if)j(\(printed)d(==)j(6\))430
+498 y({)470 542 y(printed)d(=)k(0;)470 585 y(printf)d(\("\\n"\);)430
+629 y(})391 716 y(printf)g(\("\045s\\t",)g(commands[)o(i].)o(nam)o(e\))
+o(;)391 760 y(printed++;)352 803 y(})313 890 y(if)i(\(printed)o(\))352
 934 y(printf)e(\("\\n"\);)273 978 y(})234 1021 y(return)h(\(0\);)195
 1065 y(})195 1152 y(/*)h(Change)e(to)i(the)f(directory)f(ARG.)h(*/)195
 1196 y(com_cd)f(\(arg\))293 1239 y(char)h(*arg;)195 1283
@@ -4711,14 +4770,15 @@ y({)234 1326 y(if)h(\(chdir)e(\(arg\))h(==)h(-1\))273
 y(})195 2503 y(/*)h(The)f(user)g(wishes)g(to)g(quit)h(using)e(this)h
 (program.)36 b(Just)19 b(set)f(DONE)254 2547 y(non-zero.)e(*/)195
 2590 y(com_quit)h(\(arg\))293 2634 y(char)h(*arg;)p eop
-%%Page: 54 58
-54 57 bop 75 -58 a Ft(54)1299 b(GNU)15 b(Readline)h(Library)195
-149 y Fd({)234 193 y(done)i(=)i(1;)234 237 y(return)e(\(0\);)195
-280 y(})195 367 y(/*)h(Function)d(which)i(tells)g(you)g(that)g(you)h
-(can't)e(do)i(this.)f(*/)195 411 y(too_danger)o(ou)o(s)f(\(caller\))293
-455 y(char)h(*caller;)195 498 y({)234 542 y(fprintf)f(\(stderr,)411
-585 y("\045s:)h(Too)g(dangerous)e(for)j(me)g(to)g(distribu)o(te.)o
-(\\n")411 629 y(caller\);)234 672 y(fprintf)e(\(stderr,)g("Write)g(it)i
+%%Page: 55 59
+55 58 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(55)195 149 y Fd({)234 193 y(done)18 b(=)i(1;)234
+237 y(return)e(\(0\);)195 280 y(})195 367 y(/*)h(Function)d(which)i
+(tells)g(you)g(that)g(you)h(can't)e(do)i(this.)f(*/)195
+411 y(too_danger)o(ou)o(s)f(\(caller\))293 455 y(char)h(*caller;)195
+498 y({)234 542 y(fprintf)f(\(stderr,)411 585 y("\045s:)h(Too)g
+(dangerous)e(for)j(me)g(to)g(distribu)o(te.)o(\\n")411
+629 y(caller\);)234 672 y(fprintf)e(\(stderr,)g("Write)g(it)i
 (yourself.)o(\\n")o(\);)195 716 y(})195 803 y(/*)g(Return)e(non-zero)g
 (if)h(ARG)h(is)g(a)g(valid)f(argument)e(for)j(CALLER,)254
 847 y(else)f(print)g(an)g(error)g(message)f(and)h(return)g(zero.)f(*/)
@@ -4728,9 +4788,12 @@ h(!*arg\))273 1108 y({)313 1152 y(fprintf)e(\(stderr,)f("\045s:)i
 (Argument)f(required.)o(\\n)o(",)f(caller\);)313 1196
 y(return)h(\(0\);)273 1239 y(})234 1326 y(return)h(\(1\);)195
 1370 y(})p eop
-%%Page: 55 59
-55 58 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
-(ual)1053 b(55)75 149 y Fp(App)r(endix)25 b(A)20 b(Cop)n(ying)26
+%%Page: 56 60
+56 59 bop 75 -58 a Ft(56)1299 b(GNU)15 b(Readline)h(Library)p
+eop
+%%Page: 57 61
+57 60 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(57)75 149 y Fp(App)r(endix)25 b(A)20 b(Cop)n(ying)26
 b(This)g(Man)n(ual)75 345 y Fr(A.1)33 b(GNU)21 b(F)-6
 b(ree)23 b(Do)r(cumen)n(tation)g(License)698 455 y Ft(V)l(ersion)16
 b(1.2,)e(No)o(v)o(em)o(b)q(er)h(2002)195 526 y(Cop)o(yrigh)o(t)421
@@ -4802,8 +4865,8 @@ h(ma)o(y)e(not)h(explain)h(an)o(y)f(mathematics.\))18
 b(The)165 2670 y(relationship)d(could)g(b)q(e)f(a)g(matter)e(of)i
 (historical)g(connection)h(with)f(the)g(sub)s(ject)f(or)h(with)g
 (related)p eop
-%%Page: 56 60
-56 59 bop 75 -58 a Ft(56)1299 b(GNU)15 b(Readline)h(Library)165
+%%Page: 58 62
+58 61 bop 75 -58 a Ft(58)1299 b(GNU)15 b(Readline)h(Library)165
 149 y(matters,)h(or)g(of)g(legal,)i(commercial,)g(philosophical,)i
 (ethical)e(or)e(p)q(olitical)j(p)q(osition)f(regarding)165
 204 y(them.)165 275 y(The)13 b(\\In)o(v)m(arian)o(t)g(Sections")g(are)g
@@ -4893,9 +4956,9 @@ k(are)d(considered)j(to)165 2560 y(b)q(e)g(included)j(b)o(y)d
 d(ha)o(v)o(e)h(is)h(v)o(oid)g(and)g(has)f(no)165 2670
 y(e\013ect)d(on)g(the)g(meaning)h(of)f(this)h(License.)p
 eop
-%%Page: 57 61
-57 60 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
-(ual)1053 b(57)100 149 y(2.)29 b(VERBA)l(TIM)15 b(COPYING)165
+%%Page: 59 63
+59 62 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(59)100 149 y(2.)29 b(VERBA)l(TIM)15 b(COPYING)165
 222 y(Y)l(ou)k(ma)o(y)g(cop)o(y)f(and)i(distribute)g(the)f(Do)q(cumen)o
 (t)g(in)h(an)o(y)f(medium,)h(either)g(commercially)g(or)165
 277 y(noncommercially)l(,)k(pro)o(vided)e(that)f(this)h(License,)i(the)
@@ -4977,8 +5040,8 @@ q(cumen)o(t.)100 2378 y(4.)29 b(MODIFICA)l(TIONS)165
 (er)h(p)q(ossesses)h(a)e(cop)o(y)h(of)165 2670 y(it.)j(In)c(addition,)g
 (y)o(ou)f(m)o(ust)f(do)h(these)h(things)g(in)g(the)f(Mo)q(di\014ed)h(V)
 l(ersion:)p eop
-%%Page: 58 62
-58 61 bop 75 -58 a Ft(58)1299 b(GNU)15 b(Readline)h(Library)178
+%%Page: 60 64
+60 63 bop 75 -58 a Ft(60)1299 b(GNU)15 b(Readline)h(Library)178
 149 y(A.)30 b(Use)17 b(in)g(the)f(Title)h(P)o(age)f(\(and)g(on)h(the)f
 (co)o(v)o(ers,)g(if)g(an)o(y\))g(a)g(title)h(distinct)h(from)d(that)h
 (of)g(the)255 204 y(Do)q(cumen)o(t,)h(and)g(from)f(those)h(of)f
@@ -5057,9 +5120,9 @@ h(Section.)177 2540 y(O.)30 b(Preserv)o(e)15 b(an)o(y)g(W)l(arran)o(t)o
 (that)d(qualify)165 2670 y(as)e(Secondary)g(Sections)h(and)f(con)o
 (tain)g(no)g(material)g(copied)h(from)e(the)h(Do)q(cumen)o(t,)g(y)o(ou)
 f(ma)o(y)h(at)p eop
-%%Page: 59 63
-59 62 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
-(ual)1053 b(59)165 149 y(y)o(our)16 b(option)g(designate)h(some)f(or)f
+%%Page: 61 65
+61 64 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(61)165 149 y(y)o(our)16 b(option)g(designate)h(some)f(or)f
 (all)i(of)f(these)h(sections)f(as)g(in)o(v)m(arian)o(t.)24
 b(T)l(o)15 b(do)i(this,)f(add)g(their)165 204 y(titles)i(to)f(the)h
 (list)h(of)e(In)o(v)m(arian)o(t)h(Sections)h(in)f(the)g(Mo)q(di\014ed)h
@@ -5142,8 +5205,8 @@ g(in)g(all)165 2440 y(other)c(resp)q(ects.)165 2506 y(Y)l(ou)h(ma)o(y)f
 2615 y(do)q(cumen)o(t,)g(and)f(follo)o(w)g(this)h(License)h(in)f(all)h
 (other)d(resp)q(ects)i(regarding)g(v)o(erbatim)f(cop)o(ying)g(of)165
 2670 y(that)e(do)q(cumen)o(t.)p eop
-%%Page: 60 64
-60 63 bop 75 -58 a Ft(60)1299 b(GNU)15 b(Readline)h(Library)100
+%%Page: 62 66
+62 65 bop 75 -58 a Ft(62)1299 b(GNU)15 b(Readline)h(Library)100
 149 y(7.)29 b(A)o(GGREGA)l(TION)14 b(WITH)i(INDEPENDENT)e(W)o(ORKS)165
 214 y(A)g(compilation)h(of)f(the)g(Do)q(cumen)o(t)g(or)f(its)i(deriv)m
 (ativ)o(es)g(with)f(other)g(separate)f(and)i(indep)q(enden)o(t)165
@@ -5227,9 +5290,9 @@ b(If)17 b(the)g(Do)q(cumen)o(t)f(do)q(es)g(not)g(sp)q(ecify)i(a)e(v)o
 (ma)o(y)f(c)o(ho)q(ose)i(an)o(y)e(v)o(ersion)i(ev)o(er)f(published)j
 (\(not)c(as)h(a)g(draft\))f(b)o(y)i(the)f(F)l(ree)165
 2660 y(Soft)o(w)o(are)d(F)l(oundation.)p eop
-%%Page: 61 65
-61 64 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
-(ual)1053 b(61)75 149 y Fh(A.1.1)30 b(ADDENDUM:)22 b(Ho)n(w)f(to)f(use)
+%%Page: 63 67
+63 66 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(63)75 149 y Fh(A.1.1)30 b(ADDENDUM:)22 b(Ho)n(w)f(to)f(use)
 h(this)f(License)h(for)f(y)n(our)h(do)r(cumen)n(ts)137
 271 y Ft(T)l(o)14 b(use)g(this)g(License)h(in)g(a)e(do)q(cumen)o(t)h(y)
 o(ou)f(ha)o(v)o(e)h(written,)f(include)j(a)d(cop)o(y)h(of)f(the)h
@@ -5262,11 +5325,11 @@ Fc(list)h(their)g(titles)p Fd(,)f(with)273 860 y(the)i(Front-Cov)o(er)d
 (license,)k(suc)o(h)e(as)g(the)f(GNU)75 1196 y(General)16
 b(Public)h(License,)f(to)f(p)q(ermit)h(their)f(use)h(in)g(free)f(soft)o
 (w)o(are.)p eop
-%%Page: 62 66
-62 65 bop 75 -58 a Ft(62)1299 b(GNU)15 b(Readline)h(Library)p
+%%Page: 64 68
+64 67 bop 75 -58 a Ft(64)1299 b(GNU)15 b(Readline)h(Library)p
 eop
-%%Page: 63 67
-63 66 bop 75 -58 a Ft(Concept)15 b(Index)1466 b(63)75
+%%Page: 65 69
+65 68 bop 75 -58 a Ft(Concept)15 b(Index)1466 b(65)75
 149 y Fp(Concept)27 b(Index)75 319 y Fr(A)75 380 y Fb(application)q
 (-sp)q(eci)q(\014c)16 b(completion)f(functions)5 b Fa(.)j(.)e(.)g(.)g
 (.)g(.)h(.)17 b Fb(41)75 511 y Fr(C)75 571 y Fb(command)d(editing)e
@@ -5276,7 +5339,7 @@ Fb(1)75 703 y Fr(E)75 763 y Fb(editing)15 b(command)f(lines)f
 Fa(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
 g(.)g(.)g(.)h(.)f(.)g(.)g(.)24 b Fb(1)75 895 y Fr(F)75
 955 y Fb(FDL,)13 b(GNU)f(F)m(ree)h(Do)q(cumen)o(tation)j(License)6
-b Fa(.)h(.)f(.)g(.)g(.)g(.)h(.)18 b Fb(55)75 1086 y Fr(I)75
+b Fa(.)h(.)f(.)g(.)g(.)g(.)h(.)18 b Fb(57)75 1086 y Fr(I)75
 1147 y Fb(initiali)q(zati)q(on)e(\014le,)e(readline)t
 Fa(.)8 b(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)17 b Fb(4)75 1192 y(in)o(teraction,)e(readline)5
@@ -5301,12 +5364,12 @@ Fb(5)1012 1131 y Fr(Y)1012 1192 y Fb(y)o(anking)e(text)t
 Fa(.)7 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)17
 b Fb(2)p eop
-%%Page: 64 68
-64 67 bop 75 -58 a Ft(64)1299 b(GNU)15 b(Readline)h(Library)p
+%%Page: 66 70
+66 69 bop 75 -58 a Ft(66)1299 b(GNU)15 b(Readline)h(Library)p
 eop
-%%Page: 65 69
-65 68 bop 75 -58 a Ft(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
-b(65)75 149 y Fp(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26
+%%Page: 67 71
+67 70 bop 75 -58 a Ft(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
+b(67)75 149 y Fp(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26
 b(Index)p 80 305 21 3 v 75 366 a Fd(_rl_digit_)o(p)7
 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
@@ -5491,8 +5554,8 @@ b Fb(14)1012 2626 y Fd(non-increme)o(nt)o(al-)o(re)o(ver)o(se)o(-se)o
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
 (.)20 b Fb(14)p eop
-%%Page: 66 70
-66 69 bop 75 -58 a Ft(66)1299 b(GNU)15 b(Readline)h(Library)75
+%%Page: 68 72
+68 71 bop 75 -58 a Ft(68)1299 b(GNU)15 b(Readline)h(Library)75
 149 y Fr(O)75 209 y Fb(output-meta)5 b Fa(.)i(.)f(.)h(.)f(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
 g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Fb(7)75 253
@@ -5604,352 +5667,363 @@ b Fb(45)75 2670 y Fd(rl_complet)o(io)o(n_d)o(is)o(pla)o(y_m)o(at)o(che)
 o(s_)o(hoo)o(k)9 b Fa(.)d(.)g(.)g(.)g(.)g(.)h(.)24 b
 Fb(44)1012 149 y Fd(rl_completi)o(on)o(_en)o(tr)o(y_f)o(un)o(cti)o(on)s
 Fa(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)17 b Fb(42,)c(43)1012
-194 y Fd(rl_completi)o(on)o(_ma)o(rk)o(_sy)o(ml)o(ink)o(_di)o(rs)t
-Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 b Fb(45)1012
-238 y Fd(rl_completi)o(on)o(_ma)o(tc)o(hes)8 b Fa(.)f(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
-b Fb(42)1012 282 y Fd(rl_completi)o(on)o(_mo)o(de)t Fa(.)t(.)6
-b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(42)1012 326 y Fd(rl_completi)o(on)o(_qu)
-o(er)o(y_i)o(te)o(ms)9 b Fa(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)23 b Fb(45)1012 371 y Fd(rl_completi)o(on)o(_su)
-o(pp)o(res)o(s_)o(app)o(end)5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)20 b Fb(45)1012 415 y Fd(rl_completi)o(on)o(_ty)o(pe)t
+194 y Fd(rl_completi)o(on)o(_fo)o(un)o(d_q)o(uo)o(te)c
+Fa(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)23
+b Fb(46)1012 238 y Fd(rl_completi)o(on)o(_ma)o(rk)o(_sy)o(ml)o(ink)o
+(_di)o(rs)t Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18
+b Fb(46)1012 282 y Fd(rl_completi)o(on)o(_ma)o(tc)o(hes)8
+b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)h(.)25 b Fb(42)1012 326 y Fd(rl_completi)o(on)o(_mo)o(de)t
 Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(46)1012 459 y
-Fd(rl_copy_key)o(ma)o(p)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)21 b Fb(28)1012 503 y Fd(rl_copy_tex)o(t)6 b Fa(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(34)1012 547 y
-Fd(rl_crlf)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(33)1012 592 y Fd(rl_delete_t)o(ex)o(t)8
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(42)1012 371 y
+Fd(rl_completi)o(on)o(_qu)o(er)o(y_i)o(te)o(ms)9 b Fa(.)s(.)d(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)23
+b Fb(45)1012 415 y Fd(rl_completi)o(on)o(_qu)o(ot)o(e_c)o(ha)o(rac)o
+(ter)5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)20
+b Fb(45)1012 459 y Fd(rl_completi)o(on)o(_su)o(pp)o(res)o(s_)o(app)o
+(end)5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)20
+b Fb(45)1012 503 y Fd(rl_completi)o(on)o(_su)o(pp)o(res)o(s_)o(quo)o
+(te)7 b Fa(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20
+b Fb(46)1012 547 y Fd(rl_completi)o(on)o(_ty)o(pe)t Fa(.)t(.)6
+b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(46)1012 592 y Fd(rl_completi)o(on)o(_wo)
+o(rd)o(_br)o(ea)o(k_h)o(ook)5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)20 b Fb(45)1012 636 y Fd(rl_copy_key)o(ma)o(p)8
+b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b
+Fb(28)1012 680 y Fd(rl_copy_tex)o(t)6 b Fa(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(34)1012 724 y Fd(rl_crlf)t
+Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)h(.)17 b Fb(33)1012 769 y Fd(rl_delete_t)o(ex)o(t)8
 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b
-Fb(34)1012 636 y Fd(rl_deprep_t)o(er)o(m_f)o(un)o(cti)o(on)7
+Fb(34)1012 813 y Fd(rl_deprep_t)o(er)o(m_f)o(un)o(cti)o(on)7
 b Fa(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)24 b Fb(26)1012 680 y Fd(rl_deprep_t)o(er)o(min)o(al)t
+g(.)g(.)24 b Fb(26)1012 857 y Fd(rl_deprep_t)o(er)o(min)o(al)t
 Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(35)1012 724 y
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(35)1012 901 y
 Fd(rl_ding)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(36)1012 769 y Fd(rl_director)o(y_)o
+f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(36)1012 945 y Fd(rl_director)o(y_)o
 (com)o(pl)o(eti)o(on)o(_ho)o(ok)7 b Fa(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)20 b Fb(44)1012 813 y Fd(rl_discard_)o(ke)o(yma)
+(.)g(.)g(.)g(.)g(.)h(.)20 b Fb(44)1012 990 y Fd(rl_discard_)o(ke)o(yma)
 o(p)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(29)1012
-857 y Fd(rl_dispatch)o(in)o(g)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)21 b Fb(24)1012 901 y Fd(rl_display_)o(ma)o(tch)o(_l)o(ist)8
-b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)25 b Fb(36)1012 945 y Fd(rl_do_undo)8
+1034 y Fd(rl_dispatch)o(in)o(g)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)h(.)21 b Fb(24)1012 1078 y Fd(rl_display_)o(ma)o(tch)o(_l)o
+(ist)8 b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)25 b Fb(36)1012 1122 y Fd(rl_do_undo)8
 b Fa(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24
-b Fb(32)1012 990 y Fd(rl_done)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(24)1012
-1034 y Fd(rl_editing_)o(mo)o(de)7 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g
+b Fb(32)1012 1167 y Fd(rl_done)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(24)1012
+1211 y Fd(rl_editing_)o(mo)o(de)7 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)21 b Fb(28)1012 1078 y Fd(rl_end)5 b Fa(.)t(.)h(.)g(.)h(.)f(.)g
+g(.)g(.)21 b Fb(28)1012 1255 y Fd(rl_end)5 b Fa(.)t(.)h(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18
-b Fb(24)1012 1122 y Fd(rl_end_undo)o(_g)o(rou)o(p)6 b
+b Fb(24)1012 1299 y Fd(rl_end_undo)o(_g)o(rou)o(p)6 b
 Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(32)1012 1167
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(32)1012 1343
 y Fd(rl_erase_em)o(pt)o(y_l)o(in)o(e)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18
-b Fb(24)1012 1211 y Fd(rl_event_ho)o(ok)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g
+b Fb(24)1012 1388 y Fd(rl_event_ho)o(ok)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)22 b Fb(26)1012 1255 y Fd(rl_execute_)o(ne)o
+g(.)g(.)g(.)h(.)f(.)g(.)22 b Fb(26)1012 1432 y Fd(rl_execute_)o(ne)o
 (xt)7 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Fb(34)1012 1299 y Fd(rl_executin)o(g_)o(key)o(ma)o(p)t
+b Fb(35)1012 1476 y Fd(rl_executin)o(g_)o(key)o(ma)o(p)t
 Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Fb(26)1012 1343 y Fd(rl_executin)o(g_)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Fb(26)1012 1520 y Fd(rl_executin)o(g_)
 o(mac)o(ro)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(26)1012
-1388 y Fd(rl_expand_p)o(ro)o(mpt)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+1564 y Fd(rl_expand_p)o(ro)o(mpt)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)20 b Fb(33)1012 1432 y Fd(rl_explicit)o(_a)o(rg)7
+g(.)20 b Fb(33)1012 1609 y Fd(rl_explicit)o(_a)o(rg)7
 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(27)1012
-1476 y Fd(rl_extend_l)o(in)o(e_b)o(uf)o(fer)8 b Fa(.)f(.)f(.)g(.)g(.)g
+1653 y Fd(rl_extend_l)o(in)o(e_b)o(uf)o(fer)8 b Fa(.)f(.)f(.)g(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
-b Fb(35)1012 1520 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(des)o
+b Fb(35)1012 1697 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(des)o
 (ire)o(d)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
-b Fb(46)1012 1564 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(fun)o
+b Fb(46)1012 1741 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(fun)o
 (cti)o(on)t Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18
-b Fb(43)1012 1609 y Fd(rl_filename)o(_d)o(equ)o(ot)o(ing)o(_f)o(unc)o
+b Fb(43)1012 1786 y Fd(rl_filename)o(_d)o(equ)o(ot)o(ing)o(_f)o(unc)o
 (tio)o(n)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
-b Fb(43)1012 1653 y Fd(rl_filename)o(_q)o(uot)o(e_)o(cha)o(ra)o(cte)o
+b Fb(43)1012 1830 y Fd(rl_filename)o(_q)o(uot)o(e_)o(cha)o(ra)o(cte)o
 (rs)7 b Fa(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20
-b Fb(45)1012 1697 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_d)o(es)o(ire)o
+b Fb(45)1012 1874 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_d)o(es)o(ire)o
 (d)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21
-b Fb(46)1012 1741 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_f)o(un)o(cti)o
+b Fb(46)1012 1918 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_f)o(un)o(cti)o
 (on)7 b Fa(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20
-b Fb(43)1012 1786 y Fd(rl_forced_u)o(pd)o(ate)o(_d)o(isp)o(la)o(y)7
+b Fb(43)1012 1962 y Fd(rl_forced_u)o(pd)o(ate)o(_d)o(isp)o(la)o(y)7
 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)23 b Fb(33)1012 1830 y Fd(rl_free_lin)o(e_)o(sta)o(te)t
+f(.)23 b Fb(33)1012 2007 y Fd(rl_free_lin)o(e_)o(sta)o(te)t
 Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(40)1012 1874
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(40)1012 2051
 y Fd(rl_free_und)o(o_)o(lis)o(t)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-19 b Fb(32)1012 1918 y Fd(rl_function)o(_d)o(ump)o(er)t
+19 b Fb(32)1012 2095 y Fd(rl_function)o(_d)o(ump)o(er)t
 Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(31)1012 1962
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(31)1012 2139
 y Fd(rl_function)o(_o)o(f_k)o(ey)o(seq)8 b Fa(.)f(.)f(.)g(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
-b Fb(31)1012 2007 y Fd(rl_funmap_n)o(am)o(es)7 b Fa(.)s(.)f(.)g(.)h(.)f
+b Fb(31)1012 2184 y Fd(rl_funmap_n)o(am)o(es)7 b Fa(.)s(.)f(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)21 b Fb(31)1012 2051 y Fd(rl_generic_)o(bi)o(nd)7
+h(.)f(.)g(.)g(.)g(.)21 b Fb(31)1012 2228 y Fd(rl_generic_)o(bi)o(nd)7
 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(30)1012
-2095 y Fd(rl_get_keym)o(ap)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h
+2272 y Fd(rl_get_keym)o(ap)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)22 b Fb(29)1012 2139 y Fd(rl_get_keym)o(ap)o(_by)o(_n)o
+h(.)f(.)g(.)22 b Fb(29)1012 2316 y Fd(rl_get_keym)o(ap)o(_by)o(_n)o
 (ame)8 b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)25 b Fb(29)1012 2184 y Fd(rl_get_keym)o(ap)o
+(.)g(.)g(.)g(.)g(.)h(.)25 b Fb(29)1012 2360 y Fd(rl_get_keym)o(ap)o
 (_na)o(me)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
 g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(29)1012
-2228 y Fd(rl_get_scre)o(en)o(_si)o(ze)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)
+2405 y Fd(rl_get_scre)o(en)o(_si)o(ze)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
-(.)19 b Fb(40)1012 2272 y Fd(rl_get_term)o(ca)o(p)8 b
+(.)19 b Fb(40)1012 2449 y Fd(rl_get_term)o(ca)o(p)8 b
 Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b Fb(37)1012
-2316 y Fd(rl_getc)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+2493 y Fd(rl_getc)t Fa(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(34)1012 2360 y
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b Fb(34)1012 2537 y
 Fd(rl_getc_fun)o(ct)o(ion)6 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
 g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20
-b Fb(26)1012 2405 y Fd(rl_gnu_read)o(li)o(ne_)o(p)6 b
+b Fb(26)1012 2582 y Fd(rl_gnu_read)o(li)o(ne_)o(p)6 b
 Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(25)1012 2449
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Fb(25)1012 2626
 y Fd(rl_ignore_c)o(om)o(ple)o(ti)o(on_)o(du)o(pli)o(cat)o(es)t
-Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 b Fb(45)1012
-2493 y Fd(rl_ignore_s)o(om)o(e_c)o(om)o(ple)o(ti)o(ons)o(_fu)o(nc)o
-(tio)o(n)8 b Fa(.)e(.)g(.)g(.)g(.)h(.)24 b Fb(44)1012
-2537 y Fd(rl_inhibit_)o(co)o(mpl)o(et)o(ion)8 b Fa(.)f(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
-b Fb(46)1012 2582 y Fd(rl_initiali)o(ze)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)22 b Fb(35)1012 2626 y Fd(rl_insert_c)o(om)o
-(ple)o(ti)o(ons)8 b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25 b Fb(42)1012 2670
-y Fd(rl_insert_t)o(ex)o(t)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)21 b Fb(34)p eop
-%%Page: 67 71
-67 70 bop 75 -58 a Ft(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
-b(67)75 149 y Fd(rl_instrea)o(m)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 b Fb(46)1012
+2670 y Fd(rl_ignore_s)o(om)o(e_c)o(om)o(ple)o(ti)o(ons)o(_fu)o(nc)o
+(tio)o(n)8 b Fa(.)e(.)g(.)g(.)g(.)h(.)24 b Fb(44)p eop
+%%Page: 69 73
+69 72 bop 75 -58 a Ft(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
+b(69)75 149 y Fd(rl_inhibit)o(_c)o(omp)o(le)o(tio)o(n)9
+b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)25 b Fb(47)75 193 y Fd(rl_initial)o(iz)o(e)9
+b Fa(.)s(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22
+b Fb(36)75 237 y Fd(rl_insert_)o(co)o(mpl)o(et)o(ion)o(s)9
+b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)25 b Fb(42)75 280 y Fd(rl_insert_)o(te)o(xt)8
+b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b
+Fb(34)75 324 y Fd(rl_instrea)o(m)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(25)75 194 y Fd(rl_invokin)o(g_)o(key)o
+g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(25)75 368 y Fd(rl_invokin)o(g_)o(key)o
 (se)o(qs)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(31)75
-238 y Fd(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)8
+411 y Fd(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)8
 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21
-b Fb(31)75 282 y Fd(rl_kill_te)o(xt)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+b Fb(31)75 455 y Fd(rl_kill_te)o(xt)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)22 b Fb(34)75 326 y Fd(rl_last_fu)o(nc)6
+g(.)g(.)g(.)g(.)h(.)f(.)22 b Fb(34)75 499 y Fd(rl_last_fu)o(nc)6
 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Fb(25)75 371 y Fd(rl_library)o(_v)o(ers)o(io)o(n)5
+b Fb(25)75 542 y Fd(rl_library)o(_v)o(ers)o(io)o(n)5
 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Fb(25)75 415 y Fd(rl_line_bu)o(ff)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Fb(25)75 586 y Fd(rl_line_bu)o(ff)
 o(er)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Fb(24)75 459 y Fd(rl_list_fu)o(nm)o(ap_)o(na)o(mes)s
+b Fb(24)75 629 y Fd(rl_list_fu)o(nm)o(ap_)o(na)o(mes)s
 Fa(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)16 b Fb(31)75 503 y Fd(rl_macro_b)o(in)o(d)9
+f(.)g(.)g(.)g(.)g(.)h(.)16 b Fb(31)75 673 y Fd(rl_macro_b)o(in)o(d)9
 b Fa(.)s(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22
-b Fb(36)75 548 y Fd(rl_macro_d)o(um)o(per)6 b Fa(.)t(.)g(.)g(.)g(.)g(.)
+b Fb(36)75 717 y Fd(rl_macro_d)o(um)o(per)6 b Fa(.)t(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)20 b Fb(36)75 592 y Fd(rl_make_ba)o(re)o(_ke)o(ym)o
+(.)g(.)h(.)f(.)g(.)20 b Fb(36)75 760 y Fd(rl_make_ba)o(re)o(_ke)o(ym)o
 (ap)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(28)75 636
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(28)75 804
 y Fd(rl_make_ke)o(ym)o(ap)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)21 b Fb(28)75 680 y Fd(rl_mark)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.)
+(.)g(.)21 b Fb(28)75 848 y Fd(rl_mark)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17
-b Fb(24)75 725 y Fd(rl_message)7 b Fa(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+b Fb(24)75 891 y Fd(rl_message)7 b Fa(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 b Fb(33)75 769 y Fd(rl_modifyi)o(ng)6
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 b Fb(33)75 935 y Fd(rl_modifyi)o(ng)6
 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Fb(32)75 813 y Fd(rl_named_f)o(un)o(cti)o(on)5 b Fa(.)s(.)i(.)f(.)g
+b Fb(32)75 979 y Fd(rl_named_f)o(un)o(cti)o(on)5 b Fa(.)s(.)i(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)19 b Fb(31)75 858 y Fd(rl_num_cha)o(rs)o(_to)o(_r)o
+g(.)g(.)g(.)g(.)19 b Fb(31)75 1022 y Fd(rl_num_cha)o(rs)o(_to)o(_r)o
 (ead)s Fa(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)16 b Fb(24)75 902 y Fd(rl_numeric)o(_a)o
-(rg)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)16 b Fb(24)75 1066 y Fd(rl_numeric)o(_a)
+o(rg)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21
-b Fb(28)75 946 y Fd(rl_on_new_)o(li)o(ne)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)21 b Fb(33)75 990 y Fd(rl_on_new_)o(li)o(ne_)o(wi)o
-(th_)o(pro)o(mp)o(t)8 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)h(.)f(.)21 b Fb(33)75 1035 y Fd(rl_outstre)o(am)6
+b Fb(28)75 1109 y Fd(rl_on_new_)o(li)o(ne)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(33)75 1153 y Fd(rl_on_new_)o(li)o(ne_)o
+(wi)o(th_)o(pro)o(mp)o(t)8 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)21 b Fb(33)75 1197 y Fd(rl_outstre)o(am)6
 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22
-b Fb(25)75 1079 y Fd(rl_parse_a)o(nd)o(_bi)o(nd)5 b Fa(.)s(.)i(.)f(.)g
+b Fb(25)75 1240 y Fd(rl_parse_a)o(nd)o(_bi)o(nd)5 b Fa(.)s(.)i(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)19 b Fb(30)75 1123 y Fd(rl_pending)o(_i)o(npu)o(t)6
+g(.)g(.)g(.)g(.)19 b Fb(30)75 1284 y Fd(rl_pending)o(_i)o(npu)o(t)6
 b Fa(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Fb(24)75
-1167 y Fd(rl_point)s Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+1328 y Fd(rl_point)s Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Fb(24)75 1212 y Fd(rl_possibl)o(e_)o
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Fb(24)75 1371 y Fd(rl_possibl)o(e_)o
 (com)o(pl)o(eti)o(ons)7 b Fa(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(42)75 1256 y
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(42)75 1415 y
 Fd(rl_pre_inp)o(ut)o(_ho)o(ok)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Fb(25)75 1300 y Fd(rl_prep_te)o(rm)o(_fu)o(nc)o(tio)o(n)9
+b Fb(25)75 1459 y Fd(rl_prep_te)o(rm)o(_fu)o(nc)o(tio)o(n)9
 b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Fb(26)75 1344 y Fd(rl_prep_te)o(rm)o(ina)o(l)6
+f(.)g(.)g(.)g(.)25 b Fb(26)75 1502 y Fd(rl_prep_te)o(rm)o(ina)o(l)6
 b Fa(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
 g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Fb(35)75
-1389 y Fd(rl_prompt)8 b Fa(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+1546 y Fd(rl_prompt)8 b Fa(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)24 b Fb(25)75 1433 y Fd(rl_push_ma)o(cr)o(o_i)o(np)
+g(.)g(.)g(.)g(.)h(.)24 b Fb(25)75 1589 y Fd(rl_push_ma)o(cr)o(o_i)o(np)
 o(ut)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(34)75 1477
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(34)75 1633
 y Fd(rl_read_in)o(it)o(_fi)o(le)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-19 b Fb(31)75 1521 y Fd(rl_read_ke)o(y)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g
+19 b Fb(31)75 1677 y Fd(rl_read_ke)o(y)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(34)75 1566 y
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(34)75 1720 y
 Fd(rl_readlin)o(e_)o(nam)o(e)6 b Fa(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
-19 b Fb(25)75 1610 y Fd(rl_readlin)o(e_)o(sta)o(te)5
+19 b Fb(25)75 1764 y Fd(rl_readlin)o(e_)o(sta)o(te)5
 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Fb(26)75 1654
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Fb(26)75 1808
 y Fd(rl_readlin)o(e_)o(ver)o(si)o(on)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17
-b Fb(25)75 1698 y Fd(rl_redispl)o(ay)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+b Fb(25)75 1851 y Fd(rl_redispl)o(ay)6 b Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)22 b Fb(32)75 1743 y Fd(rl_redispl)o(ay)o(_fu)o
+g(.)g(.)g(.)g(.)h(.)f(.)22 b Fb(32)75 1895 y Fd(rl_redispl)o(ay)o(_fu)o
 (nc)o(tio)o(n)9 b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Fb(26)75 1787 y
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Fb(26)75 1939 y
 Fd(rl_replace)o(_l)o(ine)6 b Fa(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-20 b Fb(35)75 1831 y Fd(rl_reset_a)o(ft)o(er_)o(si)o(gna)o(l)9
+20 b Fb(35)75 1982 y Fd(rl_reset_a)o(ft)o(er_)o(si)o(gna)o(l)9
 b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)25 b Fb(40)75 1875 y Fd(rl_reset_l)o(in)o(e_s)o(ta)o
+f(.)g(.)g(.)g(.)25 b Fb(40)75 2026 y Fd(rl_reset_l)o(in)o(e_s)o(ta)o
 (te)t Fa(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(33)75 1920
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Fb(33)75 2069
 y Fd(rl_reset_t)o(er)o(min)o(al)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-19 b Fb(35)75 1964 y Fd(rl_resize_)o(te)o(rmi)o(na)o(l)5
+19 b Fb(35)75 2113 y Fd(rl_resize_)o(te)o(rmi)o(na)o(l)5
 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Fb(40)75 2008 y
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Fb(40)75 2157 y
 Fd(rl_restore)o(_p)o(rom)o(pt)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Fb(33)75 2052 y Fd(rl_save_pr)o(om)o(pt)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)
+b Fb(33)75 2200 y Fd(rl_save_pr)o(om)o(pt)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(33)75 2097 y Fd(rl_set_key)7
+(.)h(.)f(.)g(.)g(.)g(.)21 b Fb(33)75 2244 y Fd(rl_set_key)7
 b Fa(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
 g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
-b Fb(30)75 2141 y Fd(rl_set_key)o(bo)o(ard)o(_i)o(npu)o(t_t)o(im)o(eou)
+b Fb(30)75 2288 y Fd(rl_set_key)o(bo)o(ard)o(_i)o(npu)o(t_t)o(im)o(eou)
 o(t)6 b Fa(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
-b Fb(35)75 2185 y Fd(rl_set_key)o(ma)o(p)9 b Fa(.)s(.)d(.)g(.)g(.)h(.)f
+b Fb(35)75 2331 y Fd(rl_set_key)o(ma)o(p)9 b Fa(.)s(.)d(.)g(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)22 b Fb(29)75 2229 y Fd(rl_set_par)o(en)o(_bl)o
+h(.)f(.)g(.)g(.)g(.)g(.)22 b Fb(29)75 2375 y Fd(rl_set_par)o(en)o(_bl)o
 (in)o(k_t)o(ime)o(ou)o(t)8 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)21 b Fb(37)75 2274 y Fd(rl_set_pro)o(mp)o(t)9
+(.)g(.)g(.)g(.)h(.)f(.)21 b Fb(37)75 2419 y Fd(rl_set_pro)o(mp)o(t)9
 b Fa(.)s(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22
-b Fb(34)75 2318 y Fd(rl_set_scr)o(ee)o(n_s)o(iz)o(e)5
-b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Fb(40)1012 149 y
-Fd(rl_set_sign)o(al)o(s)8 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)21 b Fb(41)1012 193 y Fd(rl_show_cha)o(r)6 b Fa(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(33)1012 237 y
-Fd(rl_special_)o(pr)o(efi)o(xe)o(s)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18
-b Fb(45)1012 280 y Fd(rl_startup_)o(ho)o(ok)7 b Fa(.)s(.)f(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)21 b Fb(25)1012 324 y Fd(rl_stuff_ch)o(ar)8
-b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Fb(34)1012 367 y Fd(rl_terminal)o(_n)o(ame)6 b Fa(.)s(.)g(.)g(.)g(.)h
+b Fb(34)1012 149 y Fd(rl_set_scre)o(en)o(_si)o(ze)t Fa(.)t(.)6
+b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)19 b Fb(40)1012 193 y Fd(rl_set_sign)o(al)o(s)8
+b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b
+Fb(41)1012 237 y Fd(rl_show_cha)o(r)6 b Fa(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)23 b Fb(33)1012 281 y Fd(rl_special_)o(pr)o
+(efi)o(xe)o(s)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Fb(45)1012
+325 y Fd(rl_startup_)o(ho)o(ok)7 b Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)21 b Fb(25)1012 368 y Fd(rl_stuff_ch)o(ar)8 b
+Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
+b Fb(34)1012 412 y Fd(rl_terminal)o(_n)o(ame)6 b Fa(.)s(.)g(.)g(.)g(.)h
 (.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)20 b Fb(25)1012 411 y Fd(rl_tty_set_)o(de)o(fau)o(lt)o
+h(.)f(.)g(.)g(.)20 b Fb(25)1012 456 y Fd(rl_tty_set_)o(de)o(fau)o(lt)o
 (_bi)o(nd)o(ing)o(s)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)21 b Fb(35)1012 455 y Fd(rl_tty_unse)o(t_)o(def)o(au)o
+(.)h(.)f(.)g(.)21 b Fb(35)1012 500 y Fd(rl_tty_unse)o(t_)o(def)o(au)o
 (lt_)o(bi)o(ndi)o(ngs)5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)20 b Fb(35)1012 498 y Fd(rl_unbind_c)o(om)o(man)o(d_)o(in_)o
+g(.)g(.)20 b Fb(35)1012 544 y Fd(rl_unbind_c)o(om)o(man)o(d_)o(in_)o
 (ma)o(p)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)23 b Fb(30)1012 542 y Fd(rl_unbind_f)o(un)o(cti)o(on)o
+(.)g(.)h(.)f(.)23 b Fb(30)1012 587 y Fd(rl_unbind_f)o(un)o(cti)o(on)o
 (_in)o(_m)o(ap)9 b Fa(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)23 b Fb(30)1012 585 y Fd(rl_unbind_k)o(ey)8
+(.)g(.)g(.)g(.)g(.)23 b Fb(30)1012 631 y Fd(rl_unbind_k)o(ey)8
 b Fa(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
 g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22
-b Fb(30)1012 629 y Fd(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)s
+b Fb(30)1012 675 y Fd(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)s
 Fa(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
-g(.)g(.)g(.)h(.)f(.)g(.)17 b Fb(30)1012 673 y Fd(rl_username)o(_c)o
+g(.)g(.)g(.)h(.)f(.)g(.)17 b Fb(30)1012 719 y Fd(rl_username)o(_c)o
 (omp)o(le)o(tio)o(n_)o(fun)o(cti)o(on)t Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)18 b Fb(43)1012 716 y Fd(rl_variable)o(_b)o(ind)6
+g(.)h(.)f(.)g(.)18 b Fb(43)1012 763 y Fd(rl_variable)o(_b)o(ind)6
 b Fa(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Fb(37)1012
-760 y Fd(rl_variable)o(_d)o(ump)o(er)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f
+806 y Fd(rl_variable)o(_d)o(ump)o(er)t Fa(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-19 b Fb(37)1012 886 y Fr(S)1012 944 y Fd(self-insert)9
+19 b Fb(37)1012 933 y Fr(S)1012 992 y Fd(self-insert)9
 b(\(a,)j(b,)g(A,)g(1,)g(!,)g(...)o(\))6 b Fa(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 987 y Fd(set-mark)10
+h(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 1035 y Fd(set-mark)10
 b(\(C-@\))g Fa(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
-b Fb(18)1012 1031 y(sho)o(w-all-if-am)o(bigu)q(ous)14
+b Fb(18)1012 1079 y(sho)o(w-all-if-am)o(bigu)q(ous)14
 b Fa(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(7)1012 1074
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(7)1012 1123
 y(sho)o(w-all-if-unmo)q(di)q(\014ed)7 b Fa(.)i(.)d(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
-19 b Fb(7)1012 1118 y Fd(start-kbd-m)o(ac)o(ro)9 b(\(C-x)j(\(\))c
+19 b Fb(7)1012 1167 y Fd(start-kbd-m)o(ac)o(ro)9 b(\(C-x)j(\(\))c
 Fa(.)d(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)22 b Fb(18)1012 1238 y Fr(T)1012 1296 y Fd(tab-insert)9
-b(\(M-)1281 1294 y Fk(h)p 1292 1268 74 2 v 1292 1296
-a Fj(T)m(AB)p 1292 1304 V 1364 1294 a Fk(i)1379 1296
+(.)g(.)g(.)22 b Fb(18)1012 1288 y Fr(T)1012 1347 y Fd(tab-insert)9
+b(\(M-)1281 1345 y Fk(h)p 1292 1319 74 2 v 1292 1347
+a Fj(T)m(AB)p 1292 1354 V 1364 1345 a Fk(i)1379 1347
 y Fd(\))e Fa(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Fb(15)1012 1340
+f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Fb(15)1012 1391
 y Fd(tilde-expan)o(d)10 b(\(M-~\))f Fa(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22
-b Fb(18)1012 1384 y Fd(transpose-c)o(ha)o(rs)9 b(\(C-t\))d
+b Fb(18)1012 1434 y Fd(transpose-c)o(ha)o(rs)9 b(\(C-t\))d
 Fa(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 1427 y Fd(transpose-w)o(or)o(ds)9
+(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 1478 y Fd(transpose-w)o(or)o(ds)9
 b(\(M-t\))d Fa(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 1553 y
-Fr(U)1012 1611 y Fd(undo)12 b(\(C-_)f(or)h(C-x)g(C-u\))c
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 1605 y
+Fr(U)1012 1663 y Fd(undo)12 b(\(C-_)f(or)h(C-x)g(C-u\))c
 Fa(.)t(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)h(.)f(.)g(.)g(.)21 b Fb(18)1012 1655 y Fd(universal-a)o(rg)o
+(.)g(.)h(.)f(.)g(.)g(.)21 b Fb(18)1012 1707 y Fd(universal-a)o(rg)o
 (ume)o(nt)9 b(\(\))d Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Fb(17)1012
-1698 y Fd(unix-line-d)o(is)o(car)o(d)10 b(\(C-u\))5 b
-Fa(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)18 b Fb(16)1012 1742 y Fd(unix-word-r)o(ub)o(out)9
-b(\(C-w\))d Fa(.)t(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Fb(16)1012 1785 y Fd(upcase-word)9
-b(\(M-u\))e Fa(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Fb(15)1012
-1911 y Fr(V)1012 1969 y Fd(vi-editing-)o(mo)o(de)9 b(\(M-C-j\))c
-Fa(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
-(.)h(.)f(.)18 b Fb(19)1012 2013 y(visible-stats)c Fa(.)6
-b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
-(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
-b Fb(7)1012 2129 y Fr(Y)1012 2187 y Fd(yank)12 b(\(C-y\))5
+1751 y Fd(unix-filena)o(me)o(-ru)o(bo)o(ut)9 b(\(\))c
+Fa(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)18 b Fb(16)1012 1795 y Fd(unix-line-d)o(is)o(car)o(d)10
+b(\(C-u\))5 b Fa(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)h(.)f(.)18 b Fb(16)1012 1839 y Fd(unix-word-r)o(ub)o
+(out)9 b(\(C-w\))d Fa(.)t(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Fb(16)1012 1882
+y Fd(upcase-word)9 b(\(M-u\))e Fa(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23
+b Fb(15)1012 2009 y Fr(V)1012 2068 y Fd(vi-editing-)o(mo)o(de)9
+b(\(M-C-j\))c Fa(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)h(.)f(.)18 b Fb(19)1012 2111 y(visible-stats)c
+Fa(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
+b Fb(7)1012 2229 y Fr(Y)1012 2287 y Fd(yank)12 b(\(C-y\))5
 b Fa(.)t(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19
-b Fb(16)1012 2231 y Fd(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))c
+b Fb(17)1012 2331 y Fd(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))c
 Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
-b Fb(14)1012 2274 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))d
+b Fb(14)1012 2375 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))d
 Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)h(.)20 b Fb(14)1012 2318 y Fd(yank-pop)10
+(.)g(.)g(.)g(.)g(.)h(.)20 b Fb(14)1012 2419 y Fd(yank-pop)10
 b(\(M-y\))g Fa(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25
 b Fb(17)p eop
-%%Page: 68 72
-68 71 bop 75 -58 a Ft(68)1299 b(GNU)15 b(Readline)h(Library)p
+%%Page: 70 74
+70 73 bop 75 -58 a Ft(70)1299 b(GNU)15 b(Readline)h(Library)p
 eop
 %%Trailer
 end
index b54c096..b5c2d1c 100644 (file)
 @xrdef{Completion Variables-pg}{43}
 @xrdef{Completion Variables-snt}{Section@tie 2.6.3}
 @xrdef{A Short Completion Example-title}{A Short Completion Example}
-@xrdef{A Short Completion Example-pg}{46}
+@xrdef{A Short Completion Example-pg}{47}
 @xrdef{A Short Completion Example-snt}{Section@tie 2.6.4}
 @xrdef{Copying This Manual-title}{Copying This Manual}
-@xrdef{Copying This Manual-pg}{55}
+@xrdef{Copying This Manual-pg}{57}
 @xrdef{Copying This Manual-snt}{Appendix@tie @char65{}}
 @xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
-@xrdef{GNU Free Documentation License-pg}{55}
+@xrdef{GNU Free Documentation License-pg}{57}
 @xrdef{GNU Free Documentation License-snt}{Section@tie @char65.1}
 @xrdef{Concept Index-title}{Concept Index}
-@xrdef{Concept Index-pg}{63}
+@xrdef{Concept Index-pg}{65}
 @xrdef{Concept Index-snt}{}
 @xrdef{Function and Variable Index-title}{Function and Variable Index}
-@xrdef{Function and Variable Index-pg}{65}
+@xrdef{Function and Variable Index-pg}{67}
 @xrdef{Function and Variable Index-snt}{}
index 8b16582..30f7d90 100644 (file)
@@ -9,4 +9,4 @@
 \entry{variables, readline}{5}{variables, readline}
 \entry{readline, function}{21}{readline, function}
 \entry{application-specific completion functions}{41}{application-specific completion functions}
-\entry{FDL, GNU Free Documentation License}{55}{FDL, GNU Free Documentation License}
+\entry{FDL, GNU Free Documentation License}{57}{FDL, GNU Free Documentation License}
index f4ec8c7..380e334 100644 (file)
@@ -5,7 +5,7 @@
 \initial {E}
 \entry {editing command lines}{1}
 \initial {F}
-\entry {FDL, GNU Free Documentation License}{55}
+\entry {FDL, GNU Free Documentation License}{57}
 \initial {I}
 \entry {initialization file, readline}{4}
 \entry {interaction, readline}{1}
index 114fdd0..15ab423 100644 (file)
 \entry{kill-word (M-d)}{16}{\code {kill-word (M-d)}}
 \entry{backward-kill-word (M-DEL)}{16}{\code {backward-kill-word (M-\key {DEL})}}
 \entry{unix-word-rubout (C-w)}{16}{\code {unix-word-rubout (C-w)}}
+\entry{unix-filename-rubout ()}{16}{\code {unix-filename-rubout ()}}
 \entry{delete-horizontal-space ()}{16}{\code {delete-horizontal-space ()}}
 \entry{kill-region ()}{16}{\code {kill-region ()}}
 \entry{copy-region-as-kill ()}{16}{\code {copy-region-as-kill ()}}
 \entry{copy-backward-word ()}{16}{\code {copy-backward-word ()}}
 \entry{copy-forward-word ()}{16}{\code {copy-forward-word ()}}
-\entry{yank (C-y)}{16}{\code {yank (C-y)}}
+\entry{yank (C-y)}{17}{\code {yank (C-y)}}
 \entry{yank-pop (M-y)}{17}{\code {yank-pop (M-y)}}
 \entry{digit-argument (M-0, M-1, ...{} M--)}{17}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
 \entry{universal-argument ()}{17}{\code {universal-argument ()}}
 \entry{rl_read_key}{34}{\code {rl_read_key}}
 \entry{rl_getc}{34}{\code {rl_getc}}
 \entry{rl_stuff_char}{34}{\code {rl_stuff_char}}
-\entry{rl_execute_next}{34}{\code {rl_execute_next}}
+\entry{rl_execute_next}{35}{\code {rl_execute_next}}
 \entry{rl_clear_pending_input}{35}{\code {rl_clear_pending_input}}
 \entry{rl_set_keyboard_input_timeout}{35}{\code {rl_set_keyboard_input_timeout}}
 \entry{rl_prep_terminal}{35}{\code {rl_prep_terminal}}
 \entry{rl_reset_terminal}{35}{\code {rl_reset_terminal}}
 \entry{rl_replace_line}{35}{\code {rl_replace_line}}
 \entry{rl_extend_line_buffer}{35}{\code {rl_extend_line_buffer}}
-\entry{rl_initialize}{35}{\code {rl_initialize}}
+\entry{rl_initialize}{36}{\code {rl_initialize}}
 \entry{rl_ding}{36}{\code {rl_ding}}
 \entry{rl_alphabetic}{36}{\code {rl_alphabetic}}
 \entry{rl_display_match_list}{36}{\code {rl_display_match_list}}
 \entry{rl_basic_word_break_characters}{44}{\code {rl_basic_word_break_characters}}
 \entry{rl_basic_quote_characters}{44}{\code {rl_basic_quote_characters}}
 \entry{rl_completer_word_break_characters}{45}{\code {rl_completer_word_break_characters}}
+\entry{rl_completion_word_break_hook}{45}{\code {rl_completion_word_break_hook}}
 \entry{rl_completer_quote_characters}{45}{\code {rl_completer_quote_characters}}
 \entry{rl_filename_quote_characters}{45}{\code {rl_filename_quote_characters}}
 \entry{rl_special_prefixes}{45}{\code {rl_special_prefixes}}
 \entry{rl_completion_query_items}{45}{\code {rl_completion_query_items}}
 \entry{rl_completion_append_character}{45}{\code {rl_completion_append_character}}
 \entry{rl_completion_suppress_append}{45}{\code {rl_completion_suppress_append}}
-\entry{rl_completion_mark_symlink_dirs}{45}{\code {rl_completion_mark_symlink_dirs}}
-\entry{rl_ignore_completion_duplicates}{45}{\code {rl_ignore_completion_duplicates}}
+\entry{rl_completion_quote_character}{45}{\code {rl_completion_quote_character}}
+\entry{rl_completion_suppress_quote}{46}{\code {rl_completion_suppress_quote}}
+\entry{rl_completion_found_quote}{46}{\code {rl_completion_found_quote}}
+\entry{rl_completion_mark_symlink_dirs}{46}{\code {rl_completion_mark_symlink_dirs}}
+\entry{rl_ignore_completion_duplicates}{46}{\code {rl_ignore_completion_duplicates}}
 \entry{rl_filename_completion_desired}{46}{\code {rl_filename_completion_desired}}
 \entry{rl_filename_quoting_desired}{46}{\code {rl_filename_quoting_desired}}
 \entry{rl_attempted_completion_over}{46}{\code {rl_attempted_completion_over}}
 \entry{rl_completion_type}{46}{\code {rl_completion_type}}
-\entry{rl_inhibit_completion}{46}{\code {rl_inhibit_completion}}
+\entry{rl_inhibit_completion}{47}{\code {rl_inhibit_completion}}
index b1dfd48..b8e0863 100644 (file)
 \entry {\code {rl_completion_append_character}}{45}
 \entry {\code {rl_completion_display_matches_hook}}{44}
 \entry {\code {rl_completion_entry_function}}{42, 43}
-\entry {\code {rl_completion_mark_symlink_dirs}}{45}
+\entry {\code {rl_completion_found_quote}}{46}
+\entry {\code {rl_completion_mark_symlink_dirs}}{46}
 \entry {\code {rl_completion_matches}}{42}
 \entry {\code {rl_completion_mode}}{42}
 \entry {\code {rl_completion_query_items}}{45}
+\entry {\code {rl_completion_quote_character}}{45}
 \entry {\code {rl_completion_suppress_append}}{45}
+\entry {\code {rl_completion_suppress_quote}}{46}
 \entry {\code {rl_completion_type}}{46}
+\entry {\code {rl_completion_word_break_hook}}{45}
 \entry {\code {rl_copy_keymap}}{28}
 \entry {\code {rl_copy_text}}{34}
 \entry {\code {rl_crlf}}{33}
 \entry {\code {rl_end_undo_group}}{32}
 \entry {\code {rl_erase_empty_line}}{24}
 \entry {\code {rl_event_hook}}{26}
-\entry {\code {rl_execute_next}}{34}
+\entry {\code {rl_execute_next}}{35}
 \entry {\code {rl_executing_keymap}}{26}
 \entry {\code {rl_executing_macro}}{26}
 \entry {\code {rl_expand_prompt}}{33}
 \entry {\code {rl_getc}}{34}
 \entry {\code {rl_getc_function}}{26}
 \entry {\code {rl_gnu_readline_p}}{25}
-\entry {\code {rl_ignore_completion_duplicates}}{45}
+\entry {\code {rl_ignore_completion_duplicates}}{46}
 \entry {\code {rl_ignore_some_completions_function}}{44}
-\entry {\code {rl_inhibit_completion}}{46}
-\entry {\code {rl_initialize}}{35}
+\entry {\code {rl_inhibit_completion}}{47}
+\entry {\code {rl_initialize}}{36}
 \entry {\code {rl_insert_completions}}{42}
 \entry {\code {rl_insert_text}}{34}
 \entry {\code {rl_instream}}{25}
 \initial {U}
 \entry {\code {undo (C-_ or C-x C-u)}}{18}
 \entry {\code {universal-argument ()}}{17}
+\entry {\code {unix-filename-rubout ()}}{16}
 \entry {\code {unix-line-discard (C-u)}}{16}
 \entry {\code {unix-word-rubout (C-w)}}{16}
 \entry {\code {upcase-word (M-u)}}{15}
 \entry {\code {vi-editing-mode (M-C-j)}}{19}
 \entry {visible-stats}{7}
 \initial {Y}
-\entry {\code {yank (C-y)}}{16}
+\entry {\code {yank (C-y)}}{17}
 \entry {\code {yank-last-arg (M-. or M-_)}}{14}
 \entry {\code {yank-nth-arg (M-C-y)}}{14}
 \entry {\code {yank-pop (M-y)}}{17}
index 08f7ef0..4fa21f5 100644 (file)
@@ -1,9 +1,9 @@
-This is TeX, Version 3.14159 (Web2C 7.3.1) (format=tex 2001.2.12)  22 SEP 2003 09:04
-**/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rlman.te
-xi
+This is TeX, Version 3.14159 (Web2C 7.3.1) (format=tex 2001.2.12)  27 JUL 2004 09:31
+**/net/celerra-dm1/fs04/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rlm
+an.texi
 
-(/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rlman.tex
-i (texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics,
+(/net/celerra-dm1/fs04/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rlma
+n.texi (texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics,
 \bindingoffset=\dimen16
 \normaloffset=\dimen17
 \pagewidth=\dimen18
@@ -34,13 +34,13 @@ i (texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics,
 \toksD=\toks18
 \boxA=\box19
 \countA=\count30
- fonts,
+
+fonts,
 \sffam=\fam8
 \textleading=\dimen26
 \mainmagstep=\count31
 \fontdepth=\count32
-
-page headings,
+ page headings,
 \titlepagetopglue=\skip20
 \titlepagebottomglue=\skip21
 \evenheadline=\toks19
@@ -81,7 +81,8 @@ page headings,
 \lastnegativepageno=\count43
 \shortappendixwidth=\dimen33
 \tocindent=\dimen34
- environments,
+
+environments,
 \errorbox=\box22
 \lispnarrowing=\skip30
 \envskipamount=\skip31
@@ -94,8 +95,7 @@ page headings,
 \lskip=\skip35
 \rskip=\skip36
 \tabw=\dimen38
-
-defuns,
+ defuns,
 \defbodyindent=\skip37
 \defargsindent=\skip38
 \deflastargmargin=\skip39
@@ -186,7 +186,7 @@ gnored[] |
 [11] [12] [13] [14] [15] [16] [17] [18]) (rltech.texi Chapter 2 [19] [20]
 [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35]
 [36] [37] [38] [39] [40] [41] [42] [43] [44] [45]
-Underfull \hbox (badness 7379) in paragraph at lines 1757--1762
+Underfull \hbox (badness 7379) in paragraph at lines 1792--1797
  []@textrm If an application-specific com-ple-tion func-tion as-signed to @text
 tt rl_attempted_
 
@@ -198,16 +198,16 @@ tt rl_attempted_
 .@glue 3.65 plus 1.825 minus 1.21666
 .etc.
 
-[46] [47] [48] [49] [50] [51] [52] [53]) Appendix A [54] (fdl.texi [55]
-[56] [57] [58] [59] [60]) (Concept Index) [61] [62] (rlman.cps)
-(Function and Variable Index) [63] [64] (rlman.fns [65] [66]) [67] [68] ) 
+[46] [47] [48] [49] [50] [51] [52] [53] [54]) Appendix A [55] [56] (fdl.texi
+[57] [58] [59] [60] [61] [62]) (Concept Index) [63] [64] (rlman.cps)
+(Function and Variable Index) [65] [66] (rlman.fns [67] [68]) [69] [70] ) 
 Here is how much of TeX's memory you used:
  1489 strings out of 13013
- 18350 string characters out of 97233
- 56934 words of memory out of 263001
+ 18360 string characters out of 97233
+ 58248 words of memory out of 263001
  2361 multiletter control sequences out of 10000+0
  31953 words of font info for 111 fonts, out of 400000 for 1000
  19 hyphenation exceptions out of 1000
- 15i,8n,17p,304b,695s stack positions out of 300i,100n,500p,50000b,4000s
+ 15i,8n,17p,309b,695s stack positions out of 300i,100n,500p,50000b,4000s
 
-Output written on rlman.dvi (72 pages, 270424 bytes).
+Output written on rlman.dvi (74 pages, 274068 bytes).
index 9d08ef5..0dc6301 100644 (file)
@@ -45,9 +45,9 @@
 \subsecentry{How Completing Works}{2}{6}{1}{41}
 \subsecentry{Completion Functions}{2}{6}{2}{42}
 \subsecentry{Completion Variables}{2}{6}{3}{43}
-\subsecentry{A Short Completion Example}{2}{6}{4}{46}
-\appendixentry{Copying This Manual}{A}{55}
-\secentry{GNU Free Documentation License}{A}{1}{55}
-\subsecentry{ADDENDUM: How to use this License for your documents}{A}{1}{1}{61}
-\unnumbchapentry{Concept Index}{2}{63}
-\unnumbchapentry{Function and Variable Index}{2}{65}
+\subsecentry{A Short Completion Example}{2}{6}{4}{47}
+\appendixentry{Copying This Manual}{A}{57}
+\secentry{GNU Free Documentation License}{A}{1}{57}
+\subsecentry{ADDENDUM: How to use this License for your documents}{A}{1}{1}{63}
+\unnumbchapentry{Concept Index}{2}{65}
+\unnumbchapentry{Function and Variable Index}{2}{67}
index f77eb4e..55667c3 100644 (file)
Binary files a/lib/readline/doc/rluserman.dvi and b/lib/readline/doc/rluserman.dvi differ
index e073421..14643e5 100644 (file)
 \entry{kill-word (M-d)}{16}{\code {kill-word (M-d)}}
 \entry{backward-kill-word (M-DEL)}{16}{\code {backward-kill-word (M-\key {DEL})}}
 \entry{unix-word-rubout (C-w)}{16}{\code {unix-word-rubout (C-w)}}
+\entry{unix-filename-rubout ()}{16}{\code {unix-filename-rubout ()}}
 \entry{delete-horizontal-space ()}{16}{\code {delete-horizontal-space ()}}
 \entry{kill-region ()}{16}{\code {kill-region ()}}
 \entry{copy-region-as-kill ()}{16}{\code {copy-region-as-kill ()}}
 \entry{copy-backward-word ()}{16}{\code {copy-backward-word ()}}
 \entry{copy-forward-word ()}{16}{\code {copy-forward-word ()}}
-\entry{yank (C-y)}{16}{\code {yank (C-y)}}
+\entry{yank (C-y)}{17}{\code {yank (C-y)}}
 \entry{yank-pop (M-y)}{17}{\code {yank-pop (M-y)}}
 \entry{digit-argument (M-0, M-1, ...{} M--)}{17}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
 \entry{universal-argument ()}{17}{\code {universal-argument ()}}
index 9514015..0ead587 100644 (file)
 \initial {U}
 \entry {\code {undo (C-_ or C-x C-u)}}{18}
 \entry {\code {universal-argument ()}}{17}
+\entry {\code {unix-filename-rubout ()}}{16}
 \entry {\code {unix-line-discard (C-u)}}{16}
 \entry {\code {unix-word-rubout (C-w)}}{16}
 \entry {\code {upcase-word (M-u)}}{15}
 \initial {V}
 \entry {\code {vi-editing-mode (M-C-j)}}{19}
 \initial {Y}
-\entry {\code {yank (C-y)}}{16}
+\entry {\code {yank (C-y)}}{17}
 \entry {\code {yank-last-arg (M-. or M-_)}}{14}
 \entry {\code {yank-nth-arg (M-C-y)}}{14}
 \entry {\code {yank-pop (M-y)}}{17}
index 1aa7778..6055fbe 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on September, 22  2003 by texi2html 1.64 -->
+<!-- Created on July, 27  2004 by texi2html 1.64 -->
 <!-- 
 Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -1547,50 +1547,58 @@ The killed text is saved on the kill-ring.
 <P>
 
 <A NAME="IDX107"></A>
-<DT><CODE>delete-horizontal-space ()</CODE>
+<DT><CODE>unix-filename-rubout ()</CODE>
 <DD><A NAME="IDX108"></A>
-Delete all spaces and tabs around point.  By default, this is unbound.
+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.
 <P>
 
 <A NAME="IDX109"></A>
-<DT><CODE>kill-region ()</CODE>
+<DT><CODE>delete-horizontal-space ()</CODE>
 <DD><A NAME="IDX110"></A>
+Delete all spaces and tabs around point.  By default, this is unbound.
+<P>
+
+<A NAME="IDX111"></A>
+<DT><CODE>kill-region ()</CODE>
+<DD><A NAME="IDX112"></A>
 Kill the text in the current region.
 By default, this command is unbound.
 <P>
 
-<A NAME="IDX111"></A>
+<A NAME="IDX113"></A>
 <DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX112"></A>
+<DD><A NAME="IDX114"></A>
 Copy the text in the region to the kill buffer, so it can be yanked
 right away.  By default, this command is unbound.
 <P>
 
-<A NAME="IDX113"></A>
+<A NAME="IDX115"></A>
 <DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX114"></A>
+<DD><A NAME="IDX116"></A>
 Copy the word before point to the kill buffer.
 The word boundaries are the same as <CODE>backward-word</CODE>.
 By default, this command is unbound.
 <P>
 
-<A NAME="IDX115"></A>
+<A NAME="IDX117"></A>
 <DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX116"></A>
+<DD><A NAME="IDX118"></A>
 Copy the word following point to the kill buffer.
 The word boundaries are the same as <CODE>forward-word</CODE>.
 By default, this command is unbound.
 <P>
 
-<A NAME="IDX117"></A>
+<A NAME="IDX119"></A>
 <DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX118"></A>
+<DD><A NAME="IDX120"></A>
 Yank the top of the kill ring into the buffer at point.
 <P>
 
-<A NAME="IDX119"></A>
+<A NAME="IDX121"></A>
 <DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX120"></A>
+<DD><A NAME="IDX122"></A>
 Rotate the kill-ring, and yank the new top.  You can only do this if
 the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
 </DL>
@@ -1614,16 +1622,16 @@ the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
 <!--docid::SEC18::-->
 <DL COMPACT>
 
-<A NAME="IDX121"></A>
+<A NAME="IDX123"></A>
 <DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX122"></A>
+<DD><A NAME="IDX124"></A>
 Add this digit to the argument already accumulating, or start a new
 argument.  <KBD>M--</KBD> starts a negative argument.
 <P>
 
-<A NAME="IDX123"></A>
+<A NAME="IDX125"></A>
 <DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX124"></A>
+<DD><A NAME="IDX126"></A>
 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.
@@ -1658,30 +1666,30 @@ By default, this is not bound to a key.
 <P>
 
 <DL COMPACT>
-<A NAME="IDX125"></A>
+<A NAME="IDX127"></A>
 <DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX126"></A>
+<DD><A NAME="IDX128"></A>
 Attempt to perform completion on the text before point.
 The actual completion performed is application-specific.
 The default is filename completion.
 <P>
 
-<A NAME="IDX127"></A>
+<A NAME="IDX129"></A>
 <DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX128"></A>
+<DD><A NAME="IDX130"></A>
 List the possible completions of the text before point.
 <P>
 
-<A NAME="IDX129"></A>
+<A NAME="IDX131"></A>
 <DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX130"></A>
+<DD><A NAME="IDX132"></A>
 Insert all completions of the text before point that would have
 been generated by <CODE>possible-completions</CODE>.
 <P>
 
-<A NAME="IDX131"></A>
+<A NAME="IDX133"></A>
 <DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX132"></A>
+<DD><A NAME="IDX134"></A>
 Similar to <CODE>complete</CODE>, but replaces the word to be completed
 with a single match from the list of possible completions.
 Repeated execution of <CODE>menu-complete</CODE> steps through the list
@@ -1696,9 +1704,9 @@ This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
 by default.
 <P>
 
-<A NAME="IDX133"></A>
+<A NAME="IDX135"></A>
 <DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX134"></A>
+<DD><A NAME="IDX136"></A>
 Deletes the character under the cursor if not at the beginning or
 end of the line (like <CODE>delete-char</CODE>).
 If at the end of the line, behaves identically to
@@ -1727,22 +1735,22 @@ This command is unbound by default.
 <!--docid::SEC20::-->
 <DL COMPACT>
 
-<A NAME="IDX135"></A>
+<A NAME="IDX137"></A>
 <DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX136"></A>
+<DD><A NAME="IDX138"></A>
 Begin saving the characters typed into the current keyboard macro.
 <P>
 
-<A NAME="IDX137"></A>
+<A NAME="IDX139"></A>
 <DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX138"></A>
+<DD><A NAME="IDX140"></A>
 Stop saving the characters typed into the current keyboard macro
 and save the definition.
 <P>
 
-<A NAME="IDX139"></A>
+<A NAME="IDX141"></A>
 <DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX140"></A>
+<DD><A NAME="IDX142"></A>
 Re-execute the last keyboard macro defined, by making the characters
 in the macro appear as if typed at the keyboard.
 <P>
@@ -1768,87 +1776,87 @@ in the macro appear as if typed at the keyboard.
 <!--docid::SEC21::-->
 <DL COMPACT>
 
-<A NAME="IDX141"></A>
+<A NAME="IDX143"></A>
 <DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX142"></A>
+<DD><A NAME="IDX144"></A>
 Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
 any bindings or variable assignments found there.
 <P>
 
-<A NAME="IDX143"></A>
+<A NAME="IDX145"></A>
 <DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX144"></A>
+<DD><A NAME="IDX146"></A>
 Abort the current editing command and
 ring the terminal's bell (subject to the setting of
 <CODE>bell-style</CODE>).
 <P>
 
-<A NAME="IDX145"></A>
+<A NAME="IDX147"></A>
 <DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX146"></A>
+<DD><A NAME="IDX148"></A>
 If the metafied character <VAR>x</VAR> is lowercase, run the command
 that is bound to the corresponding uppercase character.
 <P>
 
-<A NAME="IDX147"></A>
+<A NAME="IDX149"></A>
 <DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX148"></A>
+<DD><A NAME="IDX150"></A>
 Metafy the next character typed.  This is for keyboards
 without a meta key.  Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing
 <KBD>M-f</KBD>.
 <P>
 
-<A NAME="IDX149"></A>
+<A NAME="IDX151"></A>
 <DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX150"></A>
+<DD><A NAME="IDX152"></A>
 Incremental undo, separately remembered for each line.
 <P>
 
-<A NAME="IDX151"></A>
+<A NAME="IDX153"></A>
 <DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX152"></A>
+<DD><A NAME="IDX154"></A>
 Undo all changes made to this line.  This is like executing the <CODE>undo</CODE>
 command enough times to get back to the beginning.
 <P>
 
-<A NAME="IDX153"></A>
+<A NAME="IDX155"></A>
 <DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX154"></A>
+<DD><A NAME="IDX156"></A>
 Perform tilde expansion on the current word.
 <P>
 
-<A NAME="IDX155"></A>
+<A NAME="IDX157"></A>
 <DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX156"></A>
+<DD><A NAME="IDX158"></A>
 Set the mark to the point.  If a
 numeric argument is supplied, the mark is set to that position.
 <P>
 
-<A NAME="IDX157"></A>
+<A NAME="IDX159"></A>
 <DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX158"></A>
+<DD><A NAME="IDX160"></A>
 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.
 <P>
 
-<A NAME="IDX159"></A>
+<A NAME="IDX161"></A>
 <DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX160"></A>
+<DD><A NAME="IDX162"></A>
 A character is read and point is moved to the next occurrence of that
 character.  A negative count searches for previous occurrences.
 <P>
 
-<A NAME="IDX161"></A>
+<A NAME="IDX163"></A>
 <DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX162"></A>
+<DD><A NAME="IDX164"></A>
 A character is read and point is moved to the previous occurrence
 of that character.  A negative count searches for subsequent
 occurrences.
 <P>
 
-<A NAME="IDX163"></A>
+<A NAME="IDX165"></A>
 <DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX164"></A>
+<DD><A NAME="IDX166"></A>
 Without a numeric argument, the value of the <CODE>comment-begin</CODE>
 variable is inserted at the beginning of the current line.
 If a numeric argument is supplied, this command acts as a toggle:  if
@@ -1859,43 +1867,43 @@ the line.
 In either case, the line is accepted as if a newline had been typed.
 <P>
 
-<A NAME="IDX165"></A>
+<A NAME="IDX167"></A>
 <DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX166"></A>
+<DD><A NAME="IDX168"></A>
 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 <VAR>inputrc</VAR> file.  This command is unbound by default.
 <P>
 
-<A NAME="IDX167"></A>
+<A NAME="IDX169"></A>
 <DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX168"></A>
+<DD><A NAME="IDX170"></A>
 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 <VAR>inputrc</VAR> file.  This command is unbound by default.
 <P>
 
-<A NAME="IDX169"></A>
+<A NAME="IDX171"></A>
 <DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX170"></A>
+<DD><A NAME="IDX172"></A>
 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 <VAR>inputrc</VAR> file.  This command is unbound by default.
 <P>
 
-<A NAME="IDX171"></A>
+<A NAME="IDX173"></A>
 <DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX172"></A>
+<DD><A NAME="IDX174"></A>
 When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
 editing mode.
 <P>
 
-<A NAME="IDX173"></A>
+<A NAME="IDX175"></A>
 <DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX174"></A>
+<DD><A NAME="IDX176"></A>
 When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
 editing mode.
 <P>
@@ -1982,7 +1990,7 @@ so forth.
 <!--docid::SEC24::-->
 <P>
 
-<A NAME="IDX175"></A>
+<A NAME="IDX177"></A>
 <center>
  Version 1.2, November 2002
 </center>
@@ -2600,7 +2608,7 @@ to permit their use in free software.
 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
 </TR></TABLE>
 <H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>September, 22  2003</I>
+This document was generated by <I>Chet Ramey</I> on <I>July, 27  2004</I>
 using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
 "><I>texi2html</I></A>
 <P></P>  
@@ -2762,7 +2770,7 @@ the following structure:
 <BR>  
 <FONT SIZE="-1">
 This document was generated
-by <I>Chet Ramey</I> on <I>September, 22  2003</I>
+by <I>Chet Ramey</I> on <I>July, 27  2004</I>
 using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
 "><I>texi2html</I></A>
 
index 50c6b17..80958ec 100644 (file)
@@ -2,11 +2,11 @@ This is rluserman.info, produced by makeinfo version 4.5 from
 ./rluserman.texi.
 
 This manual describes the end user interface of the GNU Readline Library
-(version 5.0, 19 September 2003), a library which aids in the
-consistency of user interface across discrete programs which provide a
-command line interface.
+(version 5.0, 28 January 2004), a library which aids in the consistency
+of user interface across discrete programs which provide a command line
+interface.
 
-   Copyright (C) 1988-2003 Free Software Foundation, Inc.
+   Copyright (C) 1988-2004 Free Software Foundation, Inc.
 
    Permission is granted to make and distribute verbatim copies of this
 manual provided the copyright notice and this permission notice are
@@ -1036,6 +1036,11 @@ Killing And Yanking
      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 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.
@@ -1697,30 +1702,30 @@ permit their use in free software.
 
 \1f
 Tag Table:
-Node: Top\7f1341
-Node: Command Line Editing\7f1776
-Node: Introduction and Notation\7f2418
-Node: Readline Interaction\7f4037
-Node: Readline Bare Essentials\7f5225
-Node: Readline Movement Commands\7f7007
-Node: Readline Killing Commands\7f7965
-Node: Readline Arguments\7f9876
-Node: Searching\7f10913
-Node: Readline Init File\7f13057
-Node: Readline Init File Syntax\7f14119
-Node: Conditional Init Constructs\7f25483
-Node: Sample Init File\7f28009
-Node: Bindable Readline Commands\7f31194
-Node: Commands For Moving\7f32245
-Node: Commands For History\7f33096
-Node: Commands For Text\7f35956
-Node: Commands For Killing\7f38672
-Node: Numeric Arguments\7f40624
-Node: Commands For Completion\7f41753
-Node: Keyboard Macros\7f43287
-Node: Miscellaneous Commands\7f43848
-Node: Readline vi Mode\7f47199
-Node: Copying This Manual\7f48115
-Node: GNU Free Documentation License\7f48325
+Node: Top\7f1339
+Node: Command Line Editing\7f1774
+Node: Introduction and Notation\7f2416
+Node: Readline Interaction\7f4035
+Node: Readline Bare Essentials\7f5223
+Node: Readline Movement Commands\7f7005
+Node: Readline Killing Commands\7f7963
+Node: Readline Arguments\7f9874
+Node: Searching\7f10911
+Node: Readline Init File\7f13055
+Node: Readline Init File Syntax\7f14117
+Node: Conditional Init Constructs\7f25481
+Node: Sample Init File\7f28007
+Node: Bindable Readline Commands\7f31192
+Node: Commands For Moving\7f32243
+Node: Commands For History\7f33094
+Node: Commands For Text\7f35954
+Node: Commands For Killing\7f38670
+Node: Numeric Arguments\7f40802
+Node: Commands For Completion\7f41931
+Node: Keyboard Macros\7f43465
+Node: Miscellaneous Commands\7f44026
+Node: Readline vi Mode\7f47377
+Node: Copying This Manual\7f48293
+Node: GNU Free Documentation License\7f48503
 \1f
 End Tag Table
index 01f9a4d..a5870c9 100644 (file)
@@ -1,9 +1,9 @@
-This is TeX, Version 3.14159 (Web2C 7.3.1) (format=tex 2001.2.12)  22 SEP 2003 09:04
-**/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rluserma
-n.texi
+This is TeX, Version 3.14159 (Web2C 7.3.1) (format=tex 2001.2.12)  27 JUL 2004 09:31
+**/net/celerra-dm1/fs04/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rlu
+serman.texi
 
-(/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rluserman
-.texi (texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics,
+(/net/celerra-dm1/fs04/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rlus
+erman.texi (texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics,
 \bindingoffset=\dimen16
 \normaloffset=\dimen17
 \pagewidth=\dimen18
@@ -187,11 +187,11 @@ gnored[] |
 [21] [22] [23] [24] [25] [26]) [27] [28] ) 
 Here is how much of TeX's memory you used:
  1398 strings out of 13013
- 16279 string characters out of 97233
- 44937 words of memory out of 263001
+ 16289 string characters out of 97233
+ 44933 words of memory out of 263001
  2276 multiletter control sequences out of 10000+0
  31953 words of font info for 111 fonts, out of 400000 for 1000
  19 hyphenation exceptions out of 1000
- 13i,8n,10p,308b,695s stack positions out of 300i,100n,500p,50000b,4000s
+ 13i,8n,10p,313b,695s stack positions out of 300i,100n,500p,50000b,4000s
 
-Output written on rluserman.dvi (32 pages, 91652 bytes).
+Output written on rluserman.dvi (32 pages, 91852 bytes).
index eb65adc..dd3249d 100644 (file)
@@ -8,7 +8,7 @@
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 300 -o rluserman.ps rluserman.dvi
 %DVIPSParameters: dpi=300, compressed
-%DVIPSSource:  TeX output 2003.09.22:0904
+%DVIPSSource:  TeX output 2004.07.27:0931
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -908,23 +908,23 @@ TeXDict begin
 %%Page: 1 1
 1 0 bop 75 659 a Fp(GNU)33 b(Readline)h(Library)e(User)h(In)m(terface)p
 75 709 1800 17 v 936 757 a Fo(Edition)17 b(5.0,)c(for)i
-Fn(Readline)f(Library)g Fo(V)l(ersion)i(5.0.)1559 811
-y(Septem)o(b)q(er)g(2003)75 2467 y Fm(Chet)22 b(Ramey)-6
-b(,)23 b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
+Fn(Readline)f(Library)g Fo(V)l(ersion)i(5.0.)1609 811
+y(Jan)o(uary)f(2004)75 2467 y Fm(Chet)22 b(Ramey)-6 b(,)23
+b(Case)e(W)-6 b(estern)23 b(Reserv)n(e)f(Univ)n(ersit)n(y)75
 2534 y(Brian)h(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
 b(oundation)p 75 2570 1800 9 v eop
 %%Page: 2 2
-2 1 bop 75 1512 a Fo(This)15 b(man)o(ual)g(describ)q(es)i(the)d(end)i
-(user)f(in)o(terface)g(of)f(the)h(GNU)f(Readline)i(Library)f(\(v)o
-(ersion)g(5.0,)f(19)75 1567 y(Septem)o(b)q(er)19 b(2003\),)e(a)h
-(library)h(whic)o(h)g(aids)g(in)g(the)f(consistency)h(of)f(user)g(in)o
-(terface)h(across)e(discrete)75 1621 y(programs)d(whic)o(h)i(pro)o
-(vide)g(a)f(command)g(line)i(in)o(terface.)75 1689 y(Cop)o(yrigh)o(t)
-301 1688 y(c)289 1689 y Fl(\015)d Fo(1988-2003)f(F)l(ree)i(Soft)o(w)o
-(are)f(F)l(oundation,)h(Inc.)75 1756 y(P)o(ermission)i(is)f(gran)o(ted)
-g(to)f(mak)o(e)h(and)g(distribute)i(v)o(erbatim)d(copies)i(of)f(this)h
-(man)o(ual)f(pro)o(vided)h(the)75 1811 y(cop)o(yrigh)o(t)e(notice)h
-(and)f(this)h(p)q(ermission)g(notice)g(are)f(preserv)o(ed)h(on)f(all)h
+2 1 bop 75 1512 a Fo(This)20 b(man)o(ual)f(describ)q(es)i(the)f(end)g
+(user)f(in)o(terface)h(of)f(the)g(GNU)g(Readline)i(Library)f(\(v)o
+(ersion)f(5.0,)75 1567 y(28)e(Jan)o(uary)g(2004\),)f(a)h(library)h
+(whic)o(h)g(aids)f(in)h(the)g(consistency)g(of)f(user)g(in)o(terface)h
+(across)e(discrete)75 1621 y(programs)e(whic)o(h)i(pro)o(vide)g(a)f
+(command)g(line)i(in)o(terface.)75 1689 y(Cop)o(yrigh)o(t)301
+1688 y(c)289 1689 y Fl(\015)d Fo(1988-2004)f(F)l(ree)i(Soft)o(w)o(are)f
+(F)l(oundation,)h(Inc.)75 1756 y(P)o(ermission)i(is)f(gran)o(ted)g(to)f
+(mak)o(e)h(and)g(distribute)i(v)o(erbatim)d(copies)i(of)f(this)h(man)o
+(ual)f(pro)o(vided)h(the)75 1811 y(cop)o(yrigh)o(t)e(notice)h(and)f
+(this)h(p)q(ermission)g(notice)g(are)f(preserv)o(ed)h(on)f(all)h
 (copies.)195 1878 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)l(,)
 h(distribute)h(and/or)e(mo)q(dify)h(this)g(do)q(cumen)o(t)g(under)195
 1933 y(the)h(terms)f(of)h(the)g(GNU)g(F)l(ree)g(Do)q(cumen)o(tation)g
@@ -1922,114 +1922,119 @@ b(With)11 b(an)g(explicit)i(non-p)q(ositiv)o(e)f(n)o(umeric)g(argumen)o
 Fn(emacs)e Fo(mo)q(de;)h Fn(vi)g Fo(mo)q(de)h(do)q(es)g(o)o(v)o
 (erwrite)315 204 y(di\013eren)o(tly)l(.)21 b(Eac)o(h)15
 b(call)h(to)f Fn(readline\(\))f Fo(starts)f(in)k(insert)e(mo)q(de.)315
-271 y(In)g(o)o(v)o(erwrite)f(mo)q(de,)h(c)o(haracters)f(b)q(ound)h(to)f
+269 y(In)g(o)o(v)o(erwrite)f(mo)q(de,)h(c)o(haracters)f(b)q(ound)h(to)f
 Fn(self-insert)f Fo(replace)j(the)e(text)h(at)e(p)q(oin)o(t)315
-326 y(rather)20 b(than)h(pushing)h(the)f(text)f(to)g(the)h(righ)o(t.)36
-b(Characters)20 b(b)q(ound)i(to)e Fn(backward-)315 381
+324 y(rather)20 b(than)h(pushing)h(the)f(text)f(to)g(the)h(righ)o(t.)36
+b(Characters)20 b(b)q(ound)i(to)e Fn(backward-)315 379
 y(delete-char)14 b Fo(replace)i(the)f(c)o(haracter)g(b)q(efore)g(p)q
-(oin)o(t)h(with)f(a)g(space.)315 448 y(By)g(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 559 y Fc(1.4.4)30 b(Killing)20
-b(And)h(Y)-5 b(anking)75 680 y Fn(kill-line)14 b(\(C-k\))315
-735 y Fo(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
-(the)g(line.)75 814 y Fn(backward-kill-line)e(\(C-x)h(Rubout\))315
-869 y Fo(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
-(line.)75 948 y Fn(unix-line-discard)e(\(C-u\))315 1003
+(oin)o(t)h(with)f(a)g(space.)315 444 y(By)g(default,)h(this)f(command)g
+(is)h(un)o(b)q(ound.)75 550 y Fc(1.4.4)30 b(Killing)20
+b(And)h(Y)-5 b(anking)75 669 y Fn(kill-line)14 b(\(C-k\))315
+724 y Fo(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
+(the)g(line.)75 800 y Fn(backward-kill-line)e(\(C-x)h(Rubout\))315
+854 y Fo(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
+(line.)75 930 y Fn(unix-line-discard)e(\(C-u\))315 985
 y Fo(Kill)k(bac)o(kw)o(ard)e(from)f(the)i(cursor)e(to)h(the)g(b)q
-(eginning)j(of)c(the)i(curren)o(t)f(line.)75 1082 y Fn(kill-whole-line)
-e(\(\))315 1137 y Fo(Kill)20 b(all)g(c)o(haracters)d(on)h(the)h(curren)
+(eginning)j(of)c(the)i(curren)o(t)f(line.)75 1060 y Fn(kill-whole-line)
+e(\(\))315 1115 y Fo(Kill)20 b(all)g(c)o(haracters)d(on)h(the)h(curren)
 o(t)f(line,)i(no)e(matter)g(where)g(p)q(oin)o(t)h(is.)29
-b(By)19 b(default,)315 1192 y(this)d(is)f(un)o(b)q(ound.)75
-1271 y Fn(kill-word)f(\(M-d\))315 1325 y Fo(Kill)j(from)d(p)q(oin)o(t)h
+b(By)19 b(default,)315 1170 y(this)d(is)f(un)o(b)q(ound.)75
+1245 y Fn(kill-word)f(\(M-d\))315 1300 y Fo(Kill)j(from)d(p)q(oin)o(t)h
 (to)f(the)h(end)g(of)f(the)h(curren)o(t)g(w)o(ord,)e(or)i(if)g(b)q(et)o
-(w)o(een)g(w)o(ords,)e(to)i(the)f(end)315 1380 y(of)h(the)g(next)g(w)o
+(w)o(een)g(w)o(ords,)e(to)i(the)f(end)315 1355 y(of)h(the)g(next)g(w)o
 (ord.)20 b(W)l(ord)14 b(b)q(oundaries)j(are)e(the)g(same)g(as)g
-Fn(forward-word)p Fo(.)75 1459 y Fn(backward-kill-word)e(\(M-)592
-1457 y Ff(h)p 603 1431 73 2 v 603 1459 a Fe(DEL)p 603
-1467 V 674 1457 a Ff(i)689 1459 y Fn(\))315 1514 y Fo(Kill)k(the)d(w)o
+Fn(forward-word)p Fo(.)75 1430 y Fn(backward-kill-word)e(\(M-)592
+1428 y Ff(h)p 603 1402 73 2 v 603 1430 a Fe(DEL)p 603
+1438 V 674 1428 a Ff(i)689 1430 y Fn(\))315 1485 y Fo(Kill)k(the)d(w)o
 (ord)g(b)q(ehind)i(p)q(oin)o(t.)21 b(W)l(ord)14 b(b)q(oundaries)h(are)f
-(the)h(same)f(as)g Fn(backward-word)p Fo(.)75 1593 y
-Fn(unix-word-rubout)f(\(C-w\))315 1648 y Fo(Kill)18 b(the)e(w)o(ord)f
+(the)h(same)f(as)g Fn(backward-word)p Fo(.)75 1560 y
+Fn(unix-word-rubout)f(\(C-w\))315 1615 y Fo(Kill)18 b(the)e(w)o(ord)f
 (b)q(ehind)j(p)q(oin)o(t,)e(using)h(white)f(space)g(as)g(a)f(w)o(ord)g
-(b)q(oundary)l(.)23 b(The)16 b(killed)315 1703 y(text)f(is)g(sa)o(v)o
-(ed)g(on)g(the)h(kill-ring.)75 1782 y Fn(delete-horizontal-space)c
-(\(\))315 1836 y Fo(Delete)k(all)g(spaces)f(and)h(tabs)e(around)i(p)q
-(oin)o(t.)k(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75
-1915 y Fn(kill-region)e(\(\))315 1970 y Fo(Kill)j(the)f(text)e(in)i
-(the)g(curren)o(t)f(region.)20 b(By)15 b(default,)h(this)f(command)g
-(is)h(un)o(b)q(ound.)75 2049 y Fn(copy-region-as-kill)d(\(\))315
-2104 y Fo(Cop)o(y)j(the)i(text)e(in)i(the)f(region)g(to)g(the)g(kill)h
-(bu\013er,)f(so)g(it)g(can)g(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)g(a)o(w)o
-(a)o(y)l(.)315 2159 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q
-(ound.)75 2238 y Fn(copy-backward-word)d(\(\))315 2293
-y Fo(Cop)o(y)19 b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)h(to)e(the)i
-(kill)h(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)h(are)f(the)315
-2348 y(same)c(as)g Fn(backward-word)p Fo(.)j(By)d(default,)g(this)h
-(command)f(is)h(un)o(b)q(ound.)75 2427 y Fn(copy-forward-word)d(\(\))
-315 2481 y Fo(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)j(p)q(oin)o(t)f
+(b)q(oundary)l(.)23 b(The)16 b(killed)315 1670 y(text)f(is)g(sa)o(v)o
+(ed)g(on)g(the)h(kill-ring.)75 1745 y Fn(unix-filename-rubout)c(\(\))
+315 1800 y Fo(Kill)20 b(the)f(w)o(ord)e(b)q(ehind)j(p)q(oin)o(t,)f
+(using)g(white)g(space)f(and)h(the)f(slash)h(c)o(haracter)e(as)h(the)
+315 1855 y(w)o(ord)d(b)q(oundaries.)21 b(The)15 b(killed)j(text)c(is)i
+(sa)o(v)o(ed)f(on)g(the)g(kill-ring.)75 1930 y Fn
+(delete-horizontal-space)d(\(\))315 1985 y Fo(Delete)k(all)g(spaces)f
+(and)h(tabs)e(around)i(p)q(oin)o(t.)k(By)15 b(default,)h(this)f(is)h
+(un)o(b)q(ound.)75 2060 y Fn(kill-region)e(\(\))315 2115
+y Fo(Kill)j(the)f(text)e(in)i(the)g(curren)o(t)f(region.)20
+b(By)15 b(default,)h(this)f(command)g(is)h(un)o(b)q(ound.)75
+2190 y Fn(copy-region-as-kill)d(\(\))315 2245 y Fo(Cop)o(y)j(the)i
+(text)e(in)i(the)f(region)g(to)g(the)g(kill)h(bu\013er,)f(so)g(it)g
+(can)g(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)g(a)o(w)o(a)o(y)l(.)315
+2300 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q(ound.)75
+2375 y Fn(copy-backward-word)d(\(\))315 2430 y Fo(Cop)o(y)19
+b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)h(to)e(the)i(kill)h
+(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)h(are)f(the)315
+2485 y(same)c(as)g Fn(backward-word)p Fo(.)j(By)d(default,)g(this)h
+(command)f(is)h(un)o(b)q(ound.)75 2560 y Fn(copy-forward-word)d(\(\))
+315 2615 y Fo(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)j(p)q(oin)o(t)f
 (to)f(the)g(kill)j(bu\013er.)i(The)c(w)o(ord)f(b)q(oundaries)i(are)e
-(the)315 2536 y(same)g(as)g Fn(forward-word)p Fo(.)j(By)d(default,)h
-(this)f(command)g(is)h(un)o(b)q(ound.)75 2615 y Fn(yank)f(\(C-y\))315
-2670 y Fo(Y)l(ank)g(the)h(top)f(of)f(the)i(kill)h(ring)e(in)o(to)g(the)
-h(bu\013er)f(at)f(p)q(oin)o(t.)p eop
+(the)315 2670 y(same)g(as)g Fn(forward-word)p Fo(.)j(By)d(default,)h
+(this)f(command)g(is)h(un)o(b)q(ound.)p eop
 %%Page: 17 21
 17 20 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
-b(17)75 149 y Fn(yank-pop)14 b(\(M-y\))315 204 y Fo(Rotate)i(the)h
-(kill-ring,)j(and)d(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17
-b(can)h(only)g(do)f(this)h(if)f(the)h(prior)315 259 y(command)d(is)h
-Fn(yank)e Fo(or)h Fn(yank-pop)p Fo(.)75 382 y Fc(1.4.5)30
-b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts)75 507 y
-Fn(digit-argument)13 b(\()p Fg(M-0)p Fn(,)i Fg(M-1)p
-Fn(,)f(...)h Fg(M--)p Fn(\))315 562 y Fo(Add)f(this)g(digit)g(to)f(the)
-h(argumen)o(t)e(already)i(accum)o(ulating,)g(or)f(start)f(a)h(new)h
-(argumen)o(t.)315 616 y Fg(M--)h Fo(starts)f(a)h(negativ)o(e)g(argumen)
-o(t.)75 702 y Fn(universal-argument)e(\(\))315 756 y
-Fo(This)g(is)h(another)e(w)o(a)o(y)g(to)g(sp)q(ecify)i(an)f(argumen)o
-(t.)18 b(If)13 b(this)g(command)g(is)g(follo)o(w)o(ed)g(b)o(y)g(one)315
-811 y(or)h(more)h(digits,)g(optionally)h(with)f(a)g(leading)h(min)o(us)
-f(sign,)g(those)g(digits)g(de\014ne)h(the)f(ar-)315 866
+b(17)75 149 y Fn(yank)15 b(\(C-y\))315 204 y Fo(Y)l(ank)g(the)h(top)f
+(of)f(the)i(kill)h(ring)e(in)o(to)g(the)h(bu\013er)f(at)f(p)q(oin)o(t.)
+75 276 y Fn(yank-pop)g(\(M-y\))315 331 y Fo(Rotate)i(the)h(kill-ring,)j
+(and)d(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f
+(this)h(if)f(the)h(prior)315 386 y(command)d(is)h Fn(yank)e
+Fo(or)h Fn(yank-pop)p Fo(.)75 486 y Fc(1.4.5)30 b(Sp)r(ecifying)20
+b(Numeric)h(Argumen)n(ts)75 604 y Fn(digit-argument)13
+b(\()p Fg(M-0)p Fn(,)i Fg(M-1)p Fn(,)f(...)h Fg(M--)p
+Fn(\))315 658 y Fo(Add)f(this)g(digit)g(to)f(the)h(argumen)o(t)e
+(already)i(accum)o(ulating,)g(or)f(start)f(a)h(new)h(argumen)o(t.)315
+713 y Fg(M--)h Fo(starts)f(a)h(negativ)o(e)g(argumen)o(t.)75
+785 y Fn(universal-argument)e(\(\))315 840 y Fo(This)g(is)h(another)e
+(w)o(a)o(y)g(to)g(sp)q(ecify)i(an)f(argumen)o(t.)18 b(If)13
+b(this)g(command)g(is)g(follo)o(w)o(ed)g(b)o(y)g(one)315
+895 y(or)h(more)h(digits,)g(optionally)h(with)f(a)g(leading)h(min)o(us)
+f(sign,)g(those)g(digits)g(de\014ne)h(the)f(ar-)315 949
 y(gumen)o(t.)k(If)c(the)g(command)f(is)h(follo)o(w)o(ed)g(b)o(y)g
-(digits,)g(executing)g Fn(universal-argument)315 921
+(digits,)g(executing)g Fn(universal-argument)315 1004
 y Fo(again)h(ends)g(the)g(n)o(umeric)h(argumen)o(t,)e(but)h(is)h
 (otherwise)f(ignored.)22 b(As)16 b(a)g(sp)q(ecial)h(case,)315
-976 y(if)g(this)g(command)f(is)h(immediately)h(follo)o(w)o(ed)f(b)o(y)f
-(a)g(c)o(haracter)g(that)g(is)h(neither)g(a)f(digit)315
-1030 y(or)d(min)o(us)i(sign,)f(the)g(argumen)o(t)g(coun)o(t)f(for)h
+1059 y(if)g(this)g(command)f(is)h(immediately)h(follo)o(w)o(ed)f(b)o(y)
+f(a)g(c)o(haracter)g(that)g(is)h(neither)g(a)f(digit)315
+1114 y(or)d(min)o(us)i(sign,)f(the)g(argumen)o(t)g(coun)o(t)f(for)h
 (the)g(next)g(command)g(is)g(m)o(ultiplied)j(b)o(y)d(four.)315
-1085 y(The)19 b(argumen)o(t)f(coun)o(t)g(is)h(initially)j(one,)d(so)f
+1169 y(The)19 b(argumen)o(t)f(coun)o(t)g(is)h(initially)j(one,)d(so)f
 (executing)i(this)f(function)h(the)e(\014rst)h(time)315
-1140 y(mak)o(es)c(the)h(argumen)o(t)f(coun)o(t)h(four,)f(a)h(second)g
+1223 y(mak)o(es)c(the)h(argumen)o(t)f(coun)o(t)h(four,)f(a)h(second)g
 (time)g(mak)o(es)g(the)g(argumen)o(t)f(coun)o(t)g(six-)315
-1195 y(teen,)g(and)g(so)g(on.)20 b(By)15 b(default,)h(this)f(is)h(not)f
-(b)q(ound)h(to)f(a)g(k)o(ey)l(.)75 1318 y Fc(1.4.6)30
+1278 y(teen,)g(and)g(so)g(on.)20 b(By)15 b(default,)h(this)f(is)h(not)f
+(b)q(ound)h(to)f(a)g(k)o(ey)l(.)75 1378 y Fc(1.4.6)30
 b(Letting)20 b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5
-b(ou)75 1443 y Fn(complete)14 b(\()305 1441 y Ff(h)p
-317 1414 74 2 v 317 1443 a Fe(T)m(AB)p 317 1450 V 389
-1441 a Ff(i)404 1443 y Fn(\))315 1497 y Fo(A)o(ttempt)c(to)h(p)q
+b(ou)75 1496 y Fn(complete)14 b(\()305 1494 y Ff(h)p
+317 1468 74 2 v 317 1496 a Fe(T)m(AB)p 317 1504 V 389
+1494 a Ff(i)404 1496 y Fn(\))315 1551 y Fo(A)o(ttempt)c(to)h(p)q
 (erform)g(completion)i(on)e(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)19
-b(The)11 b(actual)h(completion)315 1552 y(p)q(erformed)j(is)h
+b(The)11 b(actual)h(completion)315 1606 y(p)q(erformed)j(is)h
 (application-sp)q(eci\014)q(c.)23 b(The)15 b(default)h(is)g(\014lename)
-g(completion.)75 1637 y Fn(possible-completions)c(\(M-?\))315
-1692 y Fo(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b)
-q(efore)h(p)q(oin)o(t.)75 1777 y Fn(insert-completions)d(\(M-*\))315
-1832 y Fo(Insert)j(all)g(completions)g(of)f(the)g(text)g(b)q(efore)h(p)
+g(completion.)75 1678 y Fn(possible-completions)c(\(M-?\))315
+1732 y Fo(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b)
+q(efore)h(p)q(oin)o(t.)75 1804 y Fn(insert-completions)d(\(M-*\))315
+1859 y Fo(Insert)j(all)g(completions)g(of)f(the)g(text)g(b)q(efore)h(p)
 q(oin)o(t)f(that)g(w)o(ould)h(ha)o(v)o(e)f(b)q(een)h(generated)315
-1887 y(b)o(y)f Fn(possible-completions)p Fo(.)75 1972
-y Fn(menu-complete)e(\(\))315 2027 y Fo(Similar)g(to)f
+1914 y(b)o(y)f Fn(possible-completions)p Fo(.)75 1985
+y Fn(menu-complete)e(\(\))315 2040 y Fo(Similar)g(to)f
 Fn(complete)p Fo(,)f(but)h(replaces)h(the)f(w)o(ord)f(to)g(b)q(e)i
-(completed)f(with)h(a)e(single)j(matc)o(h)315 2082 y(from)k(the)h(list)
+(completed)f(with)h(a)e(single)j(matc)o(h)315 2095 y(from)k(the)h(list)
 h(of)e(p)q(ossible)j(completions.)32 b(Rep)q(eated)19
-b(execution)h(of)f Fn(menu-complete)315 2136 y Fo(steps)h(through)g
+b(execution)h(of)f Fn(menu-complete)315 2150 y Fo(steps)h(through)g
 (the)g(list)h(of)f(p)q(ossible)i(completions,)g(inserting)f(eac)o(h)f
-(matc)o(h)f(in)i(turn.)315 2191 y(A)o(t)d(the)g(end)h(of)f(the)h(list)g
+(matc)o(h)f(in)i(turn.)315 2205 y(A)o(t)d(the)g(end)h(of)f(the)h(list)g
 (of)f(completions,)i(the)e(b)q(ell)j(is)d(rung)h(\(sub)s(ject)f(to)f
-(the)i(setting)315 2246 y(of)f Fn(bell-style)p Fo(\))e(and)i(the)g
+(the)i(setting)315 2259 y(of)f Fn(bell-style)p Fo(\))e(and)i(the)g
 (original)h(text)f(is)g(restored.)28 b(An)19 b(argumen)o(t)e(of)g
-Fd(n)i Fo(mo)o(v)o(es)e Fd(n)315 2301 y Fo(p)q(ositions)h(forw)o(ard)e
+Fd(n)i Fo(mo)o(v)o(es)e Fd(n)315 2314 y Fo(p)q(ositions)h(forw)o(ard)e
 (in)j(the)e(list)h(of)f(matc)o(hes;)h(a)f(negativ)o(e)g(argumen)o(t)g
-(ma)o(y)g(b)q(e)h(used)g(to)315 2356 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h
+(ma)o(y)g(b)q(e)h(used)g(to)315 2369 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h
 (through)g(the)g(list.)32 b(This)20 b(command)f(is)h(in)o(tended)g(to)f
-(b)q(e)h(b)q(ound)g(to)315 2408 y Ff(h)p 327 2382 V 327
-2410 a Fe(T)m(AB)p 327 2418 V 399 2408 a Ff(i)414 2410
+(b)q(e)h(b)q(ound)g(to)315 2422 y Ff(h)p 327 2396 V 327
+2424 a Fe(T)m(AB)p 327 2431 V 399 2422 a Ff(i)414 2424
 y Fo(,)15 b(but)g(is)h(un)o(b)q(ound)g(b)o(y)f(default.)75
 2496 y Fn(delete-char-or-list)e(\(\))315 2550 y Fo(Deletes)h(the)f(c)o
 (haracter)g(under)h(the)g(cursor)f(if)h(not)f(at)g(the)g(b)q(eginning)j
deleted file mode 100644 (file)
index 91f6d96111d07ba1bc6d1ead35e1f2d224c4784b..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* posixdir.h -- Posix directory reading includes and defines. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash, the Bourne Again SHell.
-
-   Bash is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   Bash is distributed in the hope that it will be useful, but WITHOUT
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-   License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with Bash; see the file COPYING.  If not, write to the Free
-   Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* This file should be included instead of <dirent.h> or <sys/dir.h>. */
-
-#if !defined (_POSIXDIR_H_)
-#define _POSIXDIR_H_
-
-#if defined (HAVE_DIRENT_H)
-#  include <dirent.h>
-#  if defined (HAVE_STRUCT_DIRENT_D_NAMLEN)
-#    define D_NAMLEN(d)        ((d)->d_namlen)
-#  else
-#    define D_NAMLEN(d)   (strlen ((d)->d_name))
-#  endif /* !HAVE_STRUCT_DIRENT_D_NAMLEN */
-#else
-#  if defined (HAVE_SYS_NDIR_H)
-#    include <sys/ndir.h>
-#  endif
-#  if defined (HAVE_SYS_DIR_H)
-#    include <sys/dir.h>
-#  endif
-#  if defined (HAVE_NDIR_H)
-#    include <ndir.h>
-#  endif
-#  if !defined (dirent)
-#    define dirent direct
-#  endif /* !dirent */
-#  define D_NAMLEN(d)   ((d)->d_namlen)
-#endif /* !HAVE_DIRENT_H */
-
-#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (HAVE_STRUCT_DIRENT_D_FILENO)
-#  define d_fileno d_ino
-#endif
-
-#if defined (_POSIX_SOURCE) && (!defined (HAVE_STRUCT_DIRENT_D_INO) || defined (BROKEN_DIRENT_D_INO))
-/* Posix does not require that the d_ino field be present, and some
-   systems do not provide it. */
-#  define REAL_DIR_ENTRY(dp) 1
-#else
-#  define REAL_DIR_ENTRY(dp) (dp->d_ino != 0)
-#endif /* _POSIX_SOURCE */
-
-#endif /* !_POSIXDIR_H_ */
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..8b1638454d34a9dc3cab96d77b342e1603a111d8
--- /dev/null
@@ -0,0 +1 @@
+../../include/posixdir.h
\ No newline at end of file
deleted file mode 100644 (file)
index b52aa00332b66881b88d793207e9865a05d7ed32..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* posixjmp.h -- wrapper for setjmp.h with changes for POSIX systems. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash, the Bourne Again SHell.
-
-   Bash is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   Bash is distributed in the hope that it will be useful, but WITHOUT
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-   License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with Bash; see the file COPYING.  If not, write to the Free
-   Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _POSIXJMP_H_
-#define _POSIXJMP_H_
-
-#include <setjmp.h>
-
-/* This *must* be included *after* config.h */
-
-#if defined (HAVE_POSIX_SIGSETJMP)
-#  define procenv_t    sigjmp_buf
-#  if !defined (__OPENNT)
-#    undef setjmp
-#    define setjmp(x)  sigsetjmp((x), 1)
-#    undef longjmp
-#    define longjmp(x, n)      siglongjmp((x), (n))
-#  endif /* !__OPENNT */
-#else
-#  define procenv_t    jmp_buf
-#endif
-
-#endif /* _POSIXJMP_H_ */
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..b4d3ee74b0f8b1b26556ce402d8e1807ae35c1f5
--- /dev/null
@@ -0,0 +1 @@
+../../include/posixjmp.h
\ No newline at end of file
deleted file mode 100644 (file)
index c93b52887e9dfc5b0405153cc9c3658f0281ac1c..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/* posixstat.h -- Posix stat(2) definitions for systems that
-   don't have them. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash, the Bourne Again SHell.
-
-   Bash is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   Bash is distributed in the hope that it will be useful, but WITHOUT
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-   License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with Bash; see the file COPYING.  If not, write to the Free
-   Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* This file should be included instead of <sys/stat.h>.
-   It relies on the local sys/stat.h to work though. */
-#if !defined (_POSIXSTAT_H_)
-#define _POSIXSTAT_H_
-
-#include <sys/stat.h>
-
-#if defined (STAT_MACROS_BROKEN)
-#  undef S_ISBLK
-#  undef S_ISCHR
-#  undef S_ISDIR
-#  undef S_ISFIFO
-#  undef S_ISREG
-#  undef S_ISLNK
-#endif /* STAT_MACROS_BROKEN */
-
-/* These are guaranteed to work only on isc386 */
-#if !defined (S_IFDIR) && !defined (S_ISDIR)
-#  define S_IFDIR 0040000
-#endif /* !S_IFDIR && !S_ISDIR */
-#if !defined (S_IFMT)
-#  define S_IFMT  0170000
-#endif /* !S_IFMT */
-
-/* Posix 1003.1 5.6.1.1 <sys/stat.h> file types */
-
-/* Some Posix-wannabe systems define _S_IF* macros instead of S_IF*, but
-   do not provide the S_IS* macros that Posix requires. */
-
-#if defined (_S_IFMT) && !defined (S_IFMT)
-#define S_IFMT _S_IFMT
-#endif
-#if defined (_S_IFIFO) && !defined (S_IFIFO)
-#define S_IFIFO _S_IFIFO
-#endif
-#if defined (_S_IFCHR) && !defined (S_IFCHR)
-#define S_IFCHR _S_IFCHR
-#endif
-#if defined (_S_IFDIR) && !defined (S_IFDIR)
-#define S_IFDIR _S_IFDIR
-#endif
-#if defined (_S_IFBLK) && !defined (S_IFBLK)
-#define S_IFBLK _S_IFBLK
-#endif
-#if defined (_S_IFREG) && !defined (S_IFREG)
-#define S_IFREG _S_IFREG
-#endif
-#if defined (_S_IFLNK) && !defined (S_IFLNK)
-#define S_IFLNK _S_IFLNK
-#endif
-#if defined (_S_IFSOCK) && !defined (S_IFSOCK)
-#define S_IFSOCK _S_IFSOCK
-#endif
-
-/* Test for each symbol individually and define the ones necessary (some
-   systems claiming Posix compatibility define some but not all). */
-
-#if defined (S_IFBLK) && !defined (S_ISBLK)
-#define        S_ISBLK(m)      (((m)&S_IFMT) == S_IFBLK)       /* block device */
-#endif
-
-#if defined (S_IFCHR) && !defined (S_ISCHR)
-#define        S_ISCHR(m)      (((m)&S_IFMT) == S_IFCHR)       /* character device */
-#endif
-
-#if defined (S_IFDIR) && !defined (S_ISDIR)
-#define        S_ISDIR(m)      (((m)&S_IFMT) == S_IFDIR)       /* directory */
-#endif
-
-#if defined (S_IFREG) && !defined (S_ISREG)
-#define        S_ISREG(m)      (((m)&S_IFMT) == S_IFREG)       /* file */
-#endif
-
-#if defined (S_IFIFO) && !defined (S_ISFIFO)
-#define        S_ISFIFO(m)     (((m)&S_IFMT) == S_IFIFO)       /* fifo - named pipe */
-#endif
-
-#if defined (S_IFLNK) && !defined (S_ISLNK)
-#define        S_ISLNK(m)      (((m)&S_IFMT) == S_IFLNK)       /* symbolic link */
-#endif
-
-#if defined (S_IFSOCK) && !defined (S_ISSOCK)
-#define        S_ISSOCK(m)     (((m)&S_IFMT) == S_IFSOCK)      /* socket */
-#endif
-
-/*
- * POSIX 1003.1 5.6.1.2 <sys/stat.h> File Modes
- */
-
-#if !defined (S_IRWXU)
-#  if !defined (S_IREAD)
-#    define S_IREAD    00400
-#    define S_IWRITE   00200
-#    define S_IEXEC    00100
-#  endif /* S_IREAD */
-
-#  if !defined (S_IRUSR)
-#    define S_IRUSR    S_IREAD                 /* read, owner */
-#    define S_IWUSR    S_IWRITE                /* write, owner */
-#    define S_IXUSR    S_IEXEC                 /* execute, owner */
-
-#    define S_IRGRP    (S_IREAD  >> 3)         /* read, group */
-#    define S_IWGRP    (S_IWRITE >> 3)         /* write, group */
-#    define S_IXGRP    (S_IEXEC  >> 3)         /* execute, group */
-
-#    define S_IROTH    (S_IREAD  >> 6)         /* read, other */
-#    define S_IWOTH    (S_IWRITE >> 6)         /* write, other */
-#    define S_IXOTH    (S_IEXEC  >> 6)         /* execute, other */
-#  endif /* !S_IRUSR */
-
-#  define S_IRWXU      (S_IRUSR | S_IWUSR | S_IXUSR)
-#  define S_IRWXG      (S_IRGRP | S_IWGRP | S_IXGRP)
-#  define S_IRWXO      (S_IROTH | S_IWOTH | S_IXOTH)
-#endif /* !S_IRWXU */
-
-/* These are non-standard, but are used in builtins.c$symbolic_umask() */
-#define S_IRUGO                (S_IRUSR | S_IRGRP | S_IROTH)
-#define S_IWUGO                (S_IWUSR | S_IWGRP | S_IWOTH)
-#define S_IXUGO                (S_IXUSR | S_IXGRP | S_IXOTH)
-
-#endif /* _POSIXSTAT_H_ */
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..c6164b792336b1eb4f0d28ecc5e2fb6a0dc16761
--- /dev/null
@@ -0,0 +1 @@
+../../include/posixstat.h
\ No newline at end of file
deleted file mode 100644 (file)
index 154f7f8108d075569576990c9ee5c23be93b2950..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,458 +0,0 @@
-/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
-
-/* Copyright (C) 1988,1989 Free Software Foundation, Inc.
-
-   This file is part of GNU Readline, a library for reading lines
-   of text with interactive input and history editing.
-
-   Readline 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 2, or (at your option) any
-   later version.
-
-   Readline 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 Readline; see the file COPYING.  If not, write to the Free
-   Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-#  include <config.h>
-#endif
-
-#if defined (HAVE_UNISTD_H)
-#  ifdef _MINIX
-#    include <sys/types.h>
-#  endif
-#  include <unistd.h>
-#endif
-
-#if defined (HAVE_STRING_H)
-#  include <string.h>
-#else /* !HAVE_STRING_H */
-#  include <strings.h>
-#endif /* !HAVE_STRING_H */  
-
-#if defined (HAVE_STDLIB_H)
-#  include <stdlib.h>
-#else
-#  include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <sys/types.h>
-#include <pwd.h>
-
-#include "tilde.h"
-
-#if defined (TEST) || defined (STATIC_MALLOC)
-static void *xmalloc (), *xrealloc ();
-#else
-#  include "xmalloc.h"
-#endif /* TEST || STATIC_MALLOC */
-
-#if !defined (HAVE_GETPW_DECLS)
-extern struct passwd *getpwuid PARAMS((uid_t));
-extern struct passwd *getpwnam PARAMS((const char *));
-#endif /* !HAVE_GETPW_DECLS */
-
-#if !defined (savestring)
-#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x))
-#endif /* !savestring */
-
-#if !defined (NULL)
-#  if defined (__STDC__)
-#    define NULL ((void *) 0)
-#  else
-#    define NULL 0x0
-#  endif /* !__STDC__ */
-#endif /* !NULL */
-
-/* If being compiled as part of bash, these will be satisfied from
-   variables.o.  If being compiled as part of readline, they will
-   be satisfied from shell.o. */
-extern char *sh_get_home_dir PARAMS((void));
-extern char *sh_get_env_value PARAMS((const char *));
-
-/* The default value of tilde_additional_prefixes.  This is set to
-   whitespace preceding a tilde so that simple programs which do not
-   perform any word separation get desired behaviour. */
-static const char *default_prefixes[] =
-  { " ~", "\t~", (const char *)NULL };
-
-/* The default value of tilde_additional_suffixes.  This is set to
-   whitespace or newline so that simple programs which do not
-   perform any word separation get desired behaviour. */
-static const char *default_suffixes[] =
-  { " ", "\n", (const char *)NULL };
-
-/* If non-null, this contains the address of a function that the application
-   wants called before trying the standard tilde expansions.  The function
-   is called with the text sans tilde, and returns a malloc()'ed string
-   which is the expansion, or a NULL pointer if the expansion fails. */
-tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *)NULL;
-
-/* If non-null, this contains the address of a function to call if the
-   standard meaning for expanding a tilde fails.  The function is called
-   with the text (sans tilde, as in "foo"), and returns a malloc()'ed string
-   which is the expansion, or a NULL pointer if there is no expansion. */
-tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *)NULL;
-
-/* When non-null, this is a NULL terminated array of strings which
-   are duplicates for a tilde prefix.  Bash uses this to expand
-   `=~' and `:~'. */
-char **tilde_additional_prefixes = (char **)default_prefixes;
-
-/* When non-null, this is a NULL terminated array of strings which match
-   the end of a username, instead of just "/".  Bash sets this to
-   `:' and `=~'. */
-char **tilde_additional_suffixes = (char **)default_suffixes;
-
-static int tilde_find_prefix PARAMS((const char *, int *));
-static int tilde_find_suffix PARAMS((const char *));
-static char *isolate_tilde_prefix PARAMS((const char *, int *));
-static char *glue_prefix_and_suffix PARAMS((char *, const char *, int));
-
-/* Find the start of a tilde expansion in STRING, and return the index of
-   the tilde which starts the expansion.  Place the length of the text
-   which identified this tilde starter in LEN, excluding the tilde itself. */
-static int
-tilde_find_prefix (string, len)
-     const char *string;
-     int *len;
-{
-  register int i, j, string_len;
-  register char **prefixes;
-
-  prefixes = tilde_additional_prefixes;
-
-  string_len = strlen (string);
-  *len = 0;
-
-  if (*string == '\0' || *string == '~')
-    return (0);
-
-  if (prefixes)
-    {
-      for (i = 0; i < string_len; i++)
-       {
-         for (j = 0; prefixes[j]; j++)
-           {
-             if (strncmp (string + i, prefixes[j], strlen (prefixes[j])) == 0)
-               {
-                 *len = strlen (prefixes[j]) - 1;
-                 return (i + *len);
-               }
-           }
-       }
-    }
-  return (string_len);
-}
-
-/* Find the end of a tilde expansion in STRING, and return the index of
-   the character which ends the tilde definition.  */
-static int
-tilde_find_suffix (string)
-     const char *string;
-{
-  register int i, j, string_len;
-  register char **suffixes;
-
-  suffixes = tilde_additional_suffixes;
-  string_len = strlen (string);
-
-  for (i = 0; i < string_len; i++)
-    {
-#if defined (__MSDOS__)
-      if (string[i] == '/' || string[i] == '\\' /* || !string[i] */)
-#else
-      if (string[i] == '/' /* || !string[i] */)
-#endif
-       break;
-
-      for (j = 0; suffixes && suffixes[j]; j++)
-       {
-         if (strncmp (string + i, suffixes[j], strlen (suffixes[j])) == 0)
-           return (i);
-       }
-    }
-  return (i);
-}
-
-/* Return a new string which is the result of tilde expanding STRING. */
-char *
-tilde_expand (string)
-     const char *string;
-{
-  char *result;
-  int result_size, result_index;
-
-  result_index = result_size = 0;
-  if (result = strchr (string, '~'))
-    result = (char *)xmalloc (result_size = (strlen (string) + 16));
-  else
-    result = (char *)xmalloc (result_size = (strlen (string) + 1));
-
-  /* Scan through STRING expanding tildes as we come to them. */
-  while (1)
-    {
-      register int start, end;
-      char *tilde_word, *expansion;
-      int len;
-
-      /* Make START point to the tilde which starts the expansion. */
-      start = tilde_find_prefix (string, &len);
-
-      /* Copy the skipped text into the result. */
-      if ((result_index + start + 1) > result_size)
-       result = (char *)xrealloc (result, 1 + (result_size += (start + 20)));
-
-      strncpy (result + result_index, string, start);
-      result_index += start;
-
-      /* Advance STRING to the starting tilde. */
-      string += start;
-
-      /* Make END be the index of one after the last character of the
-        username. */
-      end = tilde_find_suffix (string);
-
-      /* If both START and END are zero, we are all done. */
-      if (!start && !end)
-       break;
-
-      /* Expand the entire tilde word, and copy it into RESULT. */
-      tilde_word = (char *)xmalloc (1 + end);
-      strncpy (tilde_word, string, end);
-      tilde_word[end] = '\0';
-      string += end;
-
-      expansion = tilde_expand_word (tilde_word);
-      free (tilde_word);
-
-      len = strlen (expansion);
-#ifdef __CYGWIN__
-      /* Fix for Cygwin to prevent ~user/xxx from expanding to //xxx when
-        $HOME for `user' is /.  On cygwin, // denotes a network drive. */
-      if (len > 1 || *expansion != '/' || *string != '/')
-#endif
-       {
-         if ((result_index + len + 1) > result_size)
-           result = (char *)xrealloc (result, 1 + (result_size += (len + 20)));
-
-         strcpy (result + result_index, expansion);
-         result_index += len;
-       }
-      free (expansion);
-    }
-
-  result[result_index] = '\0';
-
-  return (result);
-}
-
-/* Take FNAME and return the tilde prefix we want expanded.  If LENP is
-   non-null, the index of the end of the prefix into FNAME is returned in
-   the location it points to. */
-static char *
-isolate_tilde_prefix (fname, lenp)
-     const char *fname;
-     int *lenp;
-{
-  char *ret;
-  int i;
-
-  ret = (char *)xmalloc (strlen (fname));
-#if defined (__MSDOS__)
-  for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++)
-#else
-  for (i = 1; fname[i] && fname[i] != '/'; i++)
-#endif
-    ret[i - 1] = fname[i];
-  ret[i - 1] = '\0';
-  if (lenp)
-    *lenp = i;
-  return ret;
-}
-
-/* Return a string that is PREFIX concatenated with SUFFIX starting at
-   SUFFIND. */
-static char *
-glue_prefix_and_suffix (prefix, suffix, suffind)
-     char *prefix;
-     const char *suffix;
-     int suffind;
-{
-  char *ret;
-  int plen, slen;
-
-  plen = (prefix && *prefix) ? strlen (prefix) : 0;
-  slen = strlen (suffix + suffind);
-  ret = (char *)xmalloc (plen + slen + 1);
-  if (plen)
-    strcpy (ret, prefix);
-  strcpy (ret + plen, suffix + suffind);
-  return ret;
-}
-
-/* Do the work of tilde expansion on FILENAME.  FILENAME starts with a
-   tilde.  If there is no expansion, call tilde_expansion_failure_hook.
-   This always returns a newly-allocated string, never static storage. */
-char *
-tilde_expand_word (filename)
-     const char *filename;
-{
-  char *dirname, *expansion, *username;
-  int user_len;
-  struct passwd *user_entry;
-
-  if (filename == 0)
-    return ((char *)NULL);
-
-  if (*filename != '~')
-    return (savestring (filename));
-
-  /* A leading `~/' or a bare `~' is *always* translated to the value of
-     $HOME or the home directory of the current user, regardless of any
-     preexpansion hook. */
-  if (filename[1] == '\0' || filename[1] == '/')
-    {
-      /* Prefix $HOME to the rest of the string. */
-      expansion = sh_get_env_value ("HOME");
-
-      /* If there is no HOME variable, look up the directory in
-        the password database. */
-      if (expansion == 0)
-       expansion = sh_get_home_dir ();
-
-      return (glue_prefix_and_suffix (expansion, filename, 1));
-    }
-
-  username = isolate_tilde_prefix (filename, &user_len);
-
-  if (tilde_expansion_preexpansion_hook)
-    {
-      expansion = (*tilde_expansion_preexpansion_hook) (username);
-      if (expansion)
-       {
-         dirname = glue_prefix_and_suffix (expansion, filename, user_len);
-         free (username);
-         free (expansion);
-         return (dirname);
-       }
-    }
-
-  /* No preexpansion hook, or the preexpansion hook failed.  Look in the
-     password database. */
-  dirname = (char *)NULL;
-  user_entry = getpwnam (username);
-  if (user_entry == 0)
-    {
-      /* If the calling program has a special syntax for expanding tildes,
-        and we couldn't find a standard expansion, then let them try. */
-      if (tilde_expansion_failure_hook)
-       {
-         expansion = (*tilde_expansion_failure_hook) (username);
-         if (expansion)
-           {
-             dirname = glue_prefix_and_suffix (expansion, filename, user_len);
-             free (expansion);
-           }
-       }
-      free (username);
-      /* If we don't have a failure hook, or if the failure hook did not
-        expand the tilde, return a copy of what we were passed. */
-      if (dirname == 0)
-       dirname = savestring (filename);
-    }
-  else
-    {
-      free (username);
-      dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len);
-    }
-
-  endpwent ();
-  return (dirname);
-}
-
-\f
-#if defined (TEST)
-#undef NULL
-#include <stdio.h>
-
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  char *result, line[512];
-  int done = 0;
-
-  while (!done)
-    {
-      printf ("~expand: ");
-      fflush (stdout);
-
-      if (!gets (line))
-       strcpy (line, "done");
-
-      if ((strcmp (line, "done") == 0) ||
-         (strcmp (line, "quit") == 0) ||
-         (strcmp (line, "exit") == 0))
-       {
-         done = 1;
-         break;
-       }
-
-      result = tilde_expand (line);
-      printf ("  --> %s\n", result);
-      free (result);
-    }
-  exit (0);
-}
-
-static void memory_error_and_abort ();
-
-static void *
-xmalloc (bytes)
-     size_t bytes;
-{
-  void *temp = (char *)malloc (bytes);
-
-  if (!temp)
-    memory_error_and_abort ();
-  return (temp);
-}
-
-static void *
-xrealloc (pointer, bytes)
-     void *pointer;
-     int bytes;
-{
-  void *temp;
-
-  if (!pointer)
-    temp = malloc (bytes);
-  else
-    temp = realloc (pointer, bytes);
-
-  if (!temp)
-    memory_error_and_abort ();
-
-  return (temp);
-}
-
-static void
-memory_error_and_abort ()
-{
-  fprintf (stderr, "readline: out of virtual memory\n");
-  abort ();
-}
-
-/*
- * Local variables:
- * compile-command: "gcc -g -DTEST -o tilde tilde.c"
- * end:
- */
-#endif /* TEST */
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..439ceedeb47c83ea46876a2fd8ba3f3b3b353e7a
--- /dev/null
@@ -0,0 +1 @@
+../tilde/tilde.c
\ No newline at end of file
deleted file mode 100644 (file)
index f8182c999d9b43c2b88cceb0f4142eb607b95154..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* tilde.h: Externally available variables and function in libtilde.a. */
-
-/* Copyright (C) 1992 Free Software Foundation, Inc.
-
-   This file contains the Readline Library (the Library), a set of
-   routines for providing Emacs style line input to programs that ask
-   for it.
-
-   The Library 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 2, or (at your option)
-   any later version.
-
-   The Library 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.
-
-   The GNU General Public License is often shipped with GNU software, and
-   is generally kept in a file called COPYING or LICENSE.  If you do not
-   have a copy of the license, write to the Free Software Foundation,
-   59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_TILDE_H_)
-#  define _TILDE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* A function can be defined using prototypes and compile on both ANSI C
-   and traditional C compilers with something like this:
-       extern char *func PARAMS((char *, char *, int)); */
-
-#if !defined (PARAMS)
-#  if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
-#    define PARAMS(protos) protos
-#  else
-#    define PARAMS(protos) ()
-#  endif
-#endif
-
-typedef char *tilde_hook_func_t PARAMS((char *));
-
-/* If non-null, this contains the address of a function that the application
-   wants called before trying the standard tilde expansions.  The function
-   is called with the text sans tilde, and returns a malloc()'ed string
-   which is the expansion, or a NULL pointer if the expansion fails. */
-extern tilde_hook_func_t *tilde_expansion_preexpansion_hook;
-
-/* If non-null, this contains the address of a function to call if the
-   standard meaning for expanding a tilde fails.  The function is called
-   with the text (sans tilde, as in "foo"), and returns a malloc()'ed string
-   which is the expansion, or a NULL pointer if there is no expansion. */
-extern tilde_hook_func_t *tilde_expansion_failure_hook;
-
-/* When non-null, this is a NULL terminated array of strings which
-   are duplicates for a tilde prefix.  Bash uses this to expand
-   `=~' and `:~'. */
-extern char **tilde_additional_prefixes;
-
-/* When non-null, this is a NULL terminated array of strings which match
-   the end of a username, instead of just "/".  Bash sets this to
-   `:' and `=~'. */
-extern char **tilde_additional_suffixes;
-
-/* Return a new string which is the result of tilde expanding STRING. */
-extern char *tilde_expand PARAMS((const char *));
-
-/* Do the work of tilde expansion on FILENAME.  FILENAME starts with a
-   tilde.  If there is no expansion, call tilde_expansion_failure_hook. */
-extern char *tilde_expand_word PARAMS((const char *));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _TILDE_H_ */
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..6fea2aeaa843ff166e9838a0c7fcbc51be282dca
--- /dev/null
@@ -0,0 +1 @@
+../tilde/tilde.h
\ No newline at end of file
index 479d9c3..4ccbf66 100644 (file)
@@ -355,6 +355,7 @@ COMMAND *
 make_case_command (word, clauses, lineno)
      WORD_DESC *word;
      PATTERN_LIST *clauses;
+     int lineno;
 {
   CASE_COM *temp;
 
diff --git a/pathnames.h b/pathnames.h
deleted file mode 100644 (file)
index 27817af..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/* pathnames.h -- absolute filenames that bash wants for various defaults. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
-   This file is part of GNU Bash, the Bourne Again SHell.
-
-   Bash is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   Bash is distributed in the hope that it will be useful, but WITHOUT
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-   License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with Bash; see the file COPYING.  If not, write to the Free
-   Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_PATHNAMES_H_)
-#define _PATHNAMES_H_
-
-/* The default file for hostname completion. */
-#define DEFAULT_HOSTS_FILE "/etc/hosts"
-
-/* The default login shell startup file. */
-#define SYS_PROFILE "/etc/profile"
-
-#endif /* _PATHNAMES_H */
diff --git a/po/bash.po.orig b/po/bash.po.orig
new file mode 100644 (file)
index 0000000..023388d
--- /dev/null
@@ -0,0 +1,5623 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#: array.c:695 array.c:755 array.c:879 bashhist.c:661 bashline.c:801
+#: bashline.c:1416 error.c:88 error.c:318 error.c:320 error.c:322
+#: execute_cmd.c:2005 execute_cmd.c:2007 execute_cmd.c:2195 execute_cmd.c:2441
+#: execute_cmd.c:2580 execute_cmd.c:3186 execute_cmd.c:3838 expr.c:1092
+#: expr.c:1093 general.c:132 jobs.c:1128 jobs.c:1143 jobs.c:2318 jobs.c:2319
+#: locale.c:64 locale.c:422 parse.y:1209 pcomplete.c:937 pcomplete.c:947
+#: pcomplete.c:1076 print_cmd.c:142 print_cmd.c:305 print_cmd.c:364
+#: print_cmd.c:368 print_cmd.c:374 print_cmd.c:378 print_cmd.c:548
+#: print_cmd.c:733 print_cmd.c:847 print_cmd.c:851 subst.c:1483 subst.c:1510
+#: subst.c:1734 subst.c:1754 subst.c:4238 subst.c:4274 subst.c:6391
+#: syntax.h:43 unwind_prot.c:173 variables.c:1631 variables.c:2381
+#: /usr/homes/chet/src/bash/src/parse.y:1209 builtins/common.c:144
+#: builtins/common.c:640 builtins/getopt.c:204 builtins/mkbuiltins.c:1067
+#: builtins/mkbuiltins.c:1070 builtins/mkbuiltins.c:1072
+#: builtins/mkbuiltins.c:1074 builtins/mkbuiltins.c:1079
+#: builtins/mkbuiltins.c:1084 builtins/mkbuiltins.c:1088
+#: builtins/mkbuiltins.c:1094 builtins/mkbuiltins.c:1100
+#: builtins/mkbuiltins.c:1108 builtins/mkbuiltins.c:1111
+#: builtins/mkbuiltins.c:1207 builtins/mkbuiltins.c:1208
+#: builtins/caller.def:127 builtins/caller.def:131 builtins/command.def:134
+#: builtins/complete.def:567 builtins/declare.def:238 builtins/declare.def:355
+#: builtins/declare.def:438 builtins/fc.def:338 builtins/getopts.def:310
+#: builtins/help.def:105 builtins/help.def:110 builtins/history.def:291
+#: builtins/printf.def:123 builtins/printf.def:726 builtins/pushd.def:330
+#: builtins/pushd.def:371 builtins/pushd.def:654 builtins/pushd.def:662
+#: builtins/pushd.def:665 builtins/pushd.def:675 builtins/pushd.def:679
+#: builtins/pushd.def:683 builtins/pushd.def:686 builtins/pushd.def:689
+#: builtins/pushd.def:698 builtins/pushd.def:702 builtins/pushd.def:706
+#: builtins/pushd.def:709 builtins/read.def:258 builtins/read.def:386
+#: builtins/read.def:595 builtins/setattr.def:353 builtins/setattr.def:396
+#: builtins/ulimit.def:111 builtins/umask.def:131 lib/sh/snprintf.c:394
+#: lib/sh/snprintf.c:1691 lib/sh/stringlist.c:235 lib/sh/stringvec.c:223
+#: lib/malloc/stats.c:99
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-12-04 16:07-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: arrayfunc.c:43
+msgid "bad array subscript"
+msgstr ""
+
+#: arrayfunc.c:304
+#, c-format
+msgid "%s: cannot assign to non-numeric index"
+msgstr ""
+
+#: bashhist.c:319
+#, c-format
+msgid "%s: cannot create: %s"
+msgstr ""
+
+#: bashline.c:2789
+msgid "bash_execute_unix_command: cannot find keymap for command"
+msgstr ""
+
+#: bashline.c:2838
+#, c-format
+msgid "%s: first non-whitespace character is not `\"'"
+msgstr ""
+
+#: bashline.c:2867 braces.c:129
+#, c-format
+msgid "no closing `%c' in %s"
+msgstr ""
+
+#: bashline.c:2901
+#, c-format
+msgid "%s: missing colon separator"
+msgstr ""
+
+#: error.c:163
+#, c-format
+msgid "last command: %s\n"
+msgstr ""
+
+#: error.c:168
+#, c-format
+msgid "Report this to %s\n"
+msgstr ""
+
+#: error.c:171
+msgid "Stopping myself..."
+msgstr ""
+
+#: error.c:258
+#, c-format
+msgid "%s: warning: "
+msgstr ""
+
+#: error.c:403
+msgid "unknown command error"
+msgstr ""
+
+#: error.c:404
+msgid "bad command type"
+msgstr ""
+
+#: error.c:405
+msgid "bad connector"
+msgstr ""
+
+#: error.c:406
+msgid "bad jump"
+msgstr ""
+
+#: error.c:444
+#, c-format
+msgid "%s: unbound variable"
+msgstr ""
+
+#: error.c:451 builtins/common.c:221
+#, c-format
+msgid "%s: readonly variable"
+msgstr ""
+
+#: eval.c:173
+msgid "\atimed out waiting for input: auto-logout\n"
+msgstr ""
+
+#: execute_cmd.c:447
+msgid "close"
+msgstr ""
+
+#: execute_cmd.c:447
+msgid "open"
+msgstr ""
+
+#: execute_cmd.c:465
+#, c-format
+msgid "cannot redirect standard input from /dev/null: %s"
+msgstr ""
+
+#: execute_cmd.c:1035
+#, c-format
+msgid "TIMEFORMAT: `%c': invalid format character"
+msgstr ""
+
+#: execute_cmd.c:3520
+#, c-format
+msgid "%s: restricted: cannot specify `/' in command names"
+msgstr ""
+
+#: execute_cmd.c:3608
+#, c-format
+msgid "%s: command not found"
+msgstr ""
+
+#: execute_cmd.c:3820 shell.c:1393 builtins/evalfile.c:127
+#: builtins/hash.def:158
+#, c-format
+msgid "%s: is a directory"
+msgstr ""
+
+#: execute_cmd.c:3838
+#, c-format
+msgid "%s: %s: bad interpreter"
+msgstr ""
+
+#: execute_cmd.c:3875 shell.c:1403 builtins/evalfile.c:172
+#, c-format
+msgid "%s: cannot execute binary file"
+msgstr ""
+
+#: execute_cmd.c:3948 builtins/declare.def:306
+#, c-format
+msgid "%s: readonly function"
+msgstr ""
+
+#: execute_cmd.c:3987
+#, c-format
+msgid "cannot duplicate fd %d to fd %d"
+msgstr ""
+
+#: expr.c:238
+msgid "expression recursion level exceeded"
+msgstr ""
+
+#: expr.c:262
+msgid "recursion stack underflow"
+msgstr ""
+
+#: expr.c:373
+msgid "syntax error in expression"
+msgstr ""
+
+#: expr.c:413
+msgid "attempted assignment to non-variable"
+msgstr ""
+
+#: expr.c:434 expr.c:439 expr.c:749
+msgid "division by 0"
+msgstr ""
+
+#: expr.c:465
+msgid "bug: bad expassign token"
+msgstr ""
+
+#: expr.c:495 expr.c:510 builtins/let.def:92 builtins/let.def:117
+msgid "expression expected"
+msgstr ""
+
+#: expr.c:507
+msgid "`:' expected for conditional expression"
+msgstr ""
+
+#: expr.c:774
+msgid "exponent less than 0"
+msgstr ""
+
+#: expr.c:818
+msgid "identifier expected after pre-increment or pre-decrement"
+msgstr ""
+
+#: expr.c:846
+msgid "missing `)'"
+msgstr ""
+
+#: expr.c:870
+msgid "syntax error: operand expected"
+msgstr ""
+
+#: expr.c:1091
+#, c-format
+msgid "%s%s%s: %s (error token is \"%s\")"
+msgstr ""
+
+#: expr.c:1145
+msgid "bad number"
+msgstr ""
+
+#: expr.c:1149
+msgid "invalid arithmetic base"
+msgstr ""
+
+#: expr.c:1169
+msgid "value too great for base"
+msgstr ""
+
+#: expr.c:1217
+#, c-format
+msgid "%s: expression error\n"
+msgstr ""
+
+#: general.c:58
+msgid "getcwd: cannot access parent directories"
+msgstr ""
+
+#: general.c:227 general.c:232 builtins/common.c:193
+#, c-format
+msgid "`%s': not a valid identifier"
+msgstr ""
+
+#: input.c:229
+#, c-format
+msgid "cannot allocate new file descriptor for bash input from fd %d"
+msgstr ""
+
+#: input.c:237
+#, c-format
+msgid "save_bash_input: buffer already exists for new fd %d"
+msgstr ""
+
+#: jobs.c:692
+#, c-format
+msgid "deleting stopped job %d with process group %ld"
+msgstr ""
+
+#: jobs.c:1631 nojobs.c:646
+#, c-format
+msgid "wait: pid %ld is not a child of this shell"
+msgstr ""
+
+#: jobs.c:1814
+#, c-format
+msgid "wait_for: No record of process %ld"
+msgstr ""
+
+#: jobs.c:1957
+#, c-format
+msgid "wait_for: job == NO_JOB, giving the terminal to shell_pgrp (%ld)"
+msgstr ""
+
+#: jobs.c:2061
+#, c-format
+msgid "wait_for_job: job %d is stopped"
+msgstr ""
+
+#: jobs.c:2283
+#, c-format
+msgid "%s: job has terminated"
+msgstr ""
+
+#: jobs.c:2292
+#, c-format
+msgid "%s: job %d already in background"
+msgstr ""
+
+#: jobs.c:3036
+msgid "no job control in this shell"
+msgstr ""
+
+#: jobs.c:3250
+#, c-format
+msgid "tcsetpgrp(%d) failed: pid %ld to pgrp %ld"
+msgstr ""
+
+#: mailcheck.c:381
+msgid "You have mail in $_"
+msgstr ""
+
+#: mailcheck.c:406
+msgid "You have new mail in $_"
+msgstr ""
+
+#: mailcheck.c:422
+#, c-format
+msgid "The mail in %s has been read\n"
+msgstr ""
+
+#: make_cmd.c:316
+msgid "syntax error: arithmetic expression required"
+msgstr ""
+
+#: make_cmd.c:318
+msgid "syntax error: `;' unexpected"
+msgstr ""
+
+#: make_cmd.c:558
+#, c-format
+msgid "make_here_document: bad instruction type %d"
+msgstr ""
+
+#: make_cmd.c:728
+#, c-format
+msgid "make_redirection: redirection instruction `%d' out of range"
+msgstr ""
+
+#: mksyntax.c:334
+#, c-format
+msgid "%s: %s: cannot open: %s\n"
+msgstr ""
+
+#: parse.y:1663 /usr/homes/chet/src/bash/src/parse.y:1663
+msgid "read_a_line: ignored null byte in input"
+msgstr ""
+
+#: parse.y:1928 /usr/homes/chet/src/bash/src/parse.y:1928
+msgid "shell_getc: ignored null byte in input"
+msgstr ""
+
+#: parse.y:2724 /usr/homes/chet/src/bash/src/parse.y:2724
+#, c-format
+msgid "unexpected EOF while looking for matching `%c'"
+msgstr ""
+
+#: parse.y:3009 /usr/homes/chet/src/bash/src/parse.y:3009
+msgid "unexpected EOF while looking for `]]'"
+msgstr ""
+
+#: parse.y:3014 /usr/homes/chet/src/bash/src/parse.y:3014
+#, c-format
+msgid "syntax error in conditional expression: unexpected token `%s'"
+msgstr ""
+
+#: parse.y:3018 /usr/homes/chet/src/bash/src/parse.y:3018
+msgid "syntax error in conditional expression"
+msgstr ""
+
+#: parse.y:3096 /usr/homes/chet/src/bash/src/parse.y:3096
+#, c-format
+msgid "unexpected token `%s', expected `)'"
+msgstr ""
+
+#: parse.y:3100 /usr/homes/chet/src/bash/src/parse.y:3100
+msgid "expected `)'"
+msgstr ""
+
+#: parse.y:3128 /usr/homes/chet/src/bash/src/parse.y:3128
+#, c-format
+msgid "unexpected argument `%s' to conditional unary operator"
+msgstr ""
+
+#: parse.y:3132 /usr/homes/chet/src/bash/src/parse.y:3132
+msgid "unexpected argument to conditional unary operator"
+msgstr ""
+
+#: parse.y:3160 /usr/homes/chet/src/bash/src/parse.y:3160
+msgid "-n"
+msgstr ""
+
+#: parse.y:3169 /usr/homes/chet/src/bash/src/parse.y:3169
+#, c-format
+msgid "unexpected token `%s', conditional binary operator expected"
+msgstr ""
+
+#: parse.y:3173 /usr/homes/chet/src/bash/src/parse.y:3173
+msgid "conditional binary operator expected"
+msgstr ""
+
+#: parse.y:3189 /usr/homes/chet/src/bash/src/parse.y:3189
+#, c-format
+msgid "unexpected argument `%s' to conditional binary operator"
+msgstr ""
+
+#: parse.y:3193 /usr/homes/chet/src/bash/src/parse.y:3193
+msgid "unexpected argument to conditional binary operator"
+msgstr ""
+
+#: parse.y:3204 /usr/homes/chet/src/bash/src/parse.y:3204
+#, c-format
+msgid "unexpected token `%c' in conditional command"
+msgstr ""
+
+#: parse.y:3207 /usr/homes/chet/src/bash/src/parse.y:3207
+#, c-format
+msgid "unexpected token `%s' in conditional command"
+msgstr ""
+
+#: parse.y:3211 /usr/homes/chet/src/bash/src/parse.y:3211
+#, c-format
+msgid "unexpected token %d in conditional command"
+msgstr ""
+
+#: parse.y:4398 /usr/homes/chet/src/bash/src/parse.y:4398
+#, c-format
+msgid "syntax error near unexpected token `%s'"
+msgstr ""
+
+#: parse.y:4416 /usr/homes/chet/src/bash/src/parse.y:4416
+#, c-format
+msgid "syntax error near `%s'"
+msgstr ""
+
+#: parse.y:4426 /usr/homes/chet/src/bash/src/parse.y:4426
+msgid "syntax error: unexpected end of file"
+msgstr ""
+
+#: parse.y:4426 /usr/homes/chet/src/bash/src/parse.y:4426
+msgid "syntax error"
+msgstr ""
+
+#: parse.y:4488 /usr/homes/chet/src/bash/src/parse.y:4488
+#, c-format
+msgid "Use \"%s\" to leave the shell.\n"
+msgstr ""
+
+#: parse.y:4647 /usr/homes/chet/src/bash/src/parse.y:4647
+msgid "unexpected EOF while looking for matching `)'"
+msgstr ""
+
+#: pcomplete.c:987
+#, c-format
+msgid "completion: function `%s' not found"
+msgstr ""
+
+#: pcomplete.c:1222
+msgid "ERROR: command_line_to_word_list returns NULL"
+msgstr ""
+
+#: pcomplib.c:177
+#, c-format
+msgid "progcomp_insert: %s: NULL COMPSPEC"
+msgstr ""
+
+#: print_cmd.c:259
+#, c-format
+msgid "print_command: bad connector `%d'"
+msgstr ""
+
+#: print_cmd.c:1171
+#, c-format
+msgid "cprintf: `%c': invalid format character"
+msgstr ""
+
+#: redir.c:98 redir.c:133
+msgid "file descriptor out of range"
+msgstr ""
+
+#: redir.c:140
+#, c-format
+msgid "%s: ambiguous redirect"
+msgstr ""
+
+#: redir.c:144
+#, c-format
+msgid "%s: cannot overwrite existing file"
+msgstr ""
+
+#: redir.c:149
+#, c-format
+msgid "%s: restricted: cannot redirect output"
+msgstr ""
+
+#: redir.c:154
+#, c-format
+msgid "cannot create temp file for here document: %s"
+msgstr ""
+
+#: redir.c:508
+msgid "/dev/(tcp|udp)/host/port not supported without networking"
+msgstr ""
+
+#: redir.c:948
+msgid "redirection error: cannot duplicate fd"
+msgstr ""
+
+#: shell.c:300
+msgid "could not find /tmp, please create!"
+msgstr ""
+
+#: shell.c:304
+msgid "/tmp must be a valid directory name"
+msgstr ""
+
+#: shell.c:463 shell.c:735 builtins/common.c:156
+#, c-format
+msgid "%s: option requires an argument"
+msgstr ""
+
+#: shell.c:748 builtins/common.c:179
+#, c-format
+msgid "%s: invalid option"
+msgstr ""
+
+#: shell.c:837
+#, c-format
+msgid "%c%c: invalid option"
+msgstr ""
+
+#: shell.c:1588
+msgid "I have no name!"
+msgstr ""
+
+#: shell.c:1721
+#, c-format
+msgid "GNU bash, version %s-(%s)\n"
+msgstr ""
+
+#: shell.c:1722
+#, c-format
+msgid ""
+"Usage:\t%s [GNU long option] [option] ...\n"
+"\t%s [GNU long option] [option] script-file ...\n"
+msgstr ""
+
+#: shell.c:1724
+msgid "GNU long options:\n"
+msgstr ""
+
+#: shell.c:1726
+#, c-format
+msgid "\t--%s\n"
+msgstr ""
+
+#: shell.c:1728
+msgid "Shell options:\n"
+msgstr ""
+
+#: shell.c:1729
+msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
+msgstr ""
+
+#: shell.c:1732 builtins/mkbuiltins.c:131 builtins/set.def:2
+msgid "set"
+msgstr ""
+
+#: shell.c:1744
+#, c-format
+msgid "\t-%s or -o option\n"
+msgstr ""
+
+#: shell.c:1750
+#, c-format
+msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
+msgstr ""
+
+#: shell.c:1751
+#, c-format
+msgid "Type `%s -c help' for more information about shell builtin commands.\n"
+msgstr ""
+
+#: shell.c:1752
+msgid "Use the `bashbug' command to report bugs.\n"
+msgstr ""
+
+#: sig.c:483
+msgid "Bad code in sig.c: sigprocmask"
+msgstr ""
+
+#: siglist.c:47
+msgid "Bogus signal"
+msgstr ""
+
+#: siglist.c:50
+msgid "Hangup"
+msgstr ""
+
+#: siglist.c:54
+msgid "Interrupt"
+msgstr ""
+
+#: siglist.c:58
+msgid "Quit"
+msgstr ""
+
+#: siglist.c:62
+msgid "Illegal instruction"
+msgstr ""
+
+#: siglist.c:66
+msgid "BPT trace/trap"
+msgstr ""
+
+#: siglist.c:74
+msgid "ABORT instruction"
+msgstr ""
+
+#: siglist.c:78
+msgid "EMT instruction"
+msgstr ""
+
+#: siglist.c:82
+msgid "Floating point exception"
+msgstr ""
+
+#: siglist.c:86
+msgid "Killed"
+msgstr ""
+
+#: siglist.c:90
+msgid "Bus error"
+msgstr ""
+
+#: siglist.c:94
+msgid "Segmentation fault"
+msgstr ""
+
+#: siglist.c:98
+msgid "Bad system call"
+msgstr ""
+
+#: siglist.c:102
+msgid "Broken pipe"
+msgstr ""
+
+#: siglist.c:106
+msgid "Alarm clock"
+msgstr ""
+
+#: siglist.c:110
+msgid "Terminated"
+msgstr ""
+
+#: siglist.c:114
+msgid "Urgent IO condition"
+msgstr ""
+
+#: siglist.c:118
+msgid "Stopped (signal)"
+msgstr ""
+
+#: siglist.c:126
+msgid "Continue"
+msgstr ""
+
+#: siglist.c:134
+msgid "Child death or stop"
+msgstr ""
+
+#: siglist.c:138
+msgid "Stopped (tty input)"
+msgstr ""
+
+#: siglist.c:142
+msgid "Stopped (tty output)"
+msgstr ""
+
+#: siglist.c:146
+msgid "I/O ready"
+msgstr ""
+
+#: siglist.c:150
+msgid "CPU limit"
+msgstr ""
+
+#: siglist.c:154
+msgid "File limit"
+msgstr ""
+
+#: siglist.c:158
+msgid "Alarm (virtual)"
+msgstr ""
+
+#: siglist.c:162
+msgid "Alarm (profile)"
+msgstr ""
+
+#: siglist.c:166
+msgid "Window changed"
+msgstr ""
+
+#: siglist.c:170
+msgid "Record lock"
+msgstr ""
+
+#: siglist.c:174
+msgid "User signal 1"
+msgstr ""
+
+#: siglist.c:178
+msgid "User signal 2"
+msgstr ""
+
+#: siglist.c:182
+msgid "HFT input data pending"
+msgstr ""
+
+#: siglist.c:186
+msgid "power failure imminent"
+msgstr ""
+
+#: siglist.c:190
+msgid "system crash imminent"
+msgstr ""
+
+#: siglist.c:194
+msgid "migrate process to another CPU"
+msgstr ""
+
+#: siglist.c:198
+msgid "programming error"
+msgstr ""
+
+#: siglist.c:202
+msgid "HFT monitor mode granted"
+msgstr ""
+
+#: siglist.c:206
+msgid "HFT monitor mode retracted"
+msgstr ""
+
+#: siglist.c:210
+msgid "HFT sound sequence has completed"
+msgstr ""
+
+#: siglist.c:214
+msgid "Information request"
+msgstr ""
+
+#: siglist.c:222
+msgid "Unknown Signal #"
+msgstr ""
+
+#: siglist.c:224
+#, c-format
+msgid "Unknown Signal #%d"
+msgstr ""
+
+#: subst.c:666 subst.c:752 subst.c:865 subst.c:1107 subst.c:1370
+msgid "$("
+msgstr ""
+
+#: subst.c:876
+msgid "$["
+msgstr ""
+
+#: subst.c:876
+msgid "["
+msgstr ""
+
+#: subst.c:876
+msgid "]"
+msgstr ""
+
+#: subst.c:1010 subst.c:1131
+#, c-format
+msgid "bad substitution: no closing `%s' in %s"
+msgstr ""
+
+#: subst.c:2006
+#, c-format
+msgid "%s%s=(%s)\n"
+msgstr ""
+
+#: subst.c:2009 variables.c:2123
+#, c-format
+msgid "%s%s=%s\n"
+msgstr ""
+
+#: subst.c:2019
+#, c-format
+msgid "%s: cannot assign list to array member"
+msgstr ""
+
+#: subst.c:3381
+msgid "sh-np"
+msgstr ""
+
+#: subst.c:3449
+#, c-format
+msgid "pid %ld: dev_fd_list:"
+msgstr ""
+
+#: subst.c:3455 /usr/local/share/bison/bison.simple:719
+#: /usr/local/share/bison/bison.simple:864
+#, c-format
+msgid " %d"
+msgstr ""
+
+#: subst.c:3515 subst.c:3531
+msgid "cannot make pipe for process substitution"
+msgstr ""
+
+#: subst.c:3562
+msgid "cannot make child for process substitution"
+msgstr ""
+
+#: subst.c:3605
+#, c-format
+msgid "cannot open named pipe %s for %s"
+msgstr ""
+
+#: subst.c:3606
+msgid "reading"
+msgstr ""
+
+#: subst.c:3606
+msgid "writing"
+msgstr ""
+
+#: subst.c:3613
+#, c-format
+msgid "cannout reset nodelay mode for fd %d"
+msgstr ""
+
+#: subst.c:3623
+#, c-format
+msgid "cannot duplicate named pipe %s as fd %d"
+msgstr ""
+
+#: subst.c:3647
+msgid "process substitution"
+msgstr ""
+
+#: subst.c:3697
+msgid "read_comsub: ignored null byte in input"
+msgstr ""
+
+#: subst.c:3798
+msgid "cannot make pipe for command substitution"
+msgstr ""
+
+#: subst.c:3827
+msgid "cannot make child for command substitution"
+msgstr ""
+
+#: subst.c:3844
+msgid "command_substitute: cannot duplicate pipe as fd 1"
+msgstr ""
+
+#: subst.c:3901
+msgid "command substitution"
+msgstr ""
+
+#: subst.c:4279
+#, c-format
+msgid "%s: parameter null or not set"
+msgstr ""
+
+#: subst.c:4524
+#, c-format
+msgid "%s: substring expression < 0"
+msgstr ""
+
+#: subst.c:4966 subst.c:4983
+msgid "#%:-=?+/}"
+msgstr ""
+
+#: subst.c:5033
+msgid "%:=+/"
+msgstr ""
+
+#: subst.c:5204
+#, c-format
+msgid "%s: bad substitution"
+msgstr ""
+
+#: subst.c:5204 builtins/history.def:247
+msgid "??"
+msgstr ""
+
+#: subst.c:5278
+#, c-format
+msgid "$%s: cannot assign in this way"
+msgstr ""
+
+#: subst.c:5792
+msgid "<("
+msgstr ""
+
+#: subst.c:5792
+msgid ">("
+msgstr ""
+
+#: subst.c:6647
+#, c-format
+msgid "no match: %s"
+msgstr ""
+
+#: syntax.h:26
+msgid "\\`$\"\n"
+msgstr ""
+
+#: syntax.h:27
+msgid "\\`$"
+msgstr ""
+
+#: syntax.h:29
+msgid "()<>;&|"
+msgstr ""
+
+#: syntax.h:32
+msgid "\"`'"
+msgstr ""
+
+#: syntax.h:35
+msgid "$<>"
+msgstr ""
+
+#: syntax.h:41
+msgid "@*+?!"
+msgstr ""
+
+#: syntax.h:45
+msgid "*?[]^"
+msgstr ""
+
+#: test.c:152
+msgid "argument expected"
+msgstr ""
+
+#: test.c:161
+#, c-format
+msgid "%s: integer expression expected"
+msgstr ""
+
+#: test.c:176
+msgid "/dev/fd/"
+msgstr ""
+
+#: test.c:202
+msgid "/dev/std"
+msgstr ""
+
+#: test.c:206
+msgid "out"
+msgstr ""
+
+#: test.c:208
+msgid "err"
+msgstr ""
+
+#: test.c:359
+msgid "`)' expected"
+msgstr ""
+
+#: test.c:361
+#, c-format
+msgid "`)' expected, found %s"
+msgstr ""
+
+#: test.c:376 test.c:785 test.c:788
+#, c-format
+msgid "%s: unary operator expected"
+msgstr ""
+
+#: test.c:541 test.c:828
+#, c-format
+msgid "%s: binary operator expected"
+msgstr ""
+
+#: test.c:903 builtins/test.def:134
+msgid "missing `]'"
+msgstr ""
+
+#: test.c:919 builtins/common.c:132
+msgid "too many arguments"
+msgstr ""
+
+#: trap.c:171
+msgid "DEFAULT_SIG"
+msgstr ""
+
+#: trap.c:173
+msgid "IGNORE_SIG"
+msgstr ""
+
+#: trap.c:175
+msgid "IMPOSSIBLE_TRAP_HANDLER"
+msgstr ""
+
+#: trap.c:179 builtins/caller.def:94
+msgid "NULL"
+msgstr ""
+
+#: trap.c:192
+msgid "invalid signal number"
+msgstr ""
+
+#: trap.c:222 builtins/common.c:638 builtins/trap.def:218
+msgid "SIG"
+msgstr ""
+
+#: trap.c:307
+#, c-format
+msgid "run_pending_traps: bad value in trap_list[%d]: %p"
+msgstr ""
+
+#: trap.c:311
+#, c-format
+msgid ""
+"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr ""
+
+#: trap.c:347
+#, c-format
+msgid "trap_handler: bad signal %d"
+msgstr ""
+
+#: trap.c:673
+msgid "exit trap"
+msgstr ""
+
+#: trap.c:781
+msgid "debug trap"
+msgstr ""
+
+#: trap.c:800
+msgid "error trap"
+msgstr ""
+
+#: trap.c:811
+msgid "return trap"
+msgstr ""
+
+#: trap.c:821
+msgid "interrupt trap"
+msgstr ""
+
+#: variables.c:287
+msgid "() {"
+msgstr ""
+
+#: variables.c:309
+#, c-format
+msgid "error importing function definition for `%s'"
+msgstr ""
+
+#: variables.c:370
+msgid "NODE"
+msgstr ""
+
+#: variables.c:383
+msgid "# "
+msgstr ""
+
+#: variables.c:387
+msgid "+ "
+msgstr ""
+
+#: variables.c:390 variables.c:2867 variables.c:3464 variables.c:3500
+#: variables.c:3632 variables.c:3735
+msgid "IFS"
+msgstr ""
+
+#: variables.c:401
+msgid "600"
+msgstr ""
+
+#: variables.c:401
+msgid "60"
+msgstr ""
+
+#: variables.c:409 variables.c:3647 variables.c:3955 builtins/getopts.def:231
+msgid "OPTIND"
+msgstr ""
+
+#: variables.c:411 variables.c:3646 variables.c:3976
+msgid "OPTERR"
+msgstr ""
+
+#: variables.c:420
+msgid "BASH"
+msgstr ""
+
+#: variables.c:430
+msgid "BASH_VERSION"
+msgstr ""
+
+#: variables.c:436
+msgid "BASH_EXECUTION_STRING"
+msgstr ""
+
+#: variables.c:452
+msgid "~/.sh_history"
+msgstr ""
+
+#: variables.c:452
+msgid "~/.bash_history"
+msgstr ""
+
+#: variables.c:457
+msgid "500"
+msgstr ""
+
+#: variables.c:469 variables.c:3633 builtins/set.def:313 builtins/set.def:315
+#: builtins/set.def:316
+msgid "IGNOREEOF"
+msgstr ""
+
+#: variables.c:471 variables.c:3669 builtins/set.def:191 builtins/set.def:311
+msgid "ignoreeof"
+msgstr ""
+
+#: variables.c:527
+msgid "HOSTTYPE"
+msgstr ""
+
+#: variables.c:528
+msgid "OSTYPE"
+msgstr ""
+
+#: variables.c:529
+msgid "MACHTYPE"
+msgstr ""
+
+#: variables.c:531
+msgid "HOSTNAME"
+msgstr ""
+
+#: variables.c:660 variables.c:694
+msgid "SHLVL"
+msgstr ""
+
+#: variables.c:669
+#, c-format
+msgid "shell level (%d) too high, resetting to 1"
+msgstr ""
+
+#: variables.c:734
+msgid "shell-init"
+msgstr ""
+
+#: variables.c:758 variables.c:761
+msgid "PPID"
+msgstr ""
+
+#: variables.c:772 variables.c:775
+msgid "UID"
+msgstr ""
+
+#: variables.c:782 variables.c:785
+msgid "EUID"
+msgstr ""
+
+#: variables.c:798 variables.c:800
+msgid "BASH_VERSINFO"
+msgstr ""
+
+#: variables.c:893
+#, c-format
+msgid "%s="
+msgstr ""
+
+#: variables.c:1087 variables.c:1093
+msgid "SECONDS"
+msgstr ""
+
+#: variables.c:1395
+msgid "BASH_COMMAND"
+msgstr ""
+
+#: variables.c:1396
+msgid "BASH_SUBSHELL"
+msgstr ""
+
+#: variables.c:1398
+msgid "RANDOM"
+msgstr ""
+
+#: variables.c:1399
+msgid "LINENO"
+msgstr ""
+
+#: variables.c:1402
+msgid "HISTCMD"
+msgstr ""
+
+#: variables.c:1406
+msgid "COMP_WORDBREAKS"
+msgstr ""
+
+#: variables.c:1410
+msgid "DIRSTACK"
+msgstr ""
+
+#: variables.c:1414
+msgid "GROUPS"
+msgstr ""
+
+#: variables.c:1417 variables.c:3554 variables.c:3578 builtins/evalfile.c:101
+msgid "BASH_ARGC"
+msgstr ""
+
+#: variables.c:1418 variables.c:3553 variables.c:3577 builtins/evalfile.c:100
+msgid "BASH_ARGV"
+msgstr ""
+
+#: variables.c:1609
+msgid "make_local_variable: no function context at current scope"
+msgstr ""
+
+#: variables.c:2708
+msgid "all_local_variables: no function context at current scope"
+msgstr ""
+
+#: variables.c:2922 variables.c:2931
+#, c-format
+msgid "invalid character %d in exportstr for %s"
+msgstr ""
+
+#: variables.c:2937
+#, c-format
+msgid "no `=' in exportstr for %s"
+msgstr ""
+
+#: variables.c:3071
+msgid ") {"
+msgstr ""
+
+#: variables.c:3222
+msgid "_="
+msgstr ""
+
+#: variables.c:3242
+msgid "_GNU_nonoption_argv_flags_"
+msgstr ""
+
+#: variables.c:3362
+msgid "pop_var_context: head of shell_variables not a function context"
+msgstr ""
+
+#: variables.c:3375
+msgid "pop_var_context: no global_variables context"
+msgstr ""
+
+#: variables.c:3441
+msgid "pop_scope: head of shell_variables not a temporary environment scope"
+msgstr ""
+
+#: variables.c:3625 builtins/history.def:282
+msgid "HISTTIMEFORMAT"
+msgstr ""
+
+#: variables.c:3635
+msgid "LANG"
+msgstr ""
+
+#: variables.c:3636
+msgid "LC_ALL"
+msgstr ""
+
+#: variables.c:3654
+msgid "TERMCAP"
+msgstr ""
+
+#: variables.c:3655
+msgid "TERMINFO"
+msgstr ""
+
+#: variables.c:3662 lib/sh/strftime.c:185 lib/sh/strftime.c:187
+msgid "TZ"
+msgstr ""
+
+#: variables.c:3867
+msgid "ignorespace"
+msgstr ""
+
+#: variables.c:3869
+msgid "ignoredups"
+msgstr ""
+
+#: variables.c:3871
+msgid "ignoreboth"
+msgstr ""
+
+#: variables.c:3873
+msgid "erasedups"
+msgstr ""
+
+#: version.c:60 version.c:62
+#, c-format
+msgid "%s.%d(%d)-%s"
+msgstr ""
+
+#: version.c:66 version.c:68
+#, c-format
+msgid "%s.%d(%d)"
+msgstr ""
+
+#: version.c:78
+#, c-format
+msgid "GNU bash, version %s (%s)\n"
+msgstr ""
+
+#: version.c:80
+msgid "Copyright (C) 2003 Free Software Foundation, Inc.\n"
+msgstr ""
+
+#: xmalloc.c:91
+#, c-format
+msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr ""
+
+#: xmalloc.c:93
+#, c-format
+msgid "xmalloc: cannot allocate %lu bytes"
+msgstr ""
+
+#: xmalloc.c:113
+#, c-format
+msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
+msgstr ""
+
+#: xmalloc.c:115
+#, c-format
+msgid "xrealloc: cannot allocate %lu bytes"
+msgstr ""
+
+#: xmalloc.c:149
+#, c-format
+msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr ""
+
+#: xmalloc.c:151
+#, c-format
+msgid "xmalloc: %s:%d: cannot allocate %lu bytes"
+msgstr ""
+
+#: xmalloc.c:173
+#, c-format
+msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
+msgstr ""
+
+#: xmalloc.c:175
+#, c-format
+msgid "xrealloc: %s:%d: cannot allocate %lu bytes"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:469
+msgid "error"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:469
+msgid "$undefined."
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:469
+msgid "IF"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:469
+msgid "THEN"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:469
+msgid "ELSE"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:469
+msgid "ELIF"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:469
+msgid "FI"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:469
+msgid "CASE"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:470
+msgid "ESAC"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:470
+msgid "FOR"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:470
+msgid "SELECT"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:470
+msgid "WHILE"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:470
+msgid "UNTIL"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:470
+msgid "DO"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:470
+msgid "DONE"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:470 builtins/mkbuiltins.c:425
+msgid "FUNCTION"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:471
+msgid "COND_START"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:471
+msgid "COND_END"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:471
+msgid "COND_ERROR"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:471
+msgid "IN"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:471
+msgid "BANG"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:471
+msgid "TIME"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:471
+msgid "TIMEOPT"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:472
+msgid "WORD"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:472
+msgid "ASSIGNMENT_WORD"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:472
+msgid "NUMBER"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:472
+msgid "ARITH_CMD"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:472
+msgid "ARITH_FOR_EXPRS"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:473
+msgid "COND_CMD"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:473
+msgid "AND_AND"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:473
+msgid "OR_OR"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:473
+msgid "GREATER_GREATER"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:473
+msgid "LESS_LESS"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:474
+msgid "LESS_AND"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:474
+msgid "LESS_LESS_LESS"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:474
+msgid "GREATER_AND"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:474
+msgid "SEMI_SEMI"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:475
+msgid "LESS_LESS_MINUS"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:475
+msgid "AND_GREATER"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:475
+msgid "LESS_GREATER"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:475
+msgid "GREATER_BAR"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:475
+msgid "'&'"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:476
+msgid "';'"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:476
+msgid "'\\n'"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:476
+msgid "yacc_EOF"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:476
+msgid "'|'"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:476
+msgid "'>'"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:476
+msgid "'<'"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:476
+msgid "'-'"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:476
+msgid "'{'"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:476
+msgid "'}'"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:477
+msgid "'('"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:477
+msgid "')'"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:477
+msgid "inputunit"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:477
+msgid "word_list"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:477
+msgid "redirection"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:478
+msgid "simple_command_element"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:478
+msgid "redirection_list"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:478
+msgid "simple_command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:479 builtins/command.def:2
+#: builtins/complete.def:82
+msgid "command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:479
+msgid "shell_command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:479
+msgid "for_command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:479
+msgid "arith_for_command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:480
+msgid "select_command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:480
+msgid "case_command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:480
+msgid "function_def"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:480
+msgid "function_body"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:481
+msgid "subshell"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:481
+msgid "if_command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:481
+msgid "group_command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:481
+msgid "arith_command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:482
+msgid "cond_command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:482
+msgid "elif_clause"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:482
+msgid "case_clause"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:482
+msgid "pattern_list"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:483
+msgid "case_clause_sequence"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:483
+msgid "pattern"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:483
+msgid "list"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:483
+msgid "compound_list"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:483
+msgid "list0"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:484
+msgid "list1"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:484
+msgid "simple_list_terminator"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:484
+msgid "list_terminator"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:484
+msgid "newline_list"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:485
+msgid "simple_list"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:485
+msgid "simple_list1"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:485
+msgid "pipeline_command"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:485
+msgid "pipeline"
+msgstr ""
+
+#: /usr/homes/chet/src/bash/src/parse.y:486
+msgid "timespec"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:156
+msgid "syntax error: cannot back up"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:442
+msgid "Starting parse\n"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:492
+#: /usr/local/share/bison/bison.simple:499
+#: /usr/local/share/bison/bison.simple:924
+msgid "parser stack overflow"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:538
+#, c-format
+msgid "Stack size increased to %lu\n"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:545
+#, c-format
+msgid "Entering state %d\n"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:572
+msgid "Reading a token: "
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:583
+msgid "Now at end of input.\n"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:594
+#, c-format
+msgid "Next token is %d (%s"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:633
+#, c-format
+msgid "Shifting token %d (%s), "
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:695
+#, c-format
+msgid "Reducing via rule %d (line %d), "
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:701
+#, c-format
+msgid " -> %s\n"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:717
+msgid "state stack now"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:769
+#: /usr/local/share/bison/bison.simple:774
+msgid "parse error, unexpected "
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:785
+msgid ", expecting "
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:785
+msgid " or "
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:795
+msgid "parse error; also virtual memory exhausted"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:799
+msgid "parse error"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:816
+#, c-format
+msgid "Discarding token %d (%s).\n"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:862
+msgid "Error: state stack now"
+msgstr ""
+
+#: /usr/local/share/bison/bison.simple:895
+msgid "Shifting error token, "
+msgstr ""
+
+#: builtins/common.c:102
+#, c-format
+msgid "line %d: "
+msgstr ""
+
+#: builtins/common.c:119
+#, c-format
+msgid "%s: usage: "
+msgstr ""
+
+#: builtins/common.c:163
+#, c-format
+msgid "%s: numeric argument required"
+msgstr ""
+
+#: builtins/common.c:170
+#, c-format
+msgid "%s: not found"
+msgstr ""
+
+#: builtins/common.c:186
+#, c-format
+msgid "%s: invalid option name"
+msgstr ""
+
+#: builtins/common.c:200
+#, c-format
+msgid "%s: invalid number"
+msgstr ""
+
+#: builtins/common.c:207
+#, c-format
+msgid "%s: invalid signal specification"
+msgstr ""
+
+#: builtins/common.c:214
+#, c-format
+msgid "`%s': not a pid or valid job spec"
+msgstr ""
+
+#: builtins/common.c:229
+#, c-format
+msgid "%s: %s out of range"
+msgstr ""
+
+#: builtins/common.c:229 builtins/common.c:231
+msgid "argument"
+msgstr ""
+
+#: builtins/common.c:231
+#, c-format
+msgid "%s out of range"
+msgstr ""
+
+#: builtins/common.c:239
+#, c-format
+msgid "%s: no such job"
+msgstr ""
+
+#: builtins/common.c:247
+#, c-format
+msgid "%s: no job control"
+msgstr ""
+
+#: builtins/common.c:249
+msgid "no job control"
+msgstr ""
+
+#: builtins/common.c:259
+#, c-format
+msgid "%s: restricted"
+msgstr ""
+
+#: builtins/common.c:269
+#, c-format
+msgid "%s: not a shell builtin"
+msgstr ""
+
+#: builtins/common.c:417
+msgid "`'"
+msgstr ""
+
+#: builtins/common.c:480
+#, c-format
+msgid "%s: could not get current directory: %s: %s\n"
+msgstr ""
+
+#: builtins/common.c:547 builtins/common.c:549
+#, c-format
+msgid "%s: ambiguous job spec"
+msgstr ""
+
+#: builtins/common.c:631 builtins/common.c:680 builtins/trap.def:214
+msgid "SIGJUNK"
+msgstr ""
+
+#: builtins/common.c:631 builtins/common.c:680
+msgid "Unknown"
+msgstr ""
+
+#: builtins/common.c:644
+#, c-format
+msgid "%2d) %s"
+msgstr ""
+
+#: builtins/evalfile.c:132
+#, c-format
+msgid "%s: not a regular file"
+msgstr ""
+
+#: builtins/evalfile.c:140
+#, c-format
+msgid "%s: file is too large"
+msgstr ""
+
+#: builtins/evalfile.c:178 builtins/evalfile.c:237
+msgid "_evalfile"
+msgstr ""
+
+#: builtins/evalfile.c:204 builtins/mkbuiltins.c:130 builtins/source.def:2
+#: builtins/source.def:143 builtins/source.def:170
+msgid "source"
+msgstr ""
+
+#: builtins/evalstring.c:76 builtins/evalstring.c:103
+#: builtins/evalstring.c:287
+msgid "parse_and_execute_top"
+msgstr ""
+
+#: builtins/evalstring.c:181 builtins/evalstring.c:189
+#: builtins/evalstring.c:223 builtins/evalstring.c:272
+msgid "pe_dispose"
+msgstr ""
+
+#: builtins/evalstring.c:205
+msgid "parse_and_execute"
+msgstr ""
+
+#: builtins/getopt.c:108
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: builtins/getopt.c:109
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: builtins/getopt.c:231
+msgid "sh_getopt_debug_restore_state: resetting nextchar"
+msgstr ""
+
+#: builtins/getopt.c:254
+msgid "abc:d:0123456789"
+msgstr ""
+
+#: builtins/getopt.c:271
+msgid "digits occur in two different argv-elements.\n"
+msgstr ""
+
+#: builtins/getopt.c:273
+#, c-format
+msgid "option %c\n"
+msgstr ""
+
+#: builtins/getopt.c:277
+msgid "option a\n"
+msgstr ""
+
+#: builtins/getopt.c:281
+msgid "option b\n"
+msgstr ""
+
+#: builtins/getopt.c:285
+#, c-format
+msgid "option c with value `%s'\n"
+msgstr ""
+
+#: builtins/getopt.c:292
+#, c-format
+msgid "?? sh_getopt returned character code 0%o ??\n"
+msgstr ""
+
+#: builtins/getopt.c:298
+msgid "non-option ARGV-elements: "
+msgstr ""
+
+#: builtins/mkbuiltins.c:47
+msgid "builtins.texi"
+msgstr ""
+
+#: builtins/mkbuiltins.c:130 builtins/break.def:2
+msgid "break"
+msgstr ""
+
+#: builtins/mkbuiltins.c:130 builtins/break.def:2
+msgid "continue"
+msgstr ""
+
+#: builtins/mkbuiltins.c:130 builtins/eval.def:2 builtins/eval.def:52
+msgid "eval"
+msgstr ""
+
+#: builtins/mkbuiltins.c:130 builtins/exec.def:2
+msgid "exec"
+msgstr ""
+
+#: builtins/mkbuiltins.c:131 builtins/mkbuiltins.c:138
+#: builtins/complete.def:86 builtins/setattr.def:2
+msgid "export"
+msgstr ""
+
+#: builtins/mkbuiltins.c:131 builtins/mkbuiltins.c:138 builtins/setattr.def:2
+msgid "readonly"
+msgstr ""
+
+#: builtins/mkbuiltins.c:131 builtins/return.def:2
+msgid "return"
+msgstr ""
+
+#: builtins/mkbuiltins.c:131 builtins/shift.def:2
+msgid "shift"
+msgstr ""
+
+#: builtins/mkbuiltins.c:131 builtins/set.def:2
+msgid "unset"
+msgstr ""
+
+#: builtins/mkbuiltins.c:138 builtins/alias.def:2 builtins/complete.def:78
+#: builtins/type.def:228
+msgid "alias"
+msgstr ""
+
+#: builtins/mkbuiltins.c:138 builtins/declare.def:2
+msgid "declare"
+msgstr ""
+
+#: builtins/mkbuiltins.c:138 builtins/declare.def:2
+msgid "local"
+msgstr ""
+
+#: builtins/mkbuiltins.c:138
+msgid "typeset"
+msgstr ""
+
+#: builtins/mkbuiltins.c:194
+msgid "-externfile"
+msgstr ""
+
+#: builtins/mkbuiltins.c:196
+msgid "-structfile"
+msgstr ""
+
+#: builtins/mkbuiltins.c:198
+msgid "-noproduction"
+msgstr ""
+
+#: builtins/mkbuiltins.c:200
+msgid "-document"
+msgstr ""
+
+#: builtins/mkbuiltins.c:202
+msgid "-D"
+msgstr ""
+
+#: builtins/mkbuiltins.c:218
+msgid "-documentonly"
+msgstr ""
+
+#: builtins/mkbuiltins.c:223
+msgid "-H"
+msgstr ""
+
+#: builtins/mkbuiltins.c:230
+#, c-format
+msgid "%s: Unknown flag %s.\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:245
+#, c-format
+msgid "mk-%ld"
+msgstr ""
+
+#: builtins/mkbuiltins.c:266
+#, c-format
+msgid "@c Table of builtins created with %s.\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:268
+msgid "@ftable @asis\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:305
+msgid "@end ftable\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:423
+msgid "BUILTIN"
+msgstr ""
+
+#: builtins/mkbuiltins.c:424
+msgid "DOCNAME"
+msgstr ""
+
+#: builtins/mkbuiltins.c:426
+msgid "SHORT_DOC"
+msgstr ""
+
+#: builtins/mkbuiltins.c:428
+msgid "COMMENT"
+msgstr ""
+
+#: builtins/mkbuiltins.c:429
+msgid "DEPENDS_ON"
+msgstr ""
+
+#: builtins/mkbuiltins.c:430
+msgid "PRODUCES"
+msgstr ""
+
+#: builtins/mkbuiltins.c:431
+msgid "END"
+msgstr ""
+
+#: builtins/mkbuiltins.c:500
+#, c-format
+msgid "mkbuiltins: %s: skipping zero-length file\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:551
+#, c-format
+msgid "Unknown directive `%s'"
+msgstr ""
+
+#: builtins/mkbuiltins.c:577
+#, c-format
+msgid "#line %d \"%s\"\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:580
+#, c-format
+msgid "#line %d \"%s%s\"\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:582 builtins/mkbuiltins.c:954
+msgid "./"
+msgstr ""
+
+#: builtins/mkbuiltins.c:703
+#, c-format
+msgid "%s requires an argument"
+msgstr ""
+
+#: builtins/mkbuiltins.c:715
+#, c-format
+msgid "%s must be inside of a $BUILTIN block"
+msgstr ""
+
+#: builtins/mkbuiltins.c:740
+msgid "(implied LONGDOC)"
+msgstr ""
+
+#: builtins/mkbuiltins.c:766
+#, c-format
+msgid "%s found before $END"
+msgstr ""
+
+#: builtins/mkbuiltins.c:812
+msgid "syntax error: no current builtin for $FUNCTION directive"
+msgstr ""
+
+#: builtins/mkbuiltins.c:816
+#, c-format
+msgid "%s already has a function (%s)"
+msgstr ""
+
+#: builtins/mkbuiltins.c:836
+#, c-format
+msgid "%s already had a docname (%s)"
+msgstr ""
+
+#: builtins/mkbuiltins.c:856
+#, c-format
+msgid "%s already has short documentation (%s)"
+msgstr ""
+
+#: builtins/mkbuiltins.c:910
+#, c-format
+msgid "%s already has a %s definition"
+msgstr ""
+
+#: builtins/mkbuiltins.c:923
+#, c-format
+msgid "/* %s, created from %s. */\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:955
+#, c-format
+msgid "%s:%d:"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1010
+msgid "mkbuiltins: out of virtual memory\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1066
+msgid "/* builtins.c -- the built in shell commands. */"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1068
+msgid "/* This file is manufactured by ./mkbuiltins, and should not be"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1069
+msgid "   edited by hand.  See the source to mkbuiltins for details. */"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1071
+msgid "/* Copyright (C) 1987-2002 Free Software Foundation, Inc."
+msgstr ""
+
+#: builtins/mkbuiltins.c:1073
+msgid "   This file is part of GNU Bash, the Bourne Again SHell."
+msgstr ""
+
+#: builtins/mkbuiltins.c:1075
+msgid "   Bash is free software; you can redistribute it and/or modify it"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1076
+msgid "   under the terms of the GNU General Public License as published by"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1077
+msgid "   the Free Software Foundation; either version 2, or (at your option)"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1078
+msgid "   any later version."
+msgstr ""
+
+#: builtins/mkbuiltins.c:1080
+msgid "   Bash is distributed in the hope that it will be useful, but WITHOUT"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1081
+msgid "   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1082
+msgid "   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1083
+msgid "   License for more details."
+msgstr ""
+
+#: builtins/mkbuiltins.c:1085
+msgid "   You should have received a copy of the GNU General Public License"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1086
+msgid "   along with Bash; see the file COPYING.  If not, write to the Free"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1087
+msgid ""
+"   Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1089
+msgid "/* The list of shell builtins.  Each element is name, function, flags,"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1090
+msgid ""
+"   long-doc, short-doc.  The long-doc field contains a pointer to an array"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1091
+msgid ""
+"   of help lines.  The function takes a WORD_LIST *; the first word in the"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1092
+msgid "   list is the first arg to the command.  The list has already had word"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1093
+msgid "   expansion performed."
+msgstr ""
+
+#: builtins/mkbuiltins.c:1095
+msgid "   Functions which need to look at only the simple commands (e.g."
+msgstr ""
+
+#: builtins/mkbuiltins.c:1096
+msgid "   the enable_builtin ()), should ignore entries where"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1097
+msgid ""
+"   (array[i].function == (sh_builtin_func_t *)NULL).  Such entries are for"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1098
+msgid ""
+"   the list of shell reserved control structures, like `if' and `while'."
+msgstr ""
+
+#: builtins/mkbuiltins.c:1099
+msgid "   The end of the list is denoted with a NULL name field. */"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1101
+msgid "#include \"../builtins.h\""
+msgstr ""
+
+#: builtins/mkbuiltins.c:1106
+msgid ""
+"  { (char *)0x0, (sh_builtin_func_t *)0x0, 0, (char **)0x0, (char *)0x0 }"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1107
+msgid "};"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1109
+msgid "struct builtin *shell_builtins = static_shell_builtins;"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1110
+msgid "struct builtin *current_builtin;"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1112
+msgid "int num_shell_builtins ="
+msgstr ""
+
+#: builtins/mkbuiltins.c:1113
+msgid "\tsizeof (static_shell_builtins) / sizeof (struct builtin) - 1;"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1130
+#, c-format
+msgid "#include \"%s\"\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1131 builtins/mkbuiltins.c:1138
+msgid "builtext.h"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1132
+msgid ""
+"\n"
+"struct builtin static_shell_builtins[] = {\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1137
+#, c-format
+msgid "/* %s - The list of builtins found in libbuiltins.a. */\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1188
+#, c-format
+msgid "extern int %s __P((WORD_LIST *));\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1191
+#, c-format
+msgid "extern char * const %s_doc[];\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1198
+#, c-format
+msgid "  { \"%s\", "
+msgstr ""
+
+#: builtins/mkbuiltins.c:1201
+#, c-format
+msgid "%s, "
+msgstr ""
+
+#: builtins/mkbuiltins.c:1203
+msgid "(sh_builtin_func_t *)0x0, "
+msgstr ""
+
+#: builtins/mkbuiltins.c:1205
+#, c-format
+msgid "%s%s%s, %s_doc,\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1206
+msgid "BUILTIN_ENABLED | STATIC_BUILTIN"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1207
+msgid " | SPECIAL_BUILTIN"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1208
+msgid " | ASSIGNMENT_BUILTIN"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1212
+#, c-format
+msgid "     \"%s\", (char *)NULL },\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1235
+#, c-format
+msgid "@item %s\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1263
+#, c-format
+msgid "char * const %s_doc[] ="
+msgstr ""
+
+#: builtins/mkbuiltins.c:1269 lib/sh/mailstat.c:126
+#, c-format
+msgid "%s/%s"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1299
+msgid "#if "
+msgstr ""
+
+#: builtins/mkbuiltins.c:1306
+#, c-format
+msgid "!defined (%s)"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1308
+#, c-format
+msgid "defined (%s)"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1330
+msgid "#endif /* "
+msgstr ""
+
+#: builtins/mkbuiltins.c:1340
+msgid " */\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1360
+msgid ""
+" {\n"
+"#if defined (HELP_BUILTIN)\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1373
+msgid "  \""
+msgstr ""
+
+#: builtins/mkbuiltins.c:1387
+#, c-format
+msgid "\\%c"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1391 builtins/mkbuiltins.c:1410
+#, c-format
+msgid "%c"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1395
+msgid "\",\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1406
+#, c-format
+msgid "@%c"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1420
+msgid ""
+"#endif /* HELP_BUILTIN */\n"
+"  (char *)NULL\n"
+"};\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1432
+msgid "helpfiles"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1435
+msgid "write_helpfiles: helpfiles: cannot create directory\n"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1439
+msgid "helpfiles/"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1446
+#, c-format
+msgid "helpfiles/%s"
+msgstr ""
+
+#: builtins/mkbuiltins.c:1451
+#, c-format
+msgid "write_helpfiles: cannot open %s\n"
+msgstr ""
+
+#: builtins/alias.def:2
+msgid "unalias"
+msgstr ""
+
+#: builtins/alias.def:73
+msgid "p"
+msgstr ""
+
+#: builtins/alias.def:160
+msgid "a"
+msgstr ""
+
+#: builtins/alias.def:210
+msgid "alias "
+msgstr ""
+
+#: builtins/bind.def:2
+msgid "bind"
+msgstr ""
+
+#: builtins/bind.def:121 builtins/bind.def:265
+msgid "bind_builtin"
+msgstr ""
+
+#: builtins/bind.def:127
+msgid "lvpVPsSf:q:u:m:r:x:"
+msgstr ""
+
+#: builtins/bind.def:192
+#, c-format
+msgid "`%s': invalid keymap name"
+msgstr ""
+
+#: builtins/bind.def:231
+#, c-format
+msgid "%s: cannot read: %s"
+msgstr ""
+
+#: builtins/bind.def:246
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr ""
+
+#: builtins/bind.def:281 builtins/bind.def:311
+#, c-format
+msgid "`%s': unknown function name"
+msgstr ""
+
+#: builtins/bind.def:289
+#, c-format
+msgid "%s is not bound to any keys.\n"
+msgstr ""
+
+#: builtins/bind.def:293
+#, c-format
+msgid "%s can be invoked via "
+msgstr ""
+
+#: builtins/bind.def:295
+#, c-format
+msgid "\"%s\"%s"
+msgstr ""
+
+#: builtins/bind.def:295 builtins/help.def:106
+msgid ", "
+msgstr ""
+
+#: builtins/bind.def:295
+msgid ".\n"
+msgstr ""
+
+#: builtins/bind.def:297
+msgid "...\n"
+msgstr ""
+
+#: builtins/break.def:71 builtins/break.def:106
+msgid "loop count"
+msgstr ""
+
+#: builtins/break.def:126
+msgid "only meaningful in a `for', `while', or `until' loop"
+msgstr ""
+
+#: builtins/builtin.def:2 builtins/complete.def:81 builtins/type.def:294
+msgid "builtin"
+msgstr ""
+
+#: builtins/caller.def:2 builtins/caller.def:138
+msgid "caller"
+msgstr ""
+
+#: builtins/caller.def:31
+msgid "$line $filename"
+msgstr ""
+
+#: builtins/caller.def:32
+msgid "$line $subroutine $filename"
+msgstr ""
+
+#: builtins/caller.def:70
+msgid "1 NULL\n"
+msgstr ""
+
+#: builtins/caller.def:94
+#, c-format
+msgid "%s %s\n"
+msgstr ""
+
+#: builtins/caller.def:110
+#, c-format
+msgid "%s %s %s\n"
+msgstr ""
+
+#: builtins/caller.def:126
+msgid "Returns the context of the current subroutine call."
+msgstr ""
+
+#: builtins/caller.def:128
+msgid "Without EXPR, returns returns \"$line $filename\".  With EXPR,"
+msgstr ""
+
+#: builtins/caller.def:129
+msgid "returns \"$line $subroutine $filename\"; this extra information"
+msgstr ""
+
+#: builtins/caller.def:130
+msgid "can be used used to provide a stack trace."
+msgstr ""
+
+#: builtins/caller.def:132
+msgid "The value of EXPR indicates how many call frames to go back before the"
+msgstr ""
+
+#: builtins/caller.def:133
+msgid "current one; the top frame is frame 0."
+msgstr ""
+
+#: builtins/caller.def:142
+msgid "caller [EXPR]"
+msgstr ""
+
+#: builtins/cd.def:2 builtins/cd.def:96 builtins/cd.def:130
+msgid "cd"
+msgstr ""
+
+#: builtins/cd.def:2 builtins/cd.def:338
+msgid "pwd"
+msgstr ""
+
+#: builtins/cd.def:105
+msgid "OLDPWD="
+msgstr ""
+
+#: builtins/cd.def:112
+msgid "PWD="
+msgstr ""
+
+#: builtins/cd.def:160 builtins/cd.def:318
+msgid "LP"
+msgstr ""
+
+#: builtins/cd.def:187
+msgid "HOME not set"
+msgstr ""
+
+#: builtins/cd.def:199
+msgid "OLDPWD not set"
+msgstr ""
+
+#: builtins/cd.def:210
+msgid "CDPATH"
+msgstr ""
+
+#: builtins/cd.def:349
+#, c-format
+msgid "write error: %s"
+msgstr ""
+
+#: builtins/cd.def:378
+msgid "chdir"
+msgstr ""
+
+#: builtins/command.def:29
+msgid "command ls"
+msgstr ""
+
+#: builtins/command.def:73
+msgid "pvV"
+msgstr ""
+
+#: builtins/command.def:120 builtins/command.def:160
+msgid "command_builtin"
+msgstr ""
+
+#: builtins/complete.def:2
+msgid "complete"
+msgstr ""
+
+#: builtins/complete.def:2 builtins/complete.def:589
+msgid "compgen"
+msgstr ""
+
+#: builtins/complete.def:79 builtins/complete.def:458
+msgid "arrayvar"
+msgstr ""
+
+#: builtins/complete.def:80 builtins/complete.def:459
+msgid "binding"
+msgstr ""
+
+#: builtins/complete.def:83
+msgid "directory"
+msgstr ""
+
+#: builtins/complete.def:84 builtins/complete.def:460
+msgid "disabled"
+msgstr ""
+
+#: builtins/complete.def:85 builtins/complete.def:461
+msgid "enabled"
+msgstr ""
+
+#: builtins/complete.def:87 builtins/type.def:315 builtins/type.def:335
+#: builtins/type.def:380
+msgid "file"
+msgstr ""
+
+#: builtins/complete.def:89 builtins/complete.def:463
+msgid "helptopic"
+msgstr ""
+
+#: builtins/complete.def:90 builtins/complete.def:464
+msgid "hostname"
+msgstr ""
+
+#: builtins/complete.def:91
+msgid "group"
+msgstr ""
+
+#: builtins/complete.def:92
+msgid "job"
+msgstr ""
+
+#: builtins/complete.def:93 builtins/set.def:193 builtins/type.def:249
+msgid "keyword"
+msgstr ""
+
+#: builtins/complete.def:94 builtins/complete.def:465
+msgid "running"
+msgstr ""
+
+#: builtins/complete.def:95
+msgid "service"
+msgstr ""
+
+#: builtins/complete.def:96 builtins/complete.def:466
+msgid "setopt"
+msgstr ""
+
+#: builtins/complete.def:97 builtins/complete.def:467
+msgid "shopt"
+msgstr ""
+
+#: builtins/complete.def:98 builtins/complete.def:468
+msgid "signal"
+msgstr ""
+
+#: builtins/complete.def:99 builtins/complete.def:469
+msgid "stopped"
+msgstr ""
+
+#: builtins/complete.def:100
+msgid "user"
+msgstr ""
+
+#: builtins/complete.def:101 builtins/set.def:787
+msgid "variable"
+msgstr ""
+
+#: builtins/complete.def:110 builtins/complete.def:434
+msgid "bashdefault"
+msgstr ""
+
+#: builtins/complete.def:111 builtins/complete.def:435
+msgid "default"
+msgstr ""
+
+#: builtins/complete.def:112 builtins/complete.def:436
+msgid "dirnames"
+msgstr ""
+
+#: builtins/complete.def:113 builtins/complete.def:437
+msgid "filenames"
+msgstr ""
+
+#: builtins/complete.def:114 builtins/complete.def:438
+msgid "nospace"
+msgstr ""
+
+#: builtins/complete.def:115 builtins/complete.def:439
+msgid "plusdirs"
+msgstr ""
+
+#: builtins/complete.def:170
+msgid "abcdefgjko:prsuvA:G:W:P:S:X:F:C:"
+msgstr ""
+
+#: builtins/complete.def:183
+msgid "-r"
+msgstr ""
+
+#: builtins/complete.def:250
+#, c-format
+msgid "%s: invalid action name"
+msgstr ""
+
+#: builtins/complete.def:380 builtins/complete.def:523
+#, c-format
+msgid "%s: no completion specification"
+msgstr ""
+
+#: builtins/complete.def:392 builtins/complete.def:400
+#, c-format
+msgid "%s %s "
+msgstr ""
+
+#: builtins/complete.def:412
+#, c-format
+msgid "-A %s "
+msgstr ""
+
+#: builtins/complete.def:418
+#, c-format
+msgid "-o %s "
+msgstr ""
+
+#: builtins/complete.def:429
+msgid "complete "
+msgstr ""
+
+#: builtins/complete.def:444
+msgid "-a"
+msgstr ""
+
+#: builtins/complete.def:445
+msgid "-b"
+msgstr ""
+
+#: builtins/complete.def:447
+msgid "-d"
+msgstr ""
+
+#: builtins/complete.def:448
+msgid "-e"
+msgstr ""
+
+#: builtins/complete.def:449
+msgid "-f"
+msgstr ""
+
+#: builtins/complete.def:450
+msgid "-g"
+msgstr ""
+
+#: builtins/complete.def:451
+msgid "-j"
+msgstr ""
+
+#: builtins/complete.def:452
+msgid "-k"
+msgstr ""
+
+#: builtins/complete.def:453 builtins/shopt.def:325
+msgid "-s"
+msgstr ""
+
+#: builtins/complete.def:454 builtins/shopt.def:325
+msgid "-u"
+msgstr ""
+
+#: builtins/complete.def:455
+msgid "-v"
+msgstr ""
+
+#: builtins/complete.def:474
+msgid "-G"
+msgstr ""
+
+#: builtins/complete.def:475
+msgid "-W"
+msgstr ""
+
+#: builtins/complete.def:476
+msgid "-P"
+msgstr ""
+
+#: builtins/complete.def:477
+msgid "-S"
+msgstr ""
+
+#: builtins/complete.def:478
+msgid "-X"
+msgstr ""
+
+#: builtins/complete.def:481
+msgid "-F"
+msgstr ""
+
+#: builtins/complete.def:482
+msgid "-C"
+msgstr ""
+
+#: builtins/complete.def:570
+msgid "warning: -F option may not work as you expect"
+msgstr ""
+
+#: builtins/complete.def:572
+msgid "warning: -C option may not work as you expect"
+msgstr ""
+
+#: builtins/declare.def:104
+msgid "can only be used in a function"
+msgstr ""
+
+#: builtins/declare.def:110
+msgid "+afiprtxF"
+msgstr ""
+
+#: builtins/declare.def:112
+msgid "+fiprtxF"
+msgstr ""
+
+#: builtins/declare.def:294
+msgid "cannot use `-f' to make functions"
+msgstr ""
+
+#: builtins/declare.def:319
+#, c-format
+msgid "%s %d %s\n"
+msgstr ""
+
+#: builtins/declare.def:388
+#, c-format
+msgid "%s: cannot destroy array variables in this way"
+msgstr ""
+
+#: builtins/echo.def:2
+msgid "echo"
+msgstr ""
+
+#: builtins/echo.def:65
+msgid "neE"
+msgstr ""
+
+#: builtins/echo.def:67
+msgid "n"
+msgstr ""
+
+#: builtins/enable.def:2
+msgid "enable"
+msgstr ""
+
+#: builtins/enable.def:104
+msgid "adnpsf:"
+msgstr ""
+
+#: builtins/enable.def:126 builtins/enable.def:134
+msgid "dynamic loading not available"
+msgstr ""
+
+#: builtins/enable.def:227
+#, c-format
+msgid "enable %s\n"
+msgstr ""
+
+#: builtins/enable.def:230
+#, c-format
+msgid "enable -n %s\n"
+msgstr ""
+
+#: builtins/enable.def:301
+#, c-format
+msgid "cannot open shared object %s: %s"
+msgstr ""
+
+#: builtins/enable.def:319
+msgid "_struct"
+msgstr ""
+
+#: builtins/enable.def:324
+#, c-format
+msgid "cannot find %s in shared object %s: %s"
+msgstr ""
+
+#: builtins/enable.def:448
+#, c-format
+msgid "%s: not dynamically loaded"
+msgstr ""
+
+#: builtins/enable.def:463
+#, c-format
+msgid "%s: cannot delete: %s"
+msgstr ""
+
+#: builtins/exec.def:100
+msgid "cla:"
+msgstr ""
+
+#: builtins/exec.def:204
+#, c-format
+msgid "%s: cannot execute: %s"
+msgstr ""
+
+#: builtins/exit.def:61
+msgid "logout\n"
+msgstr ""
+
+#: builtins/exit.def:61
+msgid "exit\n"
+msgstr ""
+
+#: builtins/exit.def:81
+msgid "not login shell: use `exit'"
+msgstr ""
+
+#: builtins/exit.def:109
+msgid "There are stopped jobs.\n"
+msgstr ""
+
+#: builtins/exit.def:145
+msgid "~/.bash_logout"
+msgstr ""
+
+#: builtins/fc.def:2 builtins/fc.def:269 builtins/fc.def:370
+msgid "fc"
+msgstr ""
+
+#: builtins/fc.def:157
+msgid "${FCEDIT:-${EDITOR:-vi}}"
+msgstr ""
+
+#: builtins/fc.def:181
+msgid ":e:lnrs"
+msgstr ""
+
+#: builtins/fc.def:252
+msgid "no command found"
+msgstr ""
+
+#: builtins/fc.def:317
+msgid "history specification"
+msgstr ""
+
+#: builtins/fc.def:335
+msgid "bash-fc"
+msgstr ""
+
+#: builtins/fc.def:338
+#, c-format
+msgid "cannot open temp file %s"
+msgstr ""
+
+#: builtins/fc.def:350
+#, c-format
+msgid "\t%c"
+msgstr ""
+
+#: builtins/fc.def:363 builtins/fc.def:368
+#, c-format
+msgid "%s %s"
+msgstr ""
+
+#: builtins/fc.def:386 builtins/fc.def:394
+msgid "fc builtin"
+msgstr ""
+
+#: builtins/fg_bg.def:123 builtins/jobs.def:264
+msgid "current"
+msgstr ""
+
+#: builtins/fg_bg.def:131
+#, c-format
+msgid "job %%%d started without job control"
+msgstr ""
+
+#: builtins/getopts.def:2
+msgid "getopts"
+msgstr ""
+
+#: builtins/getopts.def:248 builtins/getopts.def:255 builtins/getopts.def:282
+#: lib/sh/strftime.c:235 lib/sh/strftime.c:242 lib/sh/strftime.c:250
+#: lib/sh/strftime.c:257
+msgid "?"
+msgstr ""
+
+#: builtins/getopts.def:261 builtins/getopts.def:264 builtins/getopts.def:278
+#: builtins/getopts.def:283 builtins/getopts.def:288
+msgid "OPTARG"
+msgstr ""
+
+#: builtins/hash.def:2
+msgid "hash"
+msgstr ""
+
+#: builtins/hash.def:82
+msgid "hashing disabled"
+msgstr ""
+
+#: builtins/hash.def:89
+msgid "dlp:rt"
+msgstr ""
+
+#: builtins/hash.def:118
+msgid "-t"
+msgstr ""
+
+#: builtins/hash.def:127
+#, c-format
+msgid "%s: hash table empty\n"
+msgstr ""
+
+#: builtins/hash.def:210
+#, c-format
+msgid "%4d\t%s\n"
+msgstr ""
+
+#: builtins/hash.def:218 builtins/hash.def:257
+#, c-format
+msgid "builtin hash -p %s %s\n"
+msgstr ""
+
+#: builtins/hash.def:230
+msgid "hits\tcommand\n"
+msgstr ""
+
+#: builtins/hash.def:261
+#, c-format
+msgid "%s\t"
+msgstr ""
+
+#: builtins/help.def:80 builtins/help.def:105
+msgid "s"
+msgstr ""
+
+#: builtins/help.def:105
+#, c-format
+msgid "Shell commands matching keyword%s `"
+msgstr ""
+
+#: builtins/help.def:107
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
+#: builtins/help.def:121
+#, c-format
+msgid "%s: %s\n"
+msgstr ""
+
+#: builtins/help.def:133
+#, c-format
+msgid ""
+"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
+msgstr ""
+
+#: builtins/help.def:159
+#, c-format
+msgid "%s: cannot open: %s"
+msgstr ""
+
+#: builtins/help.def:167
+#, c-format
+msgid "    %s\n"
+msgstr ""
+
+#: builtins/help.def:177
+msgid ""
+"These shell commands are defined internally.  Type `help' to see this list.\n"
+"Type `help name' to find out more about the function `name'.\n"
+"Use `info bash' to find out more about the shell in general.\n"
+"Use `man -k' or `info' to find out more about commands not in this list.\n"
+"\n"
+"A star (*) next to a name means that the command is disabled.\n"
+"\n"
+msgstr ""
+
+#: builtins/history.def:2 builtins/set.def:189
+msgid "history"
+msgstr ""
+
+#: builtins/history.def:106
+msgid "acd:npsrw"
+msgstr ""
+
+#: builtins/history.def:147
+msgid "cannot use more than one of -anrw"
+msgstr ""
+
+#: builtins/history.def:179
+msgid "history position"
+msgstr ""
+
+#: builtins/history.def:289
+#, c-format
+msgid "%5d%c %s%s\n"
+msgstr ""
+
+#: builtins/history.def:389
+#, c-format
+msgid "%s: history expansion failed"
+msgstr ""
+
+#: builtins/inlib.def:2
+msgid "inlib"
+msgstr ""
+
+#: builtins/inlib.def:67
+#, c-format
+msgid "%s: inlib failed"
+msgstr ""
+
+#: builtins/jobs.def:2
+msgid "jobs"
+msgstr ""
+
+#: builtins/jobs.def:2
+msgid "disown"
+msgstr ""
+
+#: builtins/jobs.def:85
+msgid "lpnxrs"
+msgstr ""
+
+#: builtins/jobs.def:101
+msgid "no other options allowed with `-x'"
+msgstr ""
+
+#: builtins/jobs.def:185 builtins/jobs.def:197
+msgid "jobs_builtin"
+msgstr ""
+
+#: builtins/jobs.def:224
+msgid "ahr"
+msgstr ""
+
+#: builtins/kill.def:2
+msgid "kill"
+msgstr ""
+
+#: builtins/kill.def:186
+#, c-format
+msgid "%s: arguments must be process or job IDs"
+msgstr ""
+
+#: builtins/kill.def:247
+msgid "Unknown error"
+msgstr ""
+
+#: builtins/kill.def:248
+#, c-format
+msgid "(%ld) - %s"
+msgstr ""
+
+#: builtins/let.def:2
+msgid "let"
+msgstr ""
+
+#: builtins/printf.def:2
+msgid "printf"
+msgstr ""
+
+#: builtins/printf.def:66
+msgid "<PRIdMAX>lld"
+msgstr ""
+
+#: builtins/printf.def:68
+msgid "<PRIdMAX>ld"
+msgstr ""
+
+#: builtins/printf.def:103
+msgid "#'-+ 0"
+msgstr ""
+
+#: builtins/printf.def:104
+msgid "hjlLtz"
+msgstr ""
+
+#: builtins/printf.def:119
+msgid "L"
+msgstr ""
+
+#: builtins/printf.def:248
+#, c-format
+msgid "`%s': missing format character"
+msgstr ""
+
+#: builtins/printf.def:346 builtins/printf.def:373
+msgid "<PRIdMAX>"
+msgstr ""
+
+#: builtins/printf.def:355 builtins/printf.def:378
+msgid "l"
+msgstr ""
+
+#: builtins/printf.def:407
+#, c-format
+msgid "`%c': invalid format character"
+msgstr ""
+
+#: builtins/printf.def:427
+#, c-format
+msgid "warning: %s: %s"
+msgstr ""
+
+#: builtins/printf.def:504
+#, c-format
+msgid "format parsing problem: %s"
+msgstr ""
+
+#: builtins/printf.def:600
+msgid "missing hex digit for \\x"
+msgstr ""
+
+#: builtins/pushd.def:2 builtins/pushd.def:171 builtins/pushd.def:230
+#: builtins/pushd.def:263 builtins/pushd.def:715
+msgid "pushd"
+msgstr ""
+
+#: builtins/pushd.def:2 builtins/pushd.def:724
+msgid "popd"
+msgstr ""
+
+#: builtins/pushd.def:2 builtins/pushd.def:432 builtins/pushd.def:733
+msgid "dirs"
+msgstr ""
+
+#: builtins/pushd.def:167
+msgid "no other directory"
+msgstr ""
+
+#: builtins/pushd.def:434
+msgid "<no current directory>"
+msgstr ""
+
+#: builtins/pushd.def:436 builtins/pushd.def:455
+#, c-format
+msgid "%2d  %s"
+msgstr ""
+
+#: builtins/pushd.def:463
+#, c-format
+msgid ""
+"\n"
+"%2d  %s"
+msgstr ""
+
+#: builtins/pushd.def:478
+msgid "directory stack empty"
+msgstr ""
+
+#: builtins/pushd.def:480
+msgid "directory stack index"
+msgstr ""
+
+#: builtins/pushd.def:625
+msgid "dirstack"
+msgstr ""
+
+#: builtins/pushd.def:651
+msgid "Display the list of currently remembered directories.  Directories"
+msgstr ""
+
+#: builtins/pushd.def:652
+msgid "find their way onto the list with the `pushd' command; you can get"
+msgstr ""
+
+#: builtins/pushd.def:653
+msgid "back up through the list with the `popd' command."
+msgstr ""
+
+#: builtins/pushd.def:655
+msgid "The -l flag specifies that `dirs' should not print shorthand versions"
+msgstr ""
+
+#: builtins/pushd.def:656
+msgid "of directories which are relative to your home directory.  This means"
+msgstr ""
+
+#: builtins/pushd.def:657
+msgid "that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag"
+msgstr ""
+
+#: builtins/pushd.def:658
+msgid "causes `dirs' to print the directory stack with one entry per line,"
+msgstr ""
+
+#: builtins/pushd.def:659
+msgid "prepending the directory name with its position in the stack.  The -p"
+msgstr ""
+
+#: builtins/pushd.def:660
+msgid "flag does the same thing, but the stack position is not prepended."
+msgstr ""
+
+#: builtins/pushd.def:661
+msgid "The -c flag clears the directory stack by deleting all of the elements."
+msgstr ""
+
+#: builtins/pushd.def:663
+msgid "+N   displays the Nth entry counting from the left of the list shown by"
+msgstr ""
+
+#: builtins/pushd.def:664 builtins/pushd.def:667
+msgid "     dirs when invoked without options, starting with zero."
+msgstr ""
+
+#: builtins/pushd.def:666
+msgid ""
+"-N   displays the Nth entry counting from the right of the list shown by"
+msgstr ""
+
+#: builtins/pushd.def:672
+msgid "Adds a directory to the top of the directory stack, or rotates"
+msgstr ""
+
+#: builtins/pushd.def:673
+msgid "the stack, making the new top of the stack the current working"
+msgstr ""
+
+#: builtins/pushd.def:674
+msgid "directory.  With no arguments, exchanges the top two directories."
+msgstr ""
+
+#: builtins/pushd.def:676
+msgid "+N   Rotates the stack so that the Nth directory (counting"
+msgstr ""
+
+#: builtins/pushd.def:677
+msgid "     from the left of the list shown by `dirs', starting with"
+msgstr ""
+
+#: builtins/pushd.def:678 builtins/pushd.def:682
+msgid "     zero) is at the top."
+msgstr ""
+
+#: builtins/pushd.def:680
+msgid "-N   Rotates the stack so that the Nth directory (counting"
+msgstr ""
+
+#: builtins/pushd.def:681
+msgid "     from the right of the list shown by `dirs', starting with"
+msgstr ""
+
+#: builtins/pushd.def:684
+msgid "-n   suppress the normal change of directory when adding directories"
+msgstr ""
+
+#: builtins/pushd.def:685
+msgid "     to the stack, so only the stack is manipulated."
+msgstr ""
+
+#: builtins/pushd.def:687
+msgid "dir  adds DIR to the directory stack at the top, making it the"
+msgstr ""
+
+#: builtins/pushd.def:688
+msgid "     new current working directory."
+msgstr ""
+
+#: builtins/pushd.def:690 builtins/pushd.def:710
+msgid "You can see the directory stack with the `dirs' command."
+msgstr ""
+
+#: builtins/pushd.def:695
+msgid "Removes entries from the directory stack.  With no arguments,"
+msgstr ""
+
+#: builtins/pushd.def:696
+msgid "removes the top directory from the stack, and cd's to the new"
+msgstr ""
+
+#: builtins/pushd.def:697
+msgid "top directory."
+msgstr ""
+
+#: builtins/pushd.def:699
+msgid "+N   removes the Nth entry counting from the left of the list"
+msgstr ""
+
+#: builtins/pushd.def:700
+msgid "     shown by `dirs', starting with zero.  For example: `popd +0'"
+msgstr ""
+
+#: builtins/pushd.def:701
+msgid "     removes the first directory, `popd +1' the second."
+msgstr ""
+
+#: builtins/pushd.def:703
+msgid "-N   removes the Nth entry counting from the right of the list"
+msgstr ""
+
+#: builtins/pushd.def:704
+msgid "     shown by `dirs', starting with zero.  For example: `popd -0'"
+msgstr ""
+
+#: builtins/pushd.def:705
+msgid "     removes the last directory, `popd -1' the next to last."
+msgstr ""
+
+#: builtins/pushd.def:707
+msgid "-n   suppress the normal change of directory when removing directories"
+msgstr ""
+
+#: builtins/pushd.def:708
+msgid "     from the stack, so only the stack is manipulated."
+msgstr ""
+
+#: builtins/pushd.def:719
+msgid "pushd [+N | -N] [-n] [dir]"
+msgstr ""
+
+#: builtins/pushd.def:728
+msgid "popd [+N | -N] [-n]"
+msgstr ""
+
+#: builtins/pushd.def:737
+msgid "dirs [-clpv] [+N] [-N]"
+msgstr ""
+
+#: builtins/read.def:2
+msgid "read"
+msgstr ""
+
+#: builtins/read.def:178
+msgid "ersa:d:n:p:t:u:"
+msgstr ""
+
+#: builtins/read.def:205
+#, c-format
+msgid "%s: invalid timeout specification"
+msgstr ""
+
+#: builtins/read.def:228
+#, c-format
+msgid "%s: invalid file descriptor specification"
+msgstr ""
+
+#: builtins/read.def:235
+#, c-format
+msgid "%d: invalid file descriptor: %s"
+msgstr ""
+
+#: builtins/read.def:272 builtins/read.def:317 builtins/read.def:491
+msgid "read_builtin"
+msgstr ""
+
+#: builtins/read.def:461
+#, c-format
+msgid "read error: %d: %s"
+msgstr ""
+
+#: builtins/reserved.def:123
+msgid "let EXPRESSION"
+msgstr ""
+
+#: builtins/return.def:61
+msgid "can only `return' from a function or sourced script"
+msgstr ""
+
+#: builtins/set.def:161 builtins/shopt.def:170
+msgid "on"
+msgstr ""
+
+#: builtins/set.def:162 builtins/shopt.def:171
+msgid "off"
+msgstr ""
+
+#: builtins/set.def:174
+msgid "allexport"
+msgstr ""
+
+#: builtins/set.def:176
+msgid "braceexpand"
+msgstr ""
+
+#: builtins/set.def:181
+msgid "errexit"
+msgstr ""
+
+#: builtins/set.def:182
+msgid "errtrace"
+msgstr ""
+
+#: builtins/set.def:183
+msgid "functrace"
+msgstr ""
+
+#: builtins/set.def:184
+msgid "hashall"
+msgstr ""
+
+#: builtins/set.def:186
+msgid "histexpand"
+msgstr ""
+
+#: builtins/set.def:192
+msgid "interactive-comments"
+msgstr ""
+
+#: builtins/set.def:194
+msgid "monitor"
+msgstr ""
+
+#: builtins/set.def:195
+msgid "noclobber"
+msgstr ""
+
+#: builtins/set.def:196
+msgid "noexec"
+msgstr ""
+
+#: builtins/set.def:197
+msgid "noglob"
+msgstr ""
+
+#: builtins/set.def:199
+msgid "nolog"
+msgstr ""
+
+#: builtins/set.def:202
+msgid "notify"
+msgstr ""
+
+#: builtins/set.def:204
+msgid "nounset"
+msgstr ""
+
+#: builtins/set.def:205
+msgid "onecmd"
+msgstr ""
+
+#: builtins/set.def:206
+msgid "physical"
+msgstr ""
+
+#: builtins/set.def:207
+msgid "pipefail"
+msgstr ""
+
+#: builtins/set.def:209
+msgid "privileged"
+msgstr ""
+
+#: builtins/set.def:212
+msgid "vi"
+msgstr ""
+
+#: builtins/set.def:214
+msgid "xtrace"
+msgstr ""
+
+#: builtins/set.def:252 builtins/shopt.def:56
+#, c-format
+msgid "%-15s\t%s\n"
+msgstr ""
+
+#: builtins/set.def:262 builtins/shopt.def:414
+#, c-format
+msgid "set %co %s\n"
+msgstr ""
+
+#: builtins/set.def:313
+msgid "10"
+msgstr ""
+
+#: builtins/set.def:345
+msgid "editing-mode"
+msgstr ""
+
+#: builtins/set.def:493 builtins/set.def:505 builtins/set.def:541
+msgid "SHELLOPTS"
+msgstr ""
+
+#: builtins/set.def:722
+msgid "fv"
+msgstr ""
+
+#: builtins/set.def:742
+msgid "cannot simultaneously unset a function and a variable"
+msgstr ""
+
+#: builtins/set.def:779
+#, c-format
+msgid "%s: cannot unset"
+msgstr ""
+
+#: builtins/set.def:786
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr ""
+
+#: builtins/set.def:797
+#, c-format
+msgid "%s: not an array variable"
+msgstr ""
+
+#: builtins/setattr.def:98
+msgid "afnp"
+msgstr ""
+
+#: builtins/setattr.def:100
+msgid "fnp"
+msgstr ""
+
+#: builtins/setattr.def:164
+#, c-format
+msgid "%s: not a function"
+msgstr ""
+
+#: builtins/setattr.def:201
+msgid "-ra"
+msgstr ""
+
+#: builtins/setattr.def:332
+#, c-format
+msgid "declare -%s "
+msgstr ""
+
+#: builtins/setattr.def:334
+#, c-format
+msgid "%s -%s "
+msgstr ""
+
+#: builtins/shift.def:65 builtins/shift.def:71
+msgid "shift count"
+msgstr ""
+
+#: builtins/shopt.def:115
+msgid "cdable_vars"
+msgstr ""
+
+#: builtins/shopt.def:116
+msgid "cdspell"
+msgstr ""
+
+#: builtins/shopt.def:117
+msgid "checkhash"
+msgstr ""
+
+#: builtins/shopt.def:118
+msgid "checkwinsize"
+msgstr ""
+
+#: builtins/shopt.def:120
+msgid "cmdhist"
+msgstr ""
+
+#: builtins/shopt.def:122
+msgid "dotglob"
+msgstr ""
+
+#: builtins/shopt.def:123
+msgid "execfail"
+msgstr ""
+
+#: builtins/shopt.def:124
+msgid "expand_aliases"
+msgstr ""
+
+#: builtins/shopt.def:126
+msgid "extdebug"
+msgstr ""
+
+#: builtins/shopt.def:129
+msgid "extglob"
+msgstr ""
+
+#: builtins/shopt.def:131
+msgid "extquote"
+msgstr ""
+
+#: builtins/shopt.def:132
+msgid "failglob"
+msgstr ""
+
+#: builtins/shopt.def:134
+msgid "force_fignore"
+msgstr ""
+
+#: builtins/shopt.def:135
+msgid "gnu_errfmt"
+msgstr ""
+
+#: builtins/shopt.def:136
+msgid "histreedit"
+msgstr ""
+
+#: builtins/shopt.def:139
+msgid "histappend"
+msgstr ""
+
+#: builtins/shopt.def:142
+msgid "histverify"
+msgstr ""
+
+#: builtins/shopt.def:143
+msgid "hostcomplete"
+msgstr ""
+
+#: builtins/shopt.def:145
+msgid "huponexit"
+msgstr ""
+
+#: builtins/shopt.def:146
+msgid "interactive_comments"
+msgstr ""
+
+#: builtins/shopt.def:148
+msgid "lithist"
+msgstr ""
+
+#: builtins/shopt.def:150
+msgid "login_shell"
+msgstr ""
+
+#: builtins/shopt.def:151
+msgid "mailwarn"
+msgstr ""
+
+#: builtins/shopt.def:153
+msgid "no_empty_cmd_completion"
+msgstr ""
+
+#: builtins/shopt.def:155
+msgid "nocaseglob"
+msgstr ""
+
+#: builtins/shopt.def:156
+msgid "nullglob"
+msgstr ""
+
+#: builtins/shopt.def:158
+msgid "progcomp"
+msgstr ""
+
+#: builtins/shopt.def:160
+msgid "promptvars"
+msgstr ""
+
+#: builtins/shopt.def:162
+msgid "restricted_shell"
+msgstr ""
+
+#: builtins/shopt.def:164
+msgid "shift_verbose"
+msgstr ""
+
+#: builtins/shopt.def:165
+msgid "sourcepath"
+msgstr ""
+
+#: builtins/shopt.def:166
+msgid "xpg_echo"
+msgstr ""
+
+#: builtins/shopt.def:196
+msgid "psuoq"
+msgstr ""
+
+#: builtins/shopt.def:224
+msgid "cannot set and unset shell options simultaneously"
+msgstr ""
+
+#: builtins/shopt.def:289
+#, c-format
+msgid "%s: invalid shell option name"
+msgstr ""
+
+#: builtins/shopt.def:325
+#, c-format
+msgid "shopt %s %s\n"
+msgstr ""
+
+#: builtins/source.def:116
+msgid "filename argument required"
+msgstr ""
+
+#: builtins/source.def:136
+#, c-format
+msgid "%s: file not found"
+msgstr ""
+
+#: builtins/suspend.def:2
+msgid "suspend"
+msgstr ""
+
+#: builtins/suspend.def:77
+msgid "f"
+msgstr ""
+
+#: builtins/suspend.def:92
+msgid "cannot suspend"
+msgstr ""
+
+#: builtins/suspend.def:102
+msgid "cannot suspend a login shell"
+msgstr ""
+
+#: builtins/test.def:2 builtins/test.def:98
+msgid "test"
+msgstr ""
+
+#: builtins/times.def:2
+msgid "times"
+msgstr ""
+
+#: builtins/times.def:109
+msgid ""
+"0.00 0.00\n"
+"0.00 0.00\n"
+msgstr ""
+
+#: builtins/trap.def:39
+msgid "kill -signal $$"
+msgstr ""
+
+#: builtins/trap.def:94
+msgid "lp"
+msgstr ""
+
+#: builtins/trap.def:215
+#, c-format
+msgid "trap -- %s %d\n"
+msgstr ""
+
+#: builtins/trap.def:219 builtins/trap.def:221 builtins/trap.def:224
+#, c-format
+msgid "trap -- %s %s\n"
+msgstr ""
+
+#: builtins/type.def:2 builtins/type.def:127
+msgid "type"
+msgstr ""
+
+#: builtins/type.def:127
+msgid "-type"
+msgstr ""
+
+#: builtins/type.def:132
+msgid "path"
+msgstr ""
+
+#: builtins/type.def:132
+msgid "-path"
+msgstr ""
+
+#: builtins/type.def:137
+msgid "all"
+msgstr ""
+
+#: builtins/type.def:137
+msgid "-all"
+msgstr ""
+
+#: builtins/type.def:145
+msgid "afptP"
+msgstr ""
+
+#: builtins/type.def:230
+#, c-format
+msgid "%s is aliased to `%s'\n"
+msgstr ""
+
+#: builtins/type.def:234
+#, c-format
+msgid "alias %s=%s\n"
+msgstr ""
+
+#: builtins/type.def:251
+#, c-format
+msgid "%s is a shell keyword\n"
+msgstr ""
+
+#: builtins/type.def:271
+#, c-format
+msgid "%s is a function\n"
+msgstr ""
+
+#: builtins/type.def:296
+#, c-format
+msgid "%s is a shell builtin\n"
+msgstr ""
+
+#: builtins/type.def:317 builtins/type.def:382
+#, c-format
+msgid "%s is %s\n"
+msgstr ""
+
+#: builtins/type.def:337
+#, c-format
+msgid "%s is hashed (%s)\n"
+msgstr ""
+
+#: builtins/ulimit.def:2
+msgid "ulimit"
+msgstr ""
+
+#: builtins/ulimit.def:111
+#, c-format
+msgid "%ld%s"
+msgstr ""
+
+#: builtins/ulimit.def:195
+msgid "core file size"
+msgstr ""
+
+#: builtins/ulimit.def:195 builtins/ulimit.def:200
+msgid "blocks"
+msgstr ""
+
+#: builtins/ulimit.def:198
+msgid "data seg size"
+msgstr ""
+
+#: builtins/ulimit.def:198 builtins/ulimit.def:202 builtins/ulimit.def:205
+#: builtins/ulimit.def:210 builtins/ulimit.def:217 builtins/ulimit.def:220
+msgid "kbytes"
+msgstr ""
+
+#: builtins/ulimit.def:200
+msgid "file size"
+msgstr ""
+
+#: builtins/ulimit.def:202
+msgid "max locked memory"
+msgstr ""
+
+#: builtins/ulimit.def:205
+msgid "max memory size"
+msgstr ""
+
+#: builtins/ulimit.def:207
+msgid "open files"
+msgstr ""
+
+#: builtins/ulimit.def:208
+msgid "pipe size"
+msgstr ""
+
+#: builtins/ulimit.def:208
+msgid "512 bytes"
+msgstr ""
+
+#: builtins/ulimit.def:210
+msgid "stack size"
+msgstr ""
+
+#: builtins/ulimit.def:213
+msgid "cpu time"
+msgstr ""
+
+#: builtins/ulimit.def:213
+msgid "seconds"
+msgstr ""
+
+#: builtins/ulimit.def:215
+msgid "max user processes"
+msgstr ""
+
+#: builtins/ulimit.def:217
+msgid "virtual memory"
+msgstr ""
+
+#: builtins/ulimit.def:220
+msgid "swap size"
+msgstr ""
+
+#: builtins/ulimit.def:328 builtins/ulimit.def:401 builtins/ulimit.def:674
+msgid "unlimited"
+msgstr ""
+
+#: builtins/ulimit.def:330
+#, c-format
+msgid "%s: invalid limit argument"
+msgstr ""
+
+#: builtins/ulimit.def:356
+#, c-format
+msgid "`%c': bad command"
+msgstr ""
+
+#: builtins/ulimit.def:385 builtins/ulimit.def:649
+#, c-format
+msgid "%s: cannot get limit: %s"
+msgstr ""
+
+#: builtins/ulimit.def:397 builtins/ulimit.def:676
+msgid "hard"
+msgstr ""
+
+#: builtins/ulimit.def:399 builtins/ulimit.def:678
+msgid "soft"
+msgstr ""
+
+#: builtins/ulimit.def:411
+msgid "limit"
+msgstr ""
+
+#: builtins/ulimit.def:423 builtins/ulimit.def:716
+#, c-format
+msgid "%s: cannot modify limit: %s"
+msgstr ""
+
+#: builtins/ulimit.def:667
+#, c-format
+msgid "(%s, -%c) "
+msgstr ""
+
+#: builtins/ulimit.def:669
+#, c-format
+msgid "(-%c) "
+msgstr ""
+
+#: builtins/ulimit.def:671
+#, c-format
+msgid "%-18s %16s"
+msgstr ""
+
+#: builtins/umask.def:2
+msgid "umask"
+msgstr ""
+
+#: builtins/umask.def:80
+msgid "Sp"
+msgstr ""
+
+#: builtins/umask.def:110
+msgid "octal number"
+msgstr ""
+
+#: builtins/umask.def:131
+#, c-format
+msgid "umask%s "
+msgstr ""
+
+#: builtins/umask.def:131
+msgid " -S"
+msgstr ""
+
+#: builtins/umask.def:135
+#, c-format
+msgid "%04lo\n"
+msgstr ""
+
+#: builtins/umask.def:178
+#, c-format
+msgid "u=%s,g=%s,o=%s\n"
+msgstr ""
+
+#: builtins/umask.def:194
+msgid "agou"
+msgstr ""
+
+#: builtins/umask.def:224
+#, c-format
+msgid "`%c': invalid symbolic mode operator"
+msgstr ""
+
+#: builtins/umask.def:229
+msgid "rwx"
+msgstr ""
+
+#: builtins/umask.def:277
+#, c-format
+msgid "`%c': invalid symbolic mode character"
+msgstr ""
+
+#: lib/sh/clock.c:79 lib/sh/timeval.c:143
+#, c-format
+msgid "%ldm%d.%03ds"
+msgstr ""
+
+#: lib/sh/fmtulong.c:55 lib/sh/snprintf.c:167
+msgid "0123456789abcdef"
+msgstr ""
+
+#: lib/sh/fmtulong.c:56 lib/sh/snprintf.c:168
+msgid "0123456789ABCDEF"
+msgstr ""
+
+#: lib/sh/fmtulong.c:99
+msgid "invalid base"
+msgstr ""
+
+#: lib/sh/getcwd.c:75
+msgid "../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../.."
+msgstr ""
+
+#: lib/sh/getcwd.c:304
+msgid "cwd: getcwd"
+msgstr ""
+
+#: lib/sh/inet_aton.c:59
+msgid "@(#)inet_addr.c\t8.1 (Berkeley) 6/17/93"
+msgstr ""
+
+#: lib/sh/inet_aton.c:60
+msgid "$Id: inet_addr.c,v 1.5 1996/08/14 03:48:37 drepper Exp $"
+msgstr ""
+
+#: lib/sh/mailstat.c:95
+#, c-format
+msgid "%s/cur"
+msgstr ""
+
+#: lib/sh/mailstat.c:101
+#, c-format
+msgid "%s/tmp"
+msgstr ""
+
+#: lib/sh/mailstat.c:107
+#, c-format
+msgid "%s/new"
+msgstr ""
+
+#: lib/sh/mailstat.c:126
+msgid "cur"
+msgstr ""
+
+#: lib/sh/mailstat.c:126
+msgid "new"
+msgstr ""
+
+#: lib/sh/mailstat.c:127
+#, c-format
+msgid "%s/"
+msgstr ""
+
+#: lib/sh/makepath.c:77
+msgid "sh_makepath"
+msgstr ""
+
+#: lib/sh/mktime.c:330
+#, c-format
+msgid "%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d"
+msgstr ""
+
+#: lib/sh/mktime.c:345
+msgid "mktime ("
+msgstr ""
+
+#: lib/sh/mktime.c:347
+msgid ""
+")\n"
+"yields ("
+msgstr ""
+
+#: lib/sh/mktime.c:349
+#, c-format
+msgid ") == %ld, should be %ld\n"
+msgstr ""
+
+#: lib/sh/mktime.c:367
+#, c-format
+msgid "%d-%d-%d%c"
+msgstr ""
+
+#: lib/sh/mktime.c:370
+#, c-format
+msgid "%d:%d:%d%c"
+msgstr ""
+
+#: lib/sh/mktime.c:380
+#, c-format
+msgid "mktime returns %ld == "
+msgstr ""
+
+#: lib/sh/mktime.c:410
+#, c-format
+msgid ""
+"Usage:\t%s YYYY-MM-DD HH:MM:SS [ISDST] # Test given time.\n"
+"\t%s FROM BY TO # Test values FROM, FROM+BY, ..., TO.\n"
+"\t%s FROM BY TO - # Do not test those values (for benchmark).\n"
+msgstr ""
+
+#: lib/sh/netopen.c:128
+msgid "tcp"
+msgstr ""
+
+#: lib/sh/netopen.c:128
+msgid "udp"
+msgstr ""
+
+#: lib/sh/netopen.c:156
+#, c-format
+msgid "%s: host unknown"
+msgstr ""
+
+#: lib/sh/netopen.c:163
+#, c-format
+msgid "%s: invalid service"
+msgstr ""
+
+#: lib/sh/netopen.c:176 lib/sh/netopen.c:234
+msgid "socket"
+msgstr ""
+
+#: lib/sh/netopen.c:183 lib/sh/netopen.c:246
+msgid "connect"
+msgstr ""
+
+#: lib/sh/netopen.c:294
+#, c-format
+msgid "%s: bad network path specification"
+msgstr ""
+
+#: lib/sh/netopen.c:334
+msgid "network operations not supported"
+msgstr ""
+
+#: lib/sh/pathphys.c:269
+msgid "sh_realpath"
+msgstr ""
+
+#: lib/sh/shmatch.c:95 lib/sh/shmatch.c:96
+msgid "BASH_REMATCH"
+msgstr ""
+
+#: lib/sh/snprintf.c:402
+msgid "\ 3"
+msgstr ""
+
+#: lib/sh/snprintf.c:892
+msgid "INF"
+msgstr ""
+
+#: lib/sh/snprintf.c:892
+msgid "NAN"
+msgstr ""
+
+#: lib/sh/snprintf.c:893
+msgid "inf"
+msgstr ""
+
+#: lib/sh/snprintf.c:893
+msgid "nan"
+msgstr ""
+
+#: lib/sh/snprintf.c:1646
+msgid "out of virtual memory\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1695 lib/sh/snprintf.c:1697 lib/sh/snprintf.c:1699
+msgid "abcde\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1696
+#, c-format
+msgid "snprintf returns %d with NULL first argument and size of 0\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1698
+#, c-format
+msgid "snprintf returns %d with non-NULL first argument and size of 0\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1700
+#, c-format
+msgid "snprintf returns %d with NULL first argument and non-zero size\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1710
+#, c-format
+msgid "/%%ld %%ld/, 336, 336\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1711 lib/sh/snprintf.c:1712 lib/sh/snprintf.c:1713
+#, c-format
+msgid "/%ld %ld/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1717
+#, c-format
+msgid "/%%d/, 336\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1718 lib/sh/snprintf.c:1719 lib/sh/snprintf.c:1720
+#, c-format
+msgid "/%d/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1724
+#, c-format
+msgid "/%%2d/, 336\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1725 lib/sh/snprintf.c:1726 lib/sh/snprintf.c:1727
+#, c-format
+msgid "/%2d/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1731
+#, c-format
+msgid "/%%10d/, 336\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1732 lib/sh/snprintf.c:1733 lib/sh/snprintf.c:1734
+#, c-format
+msgid "/%10d/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1738
+#, c-format
+msgid "/%%-10d/, 336\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1739 lib/sh/snprintf.c:1740 lib/sh/snprintf.c:1741
+#, c-format
+msgid "/%-10d/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1748
+#, c-format
+msgid "/%%f/, 1234.56\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1749 lib/sh/snprintf.c:1750 lib/sh/snprintf.c:1751
+#, c-format
+msgid "/%f/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1755
+#, c-format
+msgid "/%%e/, 1234.56\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1756 lib/sh/snprintf.c:1757 lib/sh/snprintf.c:1758
+#, c-format
+msgid "/%e/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1762
+#, c-format
+msgid "/%%4.2f/, 1234.56\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1763 lib/sh/snprintf.c:1764 lib/sh/snprintf.c:1765
+#, c-format
+msgid "/%4.2f/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1769
+#, c-format
+msgid "/%%3.1f/, 1234.56\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1770 lib/sh/snprintf.c:1771 lib/sh/snprintf.c:1772
+#, c-format
+msgid "/%3.1f/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1776
+#, c-format
+msgid "/%%10.3f/, 1234.56\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1777 lib/sh/snprintf.c:1778 lib/sh/snprintf.c:1779
+#, c-format
+msgid "/%10.3f/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1783
+#, c-format
+msgid "/%%10.3e/, 1234.56\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1784 lib/sh/snprintf.c:1785 lib/sh/snprintf.c:1786
+#, c-format
+msgid "/%10.3e/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1790
+#, c-format
+msgid "/%%+4.2f/, 1234.56\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1791 lib/sh/snprintf.c:1792 lib/sh/snprintf.c:1793
+#, c-format
+msgid "/%+4.2f/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1797
+#, c-format
+msgid "/%%010.2f/, 1234.56\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1798 lib/sh/snprintf.c:1799 lib/sh/snprintf.c:1800
+#, c-format
+msgid "/%010.2f/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1804
+msgid "Outstanding acting !"
+msgstr ""
+
+#: lib/sh/snprintf.c:1807
+#, c-format
+msgid "/%%2s/, \"%s\"\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1808 lib/sh/snprintf.c:1809 lib/sh/snprintf.c:1810
+#, c-format
+msgid "/%2s/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1814
+#, c-format
+msgid "/%%22s/ %s\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1815 lib/sh/snprintf.c:1816 lib/sh/snprintf.c:1817
+#, c-format
+msgid "/%22s/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1821
+#, c-format
+msgid "/%%22.5s/ %s\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1822 lib/sh/snprintf.c:1823 lib/sh/snprintf.c:1824
+#, c-format
+msgid "/%22.5s/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1828
+#, c-format
+msgid "/%%-22.5s/ %s\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1829 lib/sh/snprintf.c:1830 lib/sh/snprintf.c:1831
+#, c-format
+msgid "/%-22.5s/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1837
+#, c-format
+msgid "%%x %%X %%#x, 31, 31, 31\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1838 lib/sh/snprintf.c:1839 lib/sh/snprintf.c:1840
+#, c-format
+msgid "%x %X %#x\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1844
+#, c-format
+msgid "**%%d**%% d**%% d**, 42, 42, -42\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1845 lib/sh/snprintf.c:1846 lib/sh/snprintf.c:1847
+#, c-format
+msgid "**%d**% d**% d**\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1853
+#, c-format
+msgid "/%%g/, 31.4\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1854 lib/sh/snprintf.c:1855 lib/sh/snprintf.c:1856
+#: lib/sh/snprintf.c:1975 lib/sh/snprintf.c:1976 lib/sh/snprintf.c:1977
+#: lib/sh/snprintf.c:1982 lib/sh/snprintf.c:1983 lib/sh/snprintf.c:1984
+#, c-format
+msgid "/%g/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1860
+#, c-format
+msgid "/%%.6g/, 31.4\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1861 lib/sh/snprintf.c:1862 lib/sh/snprintf.c:1863
+#, c-format
+msgid "/%.6g/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1867
+#, c-format
+msgid "/%%.1G/, 31.4\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1868 lib/sh/snprintf.c:1869 lib/sh/snprintf.c:1870
+#: lib/sh/snprintf.c:1875 lib/sh/snprintf.c:1876 lib/sh/snprintf.c:1877
+#, c-format
+msgid "/%.1G/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1874
+#, c-format
+msgid "/%%.1G/, 3100000000.4\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1881
+#, c-format
+msgid "abc%%n\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1882 lib/sh/snprintf.c:1883 lib/sh/snprintf.c:1885
+#, c-format
+msgid "abc%n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1884 lib/sh/snprintf.c:1886
+#, c-format
+msgid ""
+"%d\n"
+"\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1888
+#, c-format
+msgid "%%*.*s --> 10.10\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1889 lib/sh/snprintf.c:1890 lib/sh/snprintf.c:1891
+#, c-format
+msgid "%*.*s\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1895
+#, c-format
+msgid "%%%%%%%%\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1896 lib/sh/snprintf.c:1897 lib/sh/snprintf.c:1898
+#, c-format
+msgid "%%%%\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1902
+msgid "Hello this is a too big string for the buffer"
+msgstr ""
+
+#: lib/sh/snprintf.c:1904
+#, c-format
+msgid "<%%>, %s\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1907 lib/sh/snprintf.c:1908 lib/sh/snprintf.c:1915
+#: lib/sh/snprintf.c:1922 lib/sh/snprintf.c:1930 lib/sh/snprintf.c:1939
+#: lib/sh/snprintf.c:1948 lib/sh/snprintf.c:1955
+#, c-format
+msgid "<%s>\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1909 lib/sh/snprintf.c:1916 lib/sh/snprintf.c:1923
+#: lib/sh/snprintf.c:1931 lib/sh/snprintf.c:1940 lib/sh/snprintf.c:1949
+#: lib/sh/snprintf.c:1956
+#, c-format
+msgid ""
+"<%s>\n"
+"\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1911
+#, c-format
+msgid "<%%p> vsnprintf\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1912 lib/sh/snprintf.c:1913
+#, c-format
+msgid "%p"
+msgstr ""
+
+#: lib/sh/snprintf.c:1914
+#, c-format
+msgid "<%p>\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1918
+#, c-format
+msgid "<%%lu> LONG_MAX+1\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1919 lib/sh/snprintf.c:1920
+#, c-format
+msgid "%lu"
+msgstr ""
+
+#: lib/sh/snprintf.c:1921
+#, c-format
+msgid "<%lu>\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1926
+#, c-format
+msgid "<%%llu> LLONG_MAX+1\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1927 lib/sh/snprintf.c:1928
+#, c-format
+msgid "%llu"
+msgstr ""
+
+#: lib/sh/snprintf.c:1929
+#, c-format
+msgid "<%llu>\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1935
+#, c-format
+msgid "<%%6.2LE> 42.42\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1936 lib/sh/snprintf.c:1937
+#, c-format
+msgid "%6.2LE"
+msgstr ""
+
+#: lib/sh/snprintf.c:1938
+#, c-format
+msgid "<%6.2LE>\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1944
+#, c-format
+msgid "<%%6.2A> 42.42\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1945 lib/sh/snprintf.c:1946
+#, c-format
+msgid "%6.2A"
+msgstr ""
+
+#: lib/sh/snprintf.c:1947
+#, c-format
+msgid "<%6.2A>\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1951
+#, c-format
+msgid "<%%6.2LA> 42.42\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1952 lib/sh/snprintf.c:1953
+#, c-format
+msgid "%6.2LA"
+msgstr ""
+
+#: lib/sh/snprintf.c:1954
+#, c-format
+msgid "<%6.2LA>\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1959
+#, c-format
+msgid "<%%.10240f> DBL_MAX\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1960 lib/sh/snprintf.c:1961
+#, c-format
+msgid "%.10240f"
+msgstr ""
+
+#: lib/sh/snprintf.c:1962
+#, c-format
+msgid "<%.10240f>\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1963 lib/sh/snprintf.c:1970
+#, c-format
+msgid "<%d> <%s>\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1964 lib/sh/snprintf.c:1971
+#, c-format
+msgid ""
+"<%d> <%s>\n"
+"\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1966
+#, c-format
+msgid "<%%.10240Lf> LDBL_MAX\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1967 lib/sh/snprintf.c:1968
+#, c-format
+msgid "%.10240Lf"
+msgstr ""
+
+#: lib/sh/snprintf.c:1969
+#, c-format
+msgid "<%.10240Lf>\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1974
+#, c-format
+msgid "/%%g/, 421.2345\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1981
+#, c-format
+msgid "/%%g/, 4214.2345\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1988
+#, c-format
+msgid "/%%.5g/, 4214.2345\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1989 lib/sh/snprintf.c:1990 lib/sh/snprintf.c:1991
+#, c-format
+msgid "/%.5g/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1995
+#, c-format
+msgid "/%%.4g/, 4214.2345\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:1996 lib/sh/snprintf.c:1997 lib/sh/snprintf.c:1998
+#, c-format
+msgid "/%.4g/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2002
+#, c-format
+msgid "/%%'ld %%'ld/, 12345, 1234567\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2003 lib/sh/snprintf.c:2004 lib/sh/snprintf.c:2005
+#: lib/sh/snprintf.c:2010 lib/sh/snprintf.c:2011 lib/sh/snprintf.c:2012
+#: lib/sh/snprintf.c:2017 lib/sh/snprintf.c:2018 lib/sh/snprintf.c:2019
+#, c-format
+msgid "/%'ld %'ld/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2009
+#, c-format
+msgid "/%%'ld %%'ld/, 336, 3336\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2016
+#, c-format
+msgid "/%%'ld %%'ld/, -42786, -142786\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2023
+#, c-format
+msgid "/%%'f %%'f/, 421.2345, 421234.56789\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2024 lib/sh/snprintf.c:2025 lib/sh/snprintf.c:2026
+#: lib/sh/snprintf.c:2031 lib/sh/snprintf.c:2032 lib/sh/snprintf.c:2033
+#, c-format
+msgid "/%'f %'f/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2030
+#, c-format
+msgid "/%%'f %%'f/, -421.2345, -421234.56789\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2037
+#, c-format
+msgid "/%%'g %%'g/, 421.2345, 421234.56789\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2038 lib/sh/snprintf.c:2039 lib/sh/snprintf.c:2040
+#: lib/sh/snprintf.c:2045 lib/sh/snprintf.c:2046 lib/sh/snprintf.c:2047
+#, c-format
+msgid "/%'g %'g/\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2044
+#, c-format
+msgid "/%%'g %%'g/, -421.2345, -421234.56789\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2052
+#, c-format
+msgid "/%%'g/, 4213455.8392\n"
+msgstr ""
+
+#: lib/sh/snprintf.c:2053 lib/sh/snprintf.c:2054 lib/sh/snprintf.c:2055
+#, c-format
+msgid "/%'g/\n"
+msgstr ""
+
+#: lib/sh/strerror.c:49
+msgid "Unknown system error "
+msgstr ""
+
+#: lib/sh/strftime.c:153
+msgid "Sun"
+msgstr ""
+
+#: lib/sh/strftime.c:153
+msgid "Mon"
+msgstr ""
+
+#: lib/sh/strftime.c:153
+msgid "Tue"
+msgstr ""
+
+#: lib/sh/strftime.c:153
+msgid "Wed"
+msgstr ""
+
+#: lib/sh/strftime.c:154
+msgid "Thu"
+msgstr ""
+
+#: lib/sh/strftime.c:154
+msgid "Fri"
+msgstr ""
+
+#: lib/sh/strftime.c:154
+msgid "Sat"
+msgstr ""
+
+#: lib/sh/strftime.c:157
+msgid "Sunday"
+msgstr ""
+
+#: lib/sh/strftime.c:157
+msgid "Monday"
+msgstr ""
+
+#: lib/sh/strftime.c:157
+msgid "Tuesday"
+msgstr ""
+
+#: lib/sh/strftime.c:157
+msgid "Wednesday"
+msgstr ""
+
+#: lib/sh/strftime.c:158
+msgid "Thursday"
+msgstr ""
+
+#: lib/sh/strftime.c:158
+msgid "Friday"
+msgstr ""
+
+#: lib/sh/strftime.c:158
+msgid "Saturday"
+msgstr ""
+
+#: lib/sh/strftime.c:161
+msgid "Jan"
+msgstr ""
+
+#: lib/sh/strftime.c:161
+msgid "Feb"
+msgstr ""
+
+#: lib/sh/strftime.c:161
+msgid "Mar"
+msgstr ""
+
+#: lib/sh/strftime.c:161
+msgid "Apr"
+msgstr ""
+
+#: lib/sh/strftime.c:161 lib/sh/strftime.c:166
+msgid "May"
+msgstr ""
+
+#: lib/sh/strftime.c:161
+msgid "Jun"
+msgstr ""
+
+#: lib/sh/strftime.c:162
+msgid "Jul"
+msgstr ""
+
+#: lib/sh/strftime.c:162
+msgid "Aug"
+msgstr ""
+
+#: lib/sh/strftime.c:162
+msgid "Sep"
+msgstr ""
+
+#: lib/sh/strftime.c:162
+msgid "Oct"
+msgstr ""
+
+#: lib/sh/strftime.c:162
+msgid "Nov"
+msgstr ""
+
+#: lib/sh/strftime.c:162
+msgid "Dec"
+msgstr ""
+
+#: lib/sh/strftime.c:165
+msgid "January"
+msgstr ""
+
+#: lib/sh/strftime.c:165
+msgid "February"
+msgstr ""
+
+#: lib/sh/strftime.c:165
+msgid "March"
+msgstr ""
+
+#: lib/sh/strftime.c:165
+msgid "April"
+msgstr ""
+
+#: lib/sh/strftime.c:166
+msgid "June"
+msgstr ""
+
+#: lib/sh/strftime.c:166
+msgid "July"
+msgstr ""
+
+#: lib/sh/strftime.c:166
+msgid "August"
+msgstr ""
+
+#: lib/sh/strftime.c:166
+msgid "September"
+msgstr ""
+
+#: lib/sh/strftime.c:167
+msgid "October"
+msgstr ""
+
+#: lib/sh/strftime.c:167
+msgid "November"
+msgstr ""
+
+#: lib/sh/strftime.c:167
+msgid "December"
+msgstr ""
+
+#: lib/sh/strftime.c:169
+msgid "AM"
+msgstr ""
+
+#: lib/sh/strftime.c:169
+msgid "PM"
+msgstr ""
+
+#: lib/sh/strftime.c:270
+msgid "%A %B %d %T %Y"
+msgstr ""
+
+#: lib/sh/strftime.c:275 lib/sh/strftime.c:280 lib/sh/strftime.c:321
+#: lib/sh/strftime.c:329 lib/sh/strftime.c:338 lib/sh/strftime.c:347
+#: lib/sh/strftime.c:352 lib/sh/strftime.c:393 lib/sh/strftime.c:413
+#: lib/sh/strftime.c:417 lib/sh/strftime.c:426 lib/sh/strftime.c:440
+#, c-format
+msgid "%02d"
+msgstr ""
+
+#: lib/sh/strftime.c:284
+msgid "%m/%d/%y"
+msgstr ""
+
+#: lib/sh/strftime.c:288 lib/sh/strftime.c:519 lib/sh/strftime.c:528
+#, c-format
+msgid "%2d"
+msgstr ""
+
+#: lib/sh/strftime.c:296
+msgid "%Y-%m-%d"
+msgstr ""
+
+#: lib/sh/strftime.c:342
+#, c-format
+msgid "%03d"
+msgstr ""
+
+#: lib/sh/strftime.c:373
+msgid "%I:%M:%S %p"
+msgstr ""
+
+#: lib/sh/strftime.c:386 lib/malloc/stats.c:181
+#, c-format
+msgid "%ld"
+msgstr ""
+
+#: lib/sh/strftime.c:430
+msgid "%A %B %d %Y"
+msgstr ""
+
+#: lib/sh/strftime.c:495
+#, c-format
+msgid "%02d%02d"
+msgstr ""
+
+#: lib/sh/strftime.c:544
+#, c-format
+msgid "%2d-%3.3s-%4d"
+msgstr ""
+
+#: lib/sh/strftime.c:786
+#, c-format
+msgid "(%%A)      full weekday name, var length (Sunday..Saturday)  %A"
+msgstr ""
+
+#: lib/sh/strftime.c:787
+msgid "(%%B)       full month name, var length (January..December)  %B"
+msgstr ""
+
+#: lib/sh/strftime.c:788
+#, c-format
+msgid "(%%C)                                               Century  %C"
+msgstr ""
+
+#: lib/sh/strftime.c:789
+msgid "(%%D)                                       date (%%m/%%d/%%y)  %D"
+msgstr ""
+
+#: lib/sh/strftime.c:790
+#, c-format
+msgid "(%%E)                           Locale extensions (ignored)  %E"
+msgstr ""
+
+#: lib/sh/strftime.c:791
+#, c-format
+msgid "(%%F)       full month name, var length (January..December)  %F"
+msgstr ""
+
+#: lib/sh/strftime.c:792
+msgid "(%%H)                          hour (24-hour clock, 00..23)  %H"
+msgstr ""
+
+#: lib/sh/strftime.c:793
+msgid "(%%I)                          hour (12-hour clock, 01..12)  %I"
+msgstr ""
+
+#: lib/sh/strftime.c:794
+msgid "(%%M)                                       minute (00..59)  %M"
+msgstr ""
+
+#: lib/sh/strftime.c:795
+msgid "(%%N)                                      Emporer/Era Name  %N"
+msgstr ""
+
+#: lib/sh/strftime.c:796
+msgid "(%%O)                           Locale extensions (ignored)  %O"
+msgstr ""
+
+#: lib/sh/strftime.c:797
+msgid "(%%R)                                 time, 24-hour (%%H:%%M)  %R"
+msgstr ""
+
+#: lib/sh/strftime.c:798
+#, c-format
+msgid "(%%S)                                       second (00..60)  %S"
+msgstr ""
+
+#: lib/sh/strftime.c:799
+msgid "(%%T)                              time, 24-hour (%%H:%%M:%%S)  %T"
+msgstr ""
+
+#: lib/sh/strftime.c:800
+msgid "(%%U)    week of year, Sunday as first day of week (00..53)  %U"
+msgstr ""
+
+#: lib/sh/strftime.c:801
+msgid "(%%V)                    week of year according to ISO 8601  %V"
+msgstr ""
+
+#: lib/sh/strftime.c:802
+msgid "(%%W)    week of year, Monday as first day of week (00..53)  %W"
+msgstr ""
+
+#: lib/sh/strftime.c:803
+msgid "(%%X)     appropriate locale time representation (%H:%M:%S)  %X"
+msgstr ""
+
+#: lib/sh/strftime.c:804
+msgid "(%%Y)                           year with century (1970...)  %Y"
+msgstr ""
+
+#: lib/sh/strftime.c:805
+msgid "(%%Z) timezone (EDT), or blank if timezone not determinable  %Z"
+msgstr ""
+
+#: lib/sh/strftime.c:806
+#, c-format
+msgid "(%%a)          locale's abbreviated weekday name (Sun..Sat)  %a"
+msgstr ""
+
+#: lib/sh/strftime.c:807
+msgid "(%%b)            locale's abbreviated month name (Jan..Dec)  %b"
+msgstr ""
+
+#: lib/sh/strftime.c:808
+msgid "(%%c)           full date (Sat Nov  4 12:02:33 1989)%n%t%t%t  %c"
+msgstr ""
+
+#: lib/sh/strftime.c:809
+#, c-format
+msgid "(%%d)                             day of the month (01..31)  %d"
+msgstr ""
+
+#: lib/sh/strftime.c:810
+#, c-format
+msgid "(%%e)               day of the month, blank-padded ( 1..31)  %e"
+msgstr ""
+
+#: lib/sh/strftime.c:811
+msgid "(%%h)                                should be same as (%%b)  %h"
+msgstr ""
+
+#: lib/sh/strftime.c:812
+msgid "(%%j)                            day of the year (001..366)  %j"
+msgstr ""
+
+#: lib/sh/strftime.c:813
+msgid "(%%k)               hour, 24-hour clock, blank pad ( 0..23)  %k"
+msgstr ""
+
+#: lib/sh/strftime.c:814
+msgid "(%%l)               hour, 12-hour clock, blank pad ( 0..12)  %l"
+msgstr ""
+
+#: lib/sh/strftime.c:815
+#, c-format
+msgid "(%%m)                                        month (01..12)  %m"
+msgstr ""
+
+#: lib/sh/strftime.c:816
+#, c-format
+msgid "(%%o)                                      Emporer/Era Year  %o"
+msgstr ""
+
+#: lib/sh/strftime.c:817
+#, c-format
+msgid "(%%p)              locale's AM or PM based on 12-hour clock  %p"
+msgstr ""
+
+#: lib/sh/strftime.c:818
+msgid "(%%r)                   time, 12-hour (same as %%I:%%M:%%S %%p)  %r"
+msgstr ""
+
+#: lib/sh/strftime.c:819
+#, c-format
+msgid "(%%u) ISO 8601: Weekday as decimal number [1 (Monday) - 7]   %u"
+msgstr ""
+
+#: lib/sh/strftime.c:820
+msgid "(%%v)                                VMS date (dd-bbb-YYYY)  %v"
+msgstr ""
+
+#: lib/sh/strftime.c:821
+msgid "(%%w)                       day of week (0..6, Sunday == 0)  %w"
+msgstr ""
+
+#: lib/sh/strftime.c:822
+#, c-format
+msgid "(%%x)                appropriate locale date representation  %x"
+msgstr ""
+
+#: lib/sh/strftime.c:823
+msgid "(%%y)                      last two digits of year (00..99)  %y"
+msgstr ""
+
+#: lib/sh/strftime.c:824
+msgid "(%%z)      timezone offset east of GMT as HHMM (e.g. -0500)  %z"
+msgstr ""
+
+#: lib/sh/stringlist.c:235
+#, c-format
+msgid "%s%s\n"
+msgstr ""
+
+#: lib/sh/strtoimax.c:38 lib/sh/strtoimax.c:45 lib/sh/strtoumax.c:38
+#: lib/sh/strtoumax.c:45
+msgid "this configure-time declaration test was not run"
+msgstr ""
+
+#: lib/sh/strtoimax.c:83
+#, c-format
+msgid "sizeof intmax_t: %d\n"
+msgstr ""
+
+#: lib/sh/strtoimax.c:86
+#, c-format
+msgid "sizeof long long: %d\n"
+msgstr ""
+
+#: lib/sh/strtoimax.c:88
+#, c-format
+msgid "sizeof long: %d\n"
+msgstr ""
+
+#: lib/sh/strtoimax.c:98
+#, c-format
+msgid "%lld %lld %ld\n"
+msgstr ""
+
+#: lib/sh/strtoumax.c:83
+#, c-format
+msgid "sizeof uintmax_t: %d\n"
+msgstr ""
+
+#: lib/sh/strtoumax.c:86
+#, c-format
+msgid "sizeof unsigned long long: %d\n"
+msgstr ""
+
+#: lib/sh/strtoumax.c:88
+#, c-format
+msgid "sizeof unsigned long: %d\n"
+msgstr ""
+
+#: lib/sh/strtoumax.c:98
+#, c-format
+msgid "%llu %llu %lu\n"
+msgstr ""
+
+#: lib/sh/tmpfile.c:46
+msgid "shtmp"
+msgstr ""
+
+#: lib/sh/tmpfile.c:73
+msgid "/var/tmp"
+msgstr ""
+
+#: lib/sh/tmpfile.c:77
+msgid "/usr/tmp"
+msgstr ""
+
+#: lib/sh/tmpfile.c:92
+msgid "TMPDIR"
+msgstr ""
+
+#: lib/sh/tmpfile.c:122 lib/sh/tmpfile.c:167
+#, c-format
+msgid "%s/%s.XXXXXX"
+msgstr ""
+
+#: lib/sh/tmpfile.c:135 lib/sh/tmpfile.c:184
+#, c-format
+msgid "%s/%s-%lu"
+msgstr ""
+
+#: lib/sh/tmpfile.c:212
+msgid "w+"
+msgstr ""
+
+#: lib/malloc/alloca.c:446
+#, c-format
+msgid "%011o %011o %011o\n"
+msgstr ""
+
+#: lib/malloc/alloca.c:467
+#, c-format
+msgid "%011o %011o\n"
+msgstr ""
+
+#: lib/malloc/i386-alloca.s:1
+msgid "alloca.s"
+msgstr ""
+
+#: lib/malloc/imalloc.h:52
+msgid "x"
+msgstr ""
+
+#: lib/malloc/malloc.c:298
+#, c-format
+msgid "malloc: failed assertion: %s\n"
+msgstr ""
+
+#: lib/malloc/malloc.c:314
+#, c-format
+msgid ""
+"\r\n"
+"malloc: %s:%d: assertion botched\r\n"
+msgstr ""
+
+#: lib/malloc/malloc.c:355
+msgid "bcoalesce: CHAIN(mp2) != mp1"
+msgstr ""
+
+#: lib/malloc/malloc.c:604
+msgid "malloc_debug_dummy\n"
+msgstr ""
+
+#: lib/malloc/malloc.c:740
+msgid "malloc: block on free list clobbered"
+msgstr ""
+
+#: lib/malloc/malloc.c:766 lib/malloc/malloc.c:768 lib/malloc/malloc.c:773
+msgid "malloc"
+msgstr ""
+
+#: lib/malloc/malloc.c:817
+msgid "free: called with already freed block argument"
+msgstr ""
+
+#: lib/malloc/malloc.c:820
+msgid "free: called with unallocated block argument"
+msgstr ""
+
+#: lib/malloc/malloc.c:839
+msgid "free: underflow detected; mh_nbytes out of range"
+msgstr ""
+
+#: lib/malloc/malloc.c:845
+msgid "free: start and end chunk sizes differ"
+msgstr ""
+
+#: lib/malloc/malloc.c:942
+msgid "realloc: called with unallocated block argument"
+msgstr ""
+
+#: lib/malloc/malloc.c:957
+msgid "realloc: underflow detected; mh_nbytes out of range"
+msgstr ""
+
+#: lib/malloc/malloc.c:963
+msgid "realloc: start and end chunk sizes differ"
+msgstr ""
+
+#: lib/malloc/malloc.c:1009 lib/malloc/malloc.c:1011 lib/malloc/malloc.c:1016
+msgid "realloc"
+msgstr ""
+
+#: lib/malloc/memtest.c:125 lib/malloc/memtest.c:138
+msgid "malloc-test: "
+msgstr ""
+
+#: lib/malloc/stats.c:99
+#, c-format
+msgid ""
+"Memory allocation statistics: %s\n"
+"    size\tfree\tin use\ttotal\tmorecore lesscore split\tcoalesce\n"
+msgstr ""
+
+#: lib/malloc/stats.c:104
+#, c-format
+msgid "%8lu\t%4d\t%6d\t%5d\t%8d\t%d %5d %8d\n"
+msgstr ""
+
+#: lib/malloc/stats.c:108
+#, c-format
+msgid ""
+"\n"
+"Total bytes in use: %lu, total bytes free: %lu\n"
+msgstr ""
+
+#: lib/malloc/stats.c:110
+#, c-format
+msgid ""
+"\n"
+"Total bytes requested by application: %lu\n"
+msgstr ""
+
+#: lib/malloc/stats.c:111
+#, c-format
+msgid "Total mallocs: %d, total frees: %d, total reallocs: %d (%d copies)\n"
+msgstr ""
+
+#: lib/malloc/stats.c:113
+#, c-format
+msgid "Total sbrks: %d, total bytes via sbrk: %d\n"
+msgstr ""
+
+#: lib/malloc/stats.c:115
+#, c-format
+msgid "Total blocks split: %d, total block coalesces: %d\n"
+msgstr ""
+
+#: lib/malloc/stats.c:134
+msgid "/var/tmp/maltrace/stats."
+msgstr ""
+
+#: lib/malloc/stats.c:172
+#, c-format
+msgid "%s%ld"
+msgstr ""
+
+#: lib/malloc/table.c:152
+#, c-format
+msgid "malloc: %p: %s: last %s from %s:%d\n"
+msgstr ""
+
+#: lib/malloc/table.c:154 lib/malloc/table.c:155 lib/malloc/table.c:239
+#: lib/malloc/watch.c:46
+msgid "allocated"
+msgstr ""
+
+#: lib/malloc/table.c:154 lib/malloc/table.c:222 lib/malloc/table.c:237
+msgid "free"
+msgstr ""
+
+#: lib/malloc/table.c:155 lib/malloc/watch.c:48
+msgid "freed"
+msgstr ""
+
+#: lib/malloc/table.c:175
+msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
+msgstr ""
+
+#: lib/malloc/table.c:182
+#, c-format
+msgid "register_alloc: %p already in table as allocated?\n"
+msgstr ""
+
+#: lib/malloc/table.c:211
+#, c-format
+msgid "register_free: %p not in allocation table?\n"
+msgstr ""
+
+#: lib/malloc/table.c:218
+#, c-format
+msgid "register_free: %p already in table as free?\n"
+msgstr ""
+
+#: lib/malloc/table.c:241
+msgid "undetermined?"
+msgstr ""
+
+#: lib/malloc/table.c:255
+#, c-format
+msgid "[%d] %p:%d:%s:%s:%s:%d:%d:%d\n"
+msgstr ""
+
+#: lib/malloc/trace.c:51
+#, c-format
+msgid "alloc: %s: %p (%d bytes) from '%s:%d'\n"
+msgstr ""
+
+#: lib/malloc/trace.c:54
+#, c-format
+msgid "alloc:%p:%d:%s:%d\n"
+msgstr ""
+
+#: lib/malloc/trace.c:69
+#, c-format
+msgid "free: %p (%d bytes) from '%s:%d'\n"
+msgstr ""
+
+#: lib/malloc/trace.c:72
+#, c-format
+msgid "free:%p:%d:%s:%d\n"
+msgstr ""
+
+#: lib/malloc/trace.c:107
+msgid "/var/tmp/maltrace/trace."
+msgstr ""
+
+#: lib/malloc/watch.c:50
+msgid "requesting resize"
+msgstr ""
+
+#: lib/malloc/watch.c:52
+msgid "just resized"
+msgstr ""
+
+#: lib/malloc/watch.c:54
+msgid "bug: unknown operation"
+msgstr ""
+
+#: lib/malloc/watch.c:56
+#, c-format
+msgid "malloc: watch alert: %p %s "
+msgstr ""
+
+#: lib/malloc/watch.c:58
+#, c-format
+msgid "(size %lu) "
+msgstr ""
+
+#: lib/malloc/watch.c:59
+#, c-format
+msgid "from '%s:%d'\n"
+msgstr ""
+
+#: lib/malloc/x386-alloca.s:10
+msgid "masm"
+msgstr ""
+
+#: lib/malloc/xmalloc.c:55
+#, c-format
+msgid "%s: out of virtual memory\n"
+msgstr ""
+
+#: lib/malloc/xmalloc.c:70
+msgid "xmalloc"
+msgstr ""
+
+#: lib/malloc/xmalloc.c:84
+msgid "xrealloc"
+msgstr ""
diff --git a/subst.c.orig b/subst.c.orig
new file mode 100644 (file)
index 0000000..011930b
--- /dev/null
@@ -0,0 +1,7376 @@
+/* subst.c -- The part of the shell that does parameter, command, and
+   globbing substitutions. */
+
+/* ``Have a little faith, there's magic in the night.  You ain't a
+     beauty, but, hey, you're alright.'' */
+
+/* Copyright (C) 1987-2004 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash, the Bourne Again SHell.
+
+   Bash is free software; you can redistribute it and/or modify it under
+   the terms of the GNU General Public License as published by the Free
+   Software Foundation; either version 2, or (at your option) any later
+   version.
+
+   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+   for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with Bash; see the file COPYING.  If not, write to the Free Software
+   Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#include "config.h"
+
+#include "bashtypes.h"
+#include <stdio.h>
+#include "chartypes.h"
+#include <pwd.h>
+#include <signal.h>
+#include <errno.h>
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif
+
+#include "bashansi.h"
+#include "posixstat.h"
+#include "bashintl.h"
+
+#include "shell.h"
+#include "flags.h"
+#include "jobs.h"
+#include "execute_cmd.h"
+#include "filecntl.h"
+#include "trap.h"
+#include "pathexp.h"
+#include "mailcheck.h"
+
+#include "shmbutil.h"
+
+#include "builtins/getopt.h"
+#include "builtins/common.h"
+
+#include <tilde/tilde.h>
+#include <glob/strmatch.h>
+
+#if !defined (errno)
+extern int errno;
+#endif /* !errno */
+
+/* The size that strings change by. */
+#define DEFAULT_INITIAL_ARRAY_SIZE 112
+#define DEFAULT_ARRAY_SIZE 128
+
+/* Variable types. */
+#define VT_VARIABLE    0
+#define VT_POSPARMS    1
+#define VT_ARRAYVAR    2
+#define VT_ARRAYMEMBER 3
+
+#define VT_STARSUB     128     /* $* or ${array[*]} -- used to split */
+
+/* Flags for quoted_strchr */
+#define ST_BACKSL      0x01
+#define ST_CTLESC      0x02
+#define ST_SQUOTE      0x04    /* unused yet */
+#define ST_DQUOTE      0x08    /* unused yet */
+
+/* Flags for the string extraction functions. */
+#define EX_NOALLOC     0x01    /* just skip; don't return substring */
+#define EX_VARNAME     0x02    /* variable name; for string_extract () */
+
+/* Flags for the `pflags' argument to param_expand() */
+#define PF_NOCOMSUB    0x01    /* Do not perform command substitution */
+
+/* These defs make it easier to use the editor. */
+#define LBRACE         '{'
+#define RBRACE         '}'
+#define LPAREN         '('
+#define RPAREN         ')'
+
+/* Evaluates to 1 if C is one of the shell's special parameters whose length
+   can be taken, but is also one of the special expansion characters. */
+#define VALID_SPECIAL_LENGTH_PARAM(c) \
+  ((c) == '-' || (c) == '?' || (c) == '#')
+
+/* Evaluates to 1 if C is one of the shell's special parameters for which an
+   indirect variable reference may be made. */
+#define VALID_INDIR_PARAM(c) \
+  ((c) == '#' || (c) == '?' || (c) == '@' || (c) == '*')
+
+/* Evaluates to 1 if C is one of the OP characters that follows the parameter
+   in ${parameter[:]OPword}. */
+#define VALID_PARAM_EXPAND_CHAR(c) (sh_syntaxtab[(unsigned char)c] & CSUBSTOP)
+
+/* Evaluates to 1 if this is one of the shell's special variables. */
+#define SPECIAL_VAR(name, wi) \
+ ((DIGIT (*name) && all_digits (name)) || \
+      (name[1] == '\0' && (sh_syntaxtab[(unsigned char)*name] & CSPECVAR)) || \
+      (wi && name[2] == '\0' && VALID_INDIR_PARAM (name[1])))
+
+/* An expansion function that takes a string and a quoted flag and returns
+   a WORD_LIST *.  Used as the type of the third argument to
+   expand_string_if_necessary(). */
+typedef WORD_LIST *EXPFUNC __P((char *, int));
+
+/* Process ID of the last command executed within command substitution. */
+pid_t last_command_subst_pid = NO_PID;
+pid_t current_command_subst_pid = NO_PID;
+
+/* Variables used to keep track of the characters in IFS. */
+SHELL_VAR *ifs_var;
+char *ifs_value;
+unsigned char ifs_cmap[UCHAR_MAX + 1];
+unsigned char ifs_firstc;
+
+/* Extern functions and variables from different files. */
+extern int last_command_exit_value, last_command_exit_signal;
+extern int subshell_environment;
+extern int subshell_level;
+extern int eof_encountered;
+extern int return_catch_flag, return_catch_value;
+extern pid_t dollar_dollar_pid;
+extern int posixly_correct;
+extern char *this_command_name;
+extern struct fd_bitmap *current_fds_to_close;
+extern int wordexp_only;
+extern int expanding_redir;
+
+/* Non-zero means to allow unmatched globbed filenames to expand to
+   a null file. */
+int allow_null_glob_expansion;
+
+/* Non-zero means to throw an error when globbing fails to match anything. */
+int fail_glob_expansion;
+
+#if 0
+/* Variables to keep track of which words in an expanded word list (the
+   output of expand_word_list_internal) are the result of globbing
+   expansions.  GLOB_ARGV_FLAGS is used by execute_cmd.c.
+   (CURRENTLY UNUSED). */
+char *glob_argv_flags;
+static int glob_argv_flags_size;
+#endif
+
+static WORD_LIST expand_word_error, expand_word_fatal;
+static char expand_param_error, expand_param_fatal;
+
+/* Tell the expansion functions to not longjmp back to top_level on fatal
+   errors.  Enabled when doing completion and prompt string expansion. */
+static int no_longjmp_on_fatal_error = 0;
+
+/* Set by expand_word_unsplit; used to inhibit splitting and re-joining
+   $* on $IFS, primarily when doing assignment statements. */
+static int expand_no_split_dollar_star = 0;
+
+/* Used to hold a list of variable assignments preceding a command.  Global
+   so the SIGCHLD handler in jobs.c can unwind-protect it when it runs a
+   SIGCHLD trap. */
+WORD_LIST *subst_assign_varlist = (WORD_LIST *)NULL;
+
+/* A WORD_LIST of words to be expanded by expand_word_list_internal,
+   without any leading variable assignments. */
+static WORD_LIST *garglist = (WORD_LIST *)NULL;
+
+static char *quoted_substring __P((char *, int, int));
+static int quoted_strlen __P((char *));
+static char *quoted_strchr __P((char *, int, int));
+
+static char *expand_string_if_necessary __P((char *, int, EXPFUNC *));
+static inline char *expand_string_to_string_internal __P((char *, int, EXPFUNC *));
+static WORD_LIST *call_expand_word_internal __P((WORD_DESC *, int, int, int *, int *));
+static WORD_LIST *expand_string_internal __P((char *, int));
+static WORD_LIST *expand_string_leave_quoted __P((char *, int));
+static WORD_LIST *expand_string_for_rhs __P((char *, int, int *, int *));
+
+static WORD_LIST *list_quote_escapes __P((WORD_LIST *));
+static char *dequote_escapes __P((char *));
+static char *make_quoted_char __P((int));
+static WORD_LIST *quote_list __P((WORD_LIST *));
+static WORD_LIST *dequote_list __P((WORD_LIST *));
+static char *remove_quoted_escapes __P((char *));
+static char *remove_quoted_nulls __P((char *));
+
+static int unquoted_substring __P((char *, char *));
+static int unquoted_member __P((int, char *));
+
+static int do_assignment_internal __P((const char *, int));
+
+static char *string_extract_verbatim __P((char *, int *, char *));
+static char *string_extract __P((char *, int *, char *, int));
+static char *string_extract_double_quoted __P((char *, int *, int));
+static inline char *string_extract_single_quoted __P((char *, int *));
+static inline int skip_single_quoted __P((char *, size_t, int));
+static int skip_double_quoted __P((char *, size_t, int));
+static char *extract_delimited_string __P((char *, int *, char *, char *, char *, int));
+static char *extract_dollar_brace_string __P((char *, int *, int, int));
+
+static char *pos_params __P((char *, int, int, int));
+
+static unsigned char *mb_getcharlens __P((char *, int));
+
+static char *remove_upattern __P((char *, char *, int));
+#if defined (HANDLE_MULTIBYTE)
+#  if !defined (HAVE_WCSDUP)
+static wchar_t *wcsdup __P((wchar_t *));
+#  endif
+static wchar_t *remove_wpattern __P((wchar_t *, size_t, wchar_t *, int));
+#endif
+static char *remove_pattern __P((char *, char *, int));
+
+static int match_pattern_char __P((char *, char *));
+static int match_upattern __P((char *, char *, int, char **, char **));
+#if defined (HANDLE_MULTIBYTE)
+static int match_pattern_wchar __P((wchar_t *, wchar_t *));
+static int match_wpattern __P((wchar_t *, char **, size_t, wchar_t *, int, char **, char **));
+#endif
+static int match_pattern __P((char *, char *, int, char **, char **));
+static int getpatspec __P((int, char *));
+static char *getpattern __P((char *, int, int));
+static char *variable_remove_pattern __P((char *, char *, int, int));
+static char *list_remove_pattern __P((WORD_LIST *, char *, int, int, int));
+static char *parameter_list_remove_pattern __P((int, char *, int, int));
+#ifdef ARRAY_VARS
+static char *array_remove_pattern __P((ARRAY *, char *, int, char *, int));
+#endif
+static char *parameter_brace_remove_pattern __P((char *, char *, char *, int, int));
+
+static char *process_substitute __P((char *, int));
+
+static char *read_comsub __P((int, int));
+
+#ifdef ARRAY_VARS
+static arrayind_t array_length_reference __P((char *));
+#endif
+
+static int valid_brace_expansion_word __P((char *, int));
+static int chk_atstar __P((char *, int, int *, int *));
+
+static char *parameter_brace_expand_word __P((char *, int, int));
+static char *parameter_brace_expand_indir __P((char *, int, int, int *, int *));
+static char *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *));
+static void parameter_brace_expand_error __P((char *, char *));
+
+static int valid_length_expression __P((char *));
+static intmax_t parameter_brace_expand_length __P((char *));
+
+static char *skiparith __P((char *, int));
+static int verify_substring_values __P((char *, char *, int, intmax_t *, intmax_t *));
+static int get_var_and_type __P((char *, char *, int, SHELL_VAR **, char **));
+static char *mb_substring __P((char *, int, int));
+static char *parameter_brace_substring __P((char *, char *, char *, int));
+
+static char *pos_params_pat_subst __P((char *, char *, char *, int));
+
+static char *parameter_brace_patsub __P((char *, char *, char *, int));
+
+static char *parameter_brace_expand __P((char *, int *, int, int *, int *));
+static char *param_expand __P((char *, int *, int, int *, int *, int *, int *, int));
+
+static WORD_LIST *expand_word_internal __P((WORD_DESC *, int, int, int *, int *));
+
+static WORD_LIST *word_list_split __P((WORD_LIST *));
+
+static void exp_jump_to_top_level __P((int));
+
+static WORD_LIST *separate_out_assignments __P((WORD_LIST *));
+static WORD_LIST *glob_expand_word_list __P((WORD_LIST *, int));
+#ifdef BRACE_EXPANSION
+static WORD_LIST *brace_expand_word_list __P((WORD_LIST *, int));
+#endif
+static WORD_LIST *shell_expand_word_list __P((WORD_LIST *, int));
+static WORD_LIST *expand_word_list_internal __P((WORD_LIST *, int));
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     Utility Functions                           */
+/*                                                                 */
+/* **************************************************************** */
+
+#ifdef INCLUDE_UNUSED
+static char *
+quoted_substring (string, start, end)
+     char *string;
+     int start, end;
+{
+  register int len, l;
+  register char *result, *s, *r;
+
+  len = end - start;
+
+  /* Move to string[start], skipping quoted characters. */
+  for (s = string, l = 0; *s && l < start; )
+    {
+      if (*s == CTLESC)
+       {
+         s++;
+         continue;
+       }
+      l++;
+      if (*s == 0)
+       break;
+    }
+
+  r = result = (char *)xmalloc (2*len + 1);      /* save room for quotes */
+
+  /* Copy LEN characters, including quote characters. */
+  s = string + l;
+  for (l = 0; l < len; s++)
+    {
+      if (*s == CTLESC)
+       *r++ = *s++;
+      *r++ = *s;
+      l++;
+      if (*s == 0)
+       break;
+    }
+  *r = '\0';
+  return result;
+}
+#endif
+
+#ifdef INCLUDE_UNUSED
+/* Return the length of S, skipping over quoted characters */
+static int
+quoted_strlen (s)
+     char *s;
+{
+  register char *p;
+  int i;
+
+  i = 0;
+  for (p = s; *p; p++)
+    {
+      if (*p == CTLESC)
+       {
+         p++;
+         if (*p == 0)
+           return (i + 1);
+       }
+      i++;
+    }
+
+  return i;
+}
+#endif
+
+/* Find the first occurrence of character C in string S, obeying shell
+   quoting rules.  If (FLAGS & ST_BACKSL) is non-zero, backslash-escaped
+   characters are skipped.  If (FLAGS & ST_CTLESC) is non-zero, characters
+   escaped with CTLESC are skipped. */
+static char *
+quoted_strchr (s, c, flags)
+     char *s;
+     int c, flags;
+{
+  register char *p;
+
+  for (p = s; *p; p++)
+    {
+      if (((flags & ST_BACKSL) && *p == '\\')
+           || ((flags & ST_CTLESC) && *p == CTLESC))
+       {
+         p++;
+         if (*p == '\0')
+           return ((char *)NULL);
+         continue;
+       }
+      else if (*p == c)
+       return p;
+    }
+  return ((char *)NULL);
+}
+
+/* Return 1 if CHARACTER appears in an unquoted portion of
+   STRING.  Return 0 otherwise.  CHARACTER must be a single-byte character. */
+static int
+unquoted_member (character, string)
+     int character;
+     char *string;
+{
+  size_t slen;
+  int sindex, c;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+  sindex = 0;
+  while (c = string[sindex])
+    {
+      if (c == character)
+       return (1);
+
+      switch (c)
+       {
+       default:
+         ADVANCE_CHAR (string, slen, sindex);
+         break;
+
+       case '\\':
+         sindex++;
+         if (string[sindex])
+           ADVANCE_CHAR (string, slen, sindex);
+         break;
+
+       case '\'':
+         sindex = skip_single_quoted (string, slen, ++sindex);
+         break;
+
+       case '"':
+         sindex = skip_double_quoted (string, slen, ++sindex);
+         break;
+       }
+    }
+  return (0);
+}
+
+/* Return 1 if SUBSTR appears in an unquoted portion of STRING. */
+static int
+unquoted_substring (substr, string)
+     char *substr, *string;
+{
+  size_t slen;
+  int sindex, c, sublen;
+  DECLARE_MBSTATE;
+
+  if (substr == 0 || *substr == '\0')
+    return (0);
+
+  slen = strlen (string);
+  sublen = strlen (substr);
+  for (sindex = 0; c = string[sindex]; )
+    {
+      if (STREQN (string + sindex, substr, sublen))
+       return (1);
+
+      switch (c)
+       {
+       case '\\':
+         sindex++;
+
+         if (string[sindex])
+           ADVANCE_CHAR (string, slen, sindex);
+         break;
+
+       case '\'':
+         sindex = skip_single_quoted (string, slen, ++sindex);
+         break;
+
+       case '"':
+         sindex = skip_double_quoted (string, slen, ++sindex);
+         break;
+
+       default:
+         ADVANCE_CHAR (string, slen, sindex);
+         break;
+       }
+    }
+  return (0);
+}
+
+/* Most of the substitutions must be done in parallel.  In order
+   to avoid using tons of unclear goto's, I have some functions
+   for manipulating malloc'ed strings.  They all take INDX, a
+   pointer to an integer which is the offset into the string
+   where manipulation is taking place.  They also take SIZE, a
+   pointer to an integer which is the current length of the
+   character array for this string. */
+
+/* Append SOURCE to TARGET at INDEX.  SIZE is the current amount
+   of space allocated to TARGET.  SOURCE can be NULL, in which
+   case nothing happens.  Gets rid of SOURCE by freeing it.
+   Returns TARGET in case the location has changed. */
+INLINE char *
+sub_append_string (source, target, indx, size)
+     char *source, *target;
+     int *indx, *size;
+{
+  if (source)
+    {
+      int srclen, n;
+
+      srclen = STRLEN (source);
+      if (srclen >= (int)(*size - *indx))
+       {
+         n = srclen + *indx;
+         n = (n + DEFAULT_ARRAY_SIZE) - (n % DEFAULT_ARRAY_SIZE);
+         target = (char *)xrealloc (target, (*size = n));
+       }
+
+      FASTCOPY (source, target + *indx, srclen);
+      *indx += srclen;
+      target[*indx] = '\0';
+
+      free (source);
+    }
+  return (target);
+}
+
+#if 0
+/* UNUSED */
+/* Append the textual representation of NUMBER to TARGET.
+   INDX and SIZE are as in SUB_APPEND_STRING. */
+char *
+sub_append_number (number, target, indx, size)
+     intmax_t number;
+     int *indx, *size;
+     char *target;
+{
+  char *temp;
+
+  temp = itos (number);
+  return (sub_append_string (temp, target, indx, size));
+}
+#endif
+
+/* Extract a substring from STRING, starting at SINDEX and ending with
+   one of the characters in CHARLIST.  Don't make the ending character
+   part of the string.  Leave SINDEX pointing at the ending character.
+   Understand about backslashes in the string.  If (flags & EX_VARNAME)
+   is non-zero, and array variables have been compiled into the shell,
+   everything between a `[' and a corresponding `]' is skipped over.
+   If (flags & EX_NOALLOC) is non-zero, don't return the substring, just
+   update SINDEX. */
+static char *
+string_extract (string, sindex, charlist, flags)
+     char *string;
+     int *sindex;
+     char *charlist;
+     int flags;
+{
+  register int c, i;
+  size_t slen;
+  char *temp;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string + *sindex) + *sindex;
+  i = *sindex;
+  while (c = string[i])
+    {
+      if (c == '\\')
+       {
+         if (string[i + 1])
+           i++;
+         else
+           break;
+       }
+#if defined (ARRAY_VARS)
+      else if ((flags & EX_VARNAME) && c == '[')
+       {
+         int ni;
+         /* If this is an array subscript, skip over it and continue. */
+         ni = skipsubscript (string, i);
+         if (string[ni] == ']')
+           i = ni;
+       }
+#endif
+      else if (MEMBER (c, charlist))
+         break;
+
+      ADVANCE_CHAR (string, slen, i);
+    }
+
+  temp = (flags & EX_NOALLOC) ? (char *)NULL : substring (string, *sindex, i);
+  *sindex = i;
+  return (temp);
+}
+
+/* Extract the contents of STRING as if it is enclosed in double quotes.
+   SINDEX, when passed in, is the offset of the character immediately
+   following the opening double quote; on exit, SINDEX is left pointing after
+   the closing double quote.  If STRIPDQ is non-zero, unquoted double
+   quotes are stripped and the string is terminated by a null byte.
+   Backslashes between the embedded double quotes are processed.  If STRIPDQ
+   is zero, an unquoted `"' terminates the string. */
+static char *
+string_extract_double_quoted (string, sindex, stripdq)
+     char *string;
+     int *sindex, stripdq;
+{
+  size_t slen;
+  char *send;
+  int j, i, t;
+  unsigned char c;
+  char *temp, *ret;            /* The new string we return. */
+  int pass_next, backquote, si;        /* State variables for the machine. */
+  int dquote;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string + *sindex) + *sindex;
+  send = string + slen;
+
+  pass_next = backquote = dquote = 0;
+  temp = (char *)xmalloc (1 + slen - *sindex);
+
+  j = 0;
+  i = *sindex;
+  while (c = string[i])
+    {
+      /* Process a character that was quoted by a backslash. */
+      if (pass_next)
+       {
+         /* Posix.2 sez:
+
+            ``The backslash shall retain its special meaning as an escape
+            character only when followed by one of the characters:
+               $       `       "       \       <newline>''.
+
+            If STRIPDQ is zero, we handle the double quotes here and let
+            expand_word_internal handle the rest.  If STRIPDQ is non-zero,
+            we have already been through one round of backslash stripping,
+            and want to strip these backslashes only if DQUOTE is non-zero,
+            indicating that we are inside an embedded double-quoted string. */
+
+            /* If we are in an embedded quoted string, then don't strip
+               backslashes before characters for which the backslash
+               retains its special meaning, but remove backslashes in
+               front of other characters.  If we are not in an
+               embedded quoted string, don't strip backslashes at all.
+               This mess is necessary because the string was already
+               surrounded by double quotes (and sh has some really weird
+               quoting rules).
+               The returned string will be run through expansion as if
+               it were double-quoted. */
+         if ((stripdq == 0 && c != '"') ||
+             (stripdq && ((dquote && (sh_syntaxtab[c] & CBSDQUOTE)) || dquote == 0)))
+           temp[j++] = '\\';
+         pass_next = 0;
+
+add_one_character:
+         COPY_CHAR_I (temp, j, string, send, i);
+         continue;
+       }
+
+      /* A backslash protects the next character.  The code just above
+        handles preserving the backslash in front of any character but
+        a double quote. */
+      if (c == '\\')
+       {
+         pass_next++;
+         i++;
+         continue;
+       }
+
+      /* Inside backquotes, ``the portion of the quoted string from the
+        initial backquote and the characters up to the next backquote
+        that is not preceded by a backslash, having escape characters
+        removed, defines that command''. */
+      if (backquote)
+       {
+         if (c == '`')
+           backquote = 0;
+         temp[j++] = c;
+         i++;
+         continue;
+       }
+
+      if (c == '`')
+       {
+         temp[j++] = c;
+         backquote++;
+         i++;
+         continue;
+       }
+
+      /* Pass everything between `$(' and the matching `)' or a quoted
+        ${ ... } pair through according to the Posix.2 specification. */
+      if (c == '$' && ((string[i + 1] == LPAREN) || (string[i + 1] == LBRACE)))
+       {
+         int free_ret = 1;
+
+         si = i + 2;
+         if (string[i + 1] == LPAREN)
+           ret = extract_delimited_string (string, &si, "$(", "(", ")", 0); /*)*/
+         else
+           ret = extract_dollar_brace_string (string, &si, 1, 0);
+
+         temp[j++] = '$';
+         temp[j++] = string[i + 1];
+
+         /* Just paranoia; ret will not be 0 unless no_longjmp_on_fatal_error
+            is set. */
+         if (ret == 0 && no_longjmp_on_fatal_error)
+           {
+             free_ret = 0;
+             ret = string + i + 2;
+           }
+
+         for (t = 0; ret[t]; t++, j++)
+           temp[j] = ret[t];
+         temp[j++] = string[si];
+
+         i = si + 1;
+         if (free_ret)
+           free (ret);
+         continue;
+       }
+
+      /* Add any character but a double quote to the quoted string we're
+        accumulating. */
+      if (c != '"')
+       goto add_one_character;
+
+      /* c == '"' */
+      if (stripdq)
+       {
+         dquote ^= 1;
+         i++;
+         continue;
+       }
+
+      break;
+    }
+  temp[j] = '\0';
+
+  /* Point to after the closing quote. */
+  if (c)
+    i++;
+  *sindex = i;
+
+  return (temp);
+}
+
+/* This should really be another option to string_extract_double_quoted. */
+static int
+skip_double_quoted (string, slen, sind)
+     char *string;
+     size_t slen;
+     int sind;
+{
+  int c, i;
+  char *ret;
+  int pass_next, backquote, si;
+  DECLARE_MBSTATE;
+
+  pass_next = backquote = 0;
+  i = sind;
+  while (c = string[i])
+    {
+      if (pass_next)
+       {
+         pass_next = 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (c == '\\')
+       {
+         pass_next++;
+         i++;
+         continue;
+       }
+      else if (backquote)
+       {
+         if (c == '`')
+           backquote = 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (c == '`')
+       {
+         backquote++;
+         i++;
+         continue;
+       }
+      else if (c == '$' && ((string[i + 1] == LPAREN) || (string[i + 1] == LBRACE)))
+       {
+         si = i + 2;
+         if (string[i + 1] == LPAREN)
+           ret = extract_delimited_string (string, &si, "$(", "(", ")", EX_NOALLOC);
+         else
+           ret = extract_dollar_brace_string (string, &si, 0, EX_NOALLOC);
+
+         i = si + 1;
+         continue;
+       }
+      else if (c != '"')
+       {
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else
+       break;
+    }
+
+  if (c)
+    i++;
+
+  return (i);
+}
+
+/* Extract the contents of STRING as if it is enclosed in single quotes.
+   SINDEX, when passed in, is the offset of the character immediately
+   following the opening single quote; on exit, SINDEX is left pointing after
+   the closing single quote. */
+static inline char *
+string_extract_single_quoted (string, sindex)
+     char *string;
+     int *sindex;
+{
+  register int i;
+  size_t slen;
+  char *t;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string + *sindex) + *sindex;
+  i = *sindex;
+  while (string[i] && string[i] != '\'')
+    ADVANCE_CHAR (string, slen, i);
+
+  t = substring (string, *sindex, i);
+
+  if (string[i])
+    i++;
+  *sindex = i;
+
+  return (t);
+}
+
+static inline int
+skip_single_quoted (string, slen, sind)
+     char *string;
+     size_t slen;
+     int sind;
+{
+  register int c;
+  DECLARE_MBSTATE;
+
+  c = sind;
+  while (string[c] && string[c] != '\'')
+    ADVANCE_CHAR (string, slen, c);
+
+  if (string[c])
+    c++;
+  return c;
+}
+
+/* Just like string_extract, but doesn't hack backslashes or any of
+   that other stuff.  Obeys CTLESC quoting.  Used to do splitting on $IFS. */
+static char *
+string_extract_verbatim (string, sindex, charlist)
+     char *string;
+     int *sindex;
+     char *charlist;
+{
+  register int i = *sindex;
+  int c;
+  char *temp;
+
+  if (charlist[0] == '\'' && charlist[1] == '\0')
+    {
+      temp = string_extract_single_quoted (string, sindex);
+      --*sindex;       /* leave *sindex at separator character */
+      return temp;
+    }
+
+  for (i = *sindex; c = string[i]; i++)
+    {
+      if (c == CTLESC)
+       {
+         i++;
+         continue;
+       }
+
+      if (MEMBER (c, charlist))
+       break;
+    }
+
+  temp = substring (string, *sindex, i);
+  *sindex = i;
+
+  return (temp);
+}
+
+/* Extract the $( construct in STRING, and return a new string.
+   Start extracting at (SINDEX) as if we had just seen "$(".
+   Make (SINDEX) get the position of the matching ")". */
+char *
+extract_command_subst (string, sindex)
+     char *string;
+     int *sindex;
+{
+  return (extract_delimited_string (string, sindex, "$(", "(", ")", 0));
+}
+
+/* Extract the $[ construct in STRING, and return a new string. (])
+   Start extracting at (SINDEX) as if we had just seen "$[".
+   Make (SINDEX) get the position of the matching "]". */
+char *
+extract_arithmetic_subst (string, sindex)
+     char *string;
+     int *sindex;
+{
+  return (extract_delimited_string (string, sindex, "$[", "[", "]", 0)); /*]*/
+}
+
+#if defined (PROCESS_SUBSTITUTION)
+/* Extract the <( or >( construct in STRING, and return a new string.
+   Start extracting at (SINDEX) as if we had just seen "<(".
+   Make (SINDEX) get the position of the matching ")". */ /*))*/
+char *
+extract_process_subst (string, starter, sindex)
+     char *string;
+     char *starter;
+     int *sindex;
+{
+  return (extract_delimited_string (string, sindex, starter, "(", ")", 0));
+}
+#endif /* PROCESS_SUBSTITUTION */
+
+#if defined (ARRAY_VARS)
+char *
+extract_array_assignment_list (string, sindex)
+     char *string;
+     int *sindex;
+{
+  return (extract_delimited_string (string, sindex, "(", (char *)NULL, ")", 0));
+}
+#endif
+
+/* Extract and create a new string from the contents of STRING, a
+   character string delimited with OPENER and CLOSER.  SINDEX is
+   the address of an int describing the current offset in STRING;
+   it should point to just after the first OPENER found.  On exit,
+   SINDEX gets the position of the last character of the matching CLOSER.
+   If OPENER is more than a single character, ALT_OPENER, if non-null,
+   contains a character string that can also match CLOSER and thus
+   needs to be skipped. */
+static char *
+extract_delimited_string (string, sindex, opener, alt_opener, closer, flags)
+     char *string;
+     int *sindex;
+     char *opener, *alt_opener, *closer;
+     int flags;
+{
+  int i, c, si;
+  size_t slen;
+  char *t, *result;
+  int pass_character, nesting_level;
+  int len_closer, len_opener, len_alt_opener;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string + *sindex) + *sindex;
+  len_opener = STRLEN (opener);
+  len_alt_opener = STRLEN (alt_opener);
+  len_closer = STRLEN (closer);
+
+  pass_character = 0;
+
+  nesting_level = 1;
+  i = *sindex;
+
+  while (nesting_level)
+    {
+      c = string[i];
+
+      if (c == 0)
+       break;
+
+      if (pass_character)      /* previous char was backslash */
+       {
+         pass_character = 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+
+      if (c == CTLESC || c == '\\')
+       {
+         pass_character++;
+         i++;
+         continue;
+       }
+
+      /* Process a nested OPENER. */
+      if (STREQN (string + i, opener, len_opener))
+       {
+         si = i + len_opener;
+         t = extract_delimited_string (string, &si, opener, alt_opener, closer, flags|EX_NOALLOC);
+         i = si + 1;
+         continue;
+       }
+
+      /* Process a nested ALT_OPENER */
+      if (len_alt_opener && STREQN (string + i, alt_opener, len_alt_opener))
+       {
+         si = i + len_alt_opener;
+         t = extract_delimited_string (string, &si, alt_opener, alt_opener, closer, flags|EX_NOALLOC);
+         i = si + 1;
+         continue;
+       }
+
+      /* If the current substring terminates the delimited string, decrement
+        the nesting level. */
+      if (STREQN (string + i, closer, len_closer))
+       {
+         i += len_closer - 1;  /* move to last byte of the closer */
+         nesting_level--;
+         if (nesting_level == 0)
+           break;
+       }
+
+      /* Pass old-style command substitution through verbatim. */
+      if (c == '`')
+       {
+         si = i + 1;
+         t = string_extract (string, &si, "`", flags|EX_NOALLOC);
+         i = si + 1;
+         continue;
+       }
+
+      /* Pass single-quoted and double-quoted strings through verbatim. */
+      if (c == '\'' || c == '"')
+       {
+         si = i + 1;
+         i = (c == '\'') ? skip_single_quoted (string, slen, si)
+                         : skip_double_quoted (string, slen, si);
+         continue;
+       }
+
+      /* move past this character, which was not special. */
+      ADVANCE_CHAR (string, slen, i);
+    }
+
+  if (c == 0 && nesting_level)
+    {
+      if (no_longjmp_on_fatal_error == 0)
+       {
+         report_error (_("bad substitution: no closing `%s' in %s"), closer, string);
+         last_command_exit_value = EXECUTION_FAILURE;
+         exp_jump_to_top_level (DISCARD);
+       }
+      else
+       {
+         *sindex = i;
+         return (char *)NULL;
+       }
+    }
+
+  si = i - *sindex - len_closer + 1;
+  if (flags & EX_NOALLOC)
+    result = (char *)NULL;
+  else    
+    {
+      result = (char *)xmalloc (1 + si);
+      strncpy (result, string + *sindex, si);
+      result[si] = '\0';
+    }
+  *sindex = i;
+
+  return (result);
+}
+
+/* Extract a parameter expansion expression within ${ and } from STRING.
+   Obey the Posix.2 rules for finding the ending `}': count braces while
+   skipping over enclosed quoted strings and command substitutions.
+   SINDEX is the address of an int describing the current offset in STRING;
+   it should point to just after the first `{' found.  On exit, SINDEX
+   gets the position of the matching `}'.  QUOTED is non-zero if this
+   occurs inside double quotes. */
+/* XXX -- this is very similar to extract_delimited_string -- XXX */
+static char *
+extract_dollar_brace_string (string, sindex, quoted, flags)
+     char *string;
+     int *sindex, quoted, flags;
+{
+  register int i, c;
+  size_t slen;
+  int pass_character, nesting_level, si;
+  char *result, *t;
+  DECLARE_MBSTATE;
+
+  pass_character = 0;
+  nesting_level = 1;
+  slen = strlen (string + *sindex) + *sindex;
+
+  i = *sindex;
+  while (c = string[i])
+    {
+      if (pass_character)
+       {
+         pass_character = 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+
+      /* CTLESCs and backslashes quote the next character. */
+      if (c == CTLESC || c == '\\')
+       {
+         pass_character++;
+         i++;
+         continue;
+       }
+
+      if (string[i] == '$' && string[i+1] == LBRACE)
+       {
+         nesting_level++;
+         i += 2;
+         continue;
+       }
+
+      if (c == RBRACE)
+       {
+         nesting_level--;
+         if (nesting_level == 0)
+           break;
+         i++;
+         continue;
+       }
+
+      /* Pass the contents of old-style command substitutions through
+        verbatim. */
+      if (c == '`')
+       {
+         si = i + 1;
+         t = string_extract (string, &si, "`", flags|EX_NOALLOC);
+         i = si + 1;
+         continue;
+       }
+
+      /* Pass the contents of new-style command substitutions and
+        arithmetic substitutions through verbatim. */
+      if (string[i] == '$' && string[i+1] == LPAREN)
+       {
+         si = i + 2;
+         t = extract_delimited_string (string, &si, "$(", "(", ")", flags|EX_NOALLOC); /*)*/
+         i = si + 1;
+         continue;
+       }
+
+      /* Pass the contents of single-quoted and double-quoted strings
+        through verbatim. */
+      if (c == '\'' || c == '"')
+       {
+         si = i + 1;
+         i = (c == '\'') ? skip_single_quoted (string, slen, si)
+                         : skip_double_quoted (string, slen, si);
+         /* skip_XXX_quoted leaves index one past close quote */
+         continue;
+       }
+
+      /* move past this character, which was not special. */
+      ADVANCE_CHAR (string, slen, i);
+    }
+
+  if (c == 0 && nesting_level)
+    {
+      if (no_longjmp_on_fatal_error == 0)
+       {                       /* { */
+         report_error ("bad substitution: no closing `%s' in %s", "}", string);
+         last_command_exit_value = EXECUTION_FAILURE;
+         exp_jump_to_top_level (DISCARD);
+       }
+      else
+       {
+         *sindex = i;
+         return ((char *)NULL);
+       }
+    }
+
+  result = (flags & EX_NOALLOC) ? (char *)NULL : substring (string, *sindex, i);
+  *sindex = i;
+
+  return (result);
+}
+
+/* Remove backslashes which are quoting backquotes from STRING.  Modifies
+   STRING, and returns a pointer to it. */
+char *
+de_backslash (string)
+     char *string;
+{
+  register size_t slen;
+  register int i, j, prev_i;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+  i = j = 0;
+
+  /* Loop copying string[i] to string[j], i >= j. */
+  while (i < slen)
+    {
+      if (string[i] == '\\' && (string[i + 1] == '`' || string[i + 1] == '\\' ||
+                             string[i + 1] == '$'))
+       i++;
+      prev_i = i;
+      ADVANCE_CHAR (string, slen, i);
+      if (j < prev_i)
+       do string[j++] = string[prev_i++]; while (prev_i < i);
+      else
+       j = i;
+    }
+  string[j] = '\0';
+
+  return (string);
+}
+
+#if 0
+/*UNUSED*/
+/* Replace instances of \! in a string with !. */
+void
+unquote_bang (string)
+     char *string;
+{
+  register int i, j;
+  register char *temp;
+
+  temp = (char *)xmalloc (1 + strlen (string));
+
+  for (i = 0, j = 0; (temp[j] = string[i]); i++, j++)
+    {
+      if (string[i] == '\\' && string[i + 1] == '!')
+       {
+         temp[j] = '!';
+         i++;
+       }
+    }
+  strcpy (string, temp);
+  free (temp);
+}
+#endif
+
+#if defined (READLINE)
+/* Return 1 if the portion of STRING ending at EINDEX is quoted (there is
+   an unclosed quoted string), or if the character at EINDEX is quoted
+   by a backslash. NO_LONGJMP_ON_FATAL_ERROR is used to flag that the various
+   single and double-quoted string parsing functions should not return an
+   error if there are unclosed quotes or braces.  The characters that this
+   recognizes need to be the same as the contents of
+   rl_completer_quote_characters. */
+
+#define CQ_RETURN(x) do { no_longjmp_on_fatal_error = 0; return (x); } while (0)
+
+int
+char_is_quoted (string, eindex)
+     char *string;
+     int eindex;
+{
+  int i, pass_next, c;
+  size_t slen;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+  no_longjmp_on_fatal_error = 1;
+  i = pass_next = 0;
+  while (i <= eindex)
+    {
+      c = string[i];
+
+      if (pass_next)
+       {
+         pass_next = 0;
+         if (i >= eindex)      /* XXX was if (i >= eindex - 1) */
+           CQ_RETURN(1);
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (c == '\\')
+       {
+         pass_next = 1;
+         i++;
+         continue;
+       }
+      else if (c == '\'' || c == '"')
+       {
+         i = (c == '\'') ? skip_single_quoted (string, slen, ++i)
+                         : skip_double_quoted (string, slen, ++i);
+         if (i > eindex)
+           CQ_RETURN(1);
+         /* no increment, the skip_xxx functions go one past end */
+       }
+      else
+       ADVANCE_CHAR (string, slen, i);
+    }
+
+  CQ_RETURN(0);
+}
+
+int
+unclosed_pair (string, eindex, openstr)
+     char *string;
+     int eindex;
+     char *openstr;
+{
+  int i, pass_next, openc, olen;
+  size_t slen;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+  olen = strlen (openstr);
+  i = pass_next = openc = 0;
+  while (i <= eindex)
+    {
+      if (pass_next)
+       {
+         pass_next = 0;
+         if (i >= eindex)      /* XXX was if (i >= eindex - 1) */
+           return 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (string[i] == '\\')
+       {
+         pass_next = 1;
+         i++;
+         continue;
+       }
+      else if (STREQN (string + i, openstr, olen))
+       {
+         openc = 1 - openc;
+         i += olen;
+       }
+      else if (string[i] == '\'' || string[i] == '"')
+       {
+         i = (string[i] == '\'') ? skip_single_quoted (string, slen, i)
+                                 : skip_double_quoted (string, slen, i);
+         if (i > eindex)
+           return 0;
+       }
+      else
+       ADVANCE_CHAR (string, slen, i);
+    }
+  return (openc);
+}
+
+/* Skip characters in STRING until we find a character in DELIMS, and return
+   the index of that character.  START is the index into string at which we
+   begin.  This is similar in spirit to strpbrk, but it returns an index into
+   STRING and takes a starting index.  This little piece of code knows quite
+   a lot of shell syntax.  It's very similar to skip_double_quoted and other
+   functions of that ilk. */
+int
+skip_to_delim (string, start, delims)
+     char *string;
+     int start;
+     char *delims;
+{
+  int i, pass_next, backq, si, c;
+  size_t slen;
+  char *temp;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string + start) + start;
+  no_longjmp_on_fatal_error = 1;
+  i = start;
+  pass_next = backq = 0;
+  while (c = string[i])
+    {
+      if (pass_next)
+       {
+         pass_next = 0;
+         if (c == 0)
+           CQ_RETURN(i);
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (c == '\\')
+       {
+         pass_next = 1;
+         i++;
+         continue;
+       }
+      else if (backq)
+       {
+         if (c == '`')
+           backq = 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (c == '`')
+       {
+         backq = 1;
+         i++;
+         continue;
+       }
+      else if (c == '\'' || c == '"')
+       {
+         i = (c == '\'') ? skip_single_quoted (string, slen, ++i)
+                         : skip_double_quoted (string, slen, ++i);
+         /* no increment, the skip functions increment past the closing quote. */
+       }
+      else if (c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE))
+       {
+         si = i + 2;
+         if (string[si] == '\0')
+           CQ_RETURN(si);
+
+         if (string[i+1] == LPAREN)
+           temp = extract_delimited_string (string, &si, "$(", "(", ")", EX_NOALLOC); /* ) */
+         else
+           temp = extract_dollar_brace_string (string, &si, 0, EX_NOALLOC);
+         i = si;
+         if (string[i] == '\0')        /* don't increment i past EOS in loop */
+           break;
+         i++;
+         continue;
+       }
+      else if (member (c, delims))
+       break;
+      else
+       ADVANCE_CHAR (string, slen, i);
+    }
+
+  CQ_RETURN(i);
+}
+
+/* Split STRING (length SLEN) at DELIMS, and return a WORD_LIST with the
+   individual words.  If DELIMS is NULL, the current value of $IFS is used
+   to split the string, and the function follows the shell field splitting
+   rules.  SENTINEL is an index to look for.  NWP, if non-NULL,
+   gets the number of words in the returned list.  CWP, if non-NULL, gets
+   the index of the word containing SENTINEL.  Non-whitespace chars in
+   DELIMS delimit separate fields. */
+WORD_LIST *
+split_at_delims (string, slen, delims, sentinel, nwp, cwp)
+     char *string;
+     int slen;
+     char *delims;
+     int sentinel;
+     int *nwp, *cwp;
+{
+  int ts, te, i, nw, cw, ifs_split;
+  char *token, *d, *d2;
+  WORD_LIST *ret, *tl;
+
+  if (string == 0 || *string == '\0')
+    {
+      if (nwp)
+       *nwp = 0;
+      if (cwp)
+       *cwp = 0;       
+      return ((WORD_LIST *)NULL);
+    }
+
+  d = (delims == 0) ? ifs_value : delims;
+  ifs_split = delims == 0;
+
+  /* Make d2 the non-whitespace characters in delims */
+  d2 = 0;
+  if (delims)
+    {
+      d2 = (char *)xmalloc (strlen (delims) + 1);
+      for (i = ts = 0; delims[i]; i++)
+       {
+         if (whitespace(delims[i]) == 0)
+           d2[ts++] = delims[i];
+       }
+      d2[ts] = '\0';
+    }
+
+  ret = (WORD_LIST *)NULL;
+
+  /* Remove sequences of whitspace characters at the start of the string, as
+     long as those characters are delimiters. */
+  for (i = 0; member (string[i], d) && spctabnl (string[i]); i++)
+    ;
+  if (string[i] == '\0')
+    return (ret);
+
+  ts = i;
+  nw = 0;
+  cw = -1;
+  while (1)
+    {
+      te = skip_to_delim (string, ts, d);
+
+      /* If we have a non-whitespace delimiter character, use it to make a
+        separate field.  This is just about what $IFS splitting does and
+        is closer to the behavior of the shell parser. */
+      if (ts == te && d2 && member (string[ts], d2))
+       {
+         te = ts + 1;
+         /* If we're using IFS splitting, the non-whitespace delimiter char
+            and any additional IFS whitespace delimits a field. */
+         if (ifs_split)
+           while (member (string[te], d) && spctabnl (string[te]))
+             te++;
+         else
+           while (member (string[te], d2))
+             te++;
+       }
+
+      token = substring (string, ts, te);
+
+      ret = add_string_to_list (token, ret);
+      free (token);
+      nw++;
+
+      if (sentinel >= ts && sentinel <= te)
+       cw = nw;
+
+      /* If the cursor is at whitespace just before word start, set the
+        sentinel word to the current word. */
+      if (cwp && cw == -1 && sentinel == ts-1)
+       cw = nw;
+
+      /* If the cursor is at whitespace between two words, make a new, empty
+        word, add it before (well, after, since the list is in reverse order)
+        the word we just added, and set the current word to that one. */
+      if (cwp && cw == -1 && sentinel < ts)
+       {
+         tl = make_word_list (make_word (""), ret->next);
+         ret->next = tl;
+         cw = nw;
+         nw++;
+       }
+
+      if (string[te] == 0)
+       break;
+
+      i = te;
+      while (member (string[i], d) && (ifs_split || spctabnl(string[i])))
+       i++;
+
+      if (string[i])
+       ts = i;
+      else
+       break;
+    }
+
+  /* Special case for SENTINEL at the end of STRING.  If we haven't found
+     the word containing SENTINEL yet, and the index we're looking for is at
+     the end of STRING, add an additional null argument and set the current
+     word pointer to that. */
+  if (cwp && cw == -1 && sentinel >= slen)
+    {
+      if (whitespace (string[sentinel - 1]))
+       {
+         token = "";
+         ret = add_string_to_list (token, ret);
+         nw++;
+       }
+      cw = nw;
+    }
+
+  if (nwp)
+    *nwp = nw;
+  if (cwp)
+    *cwp = cw;
+
+  return (REVERSE_LIST (ret, WORD_LIST *));
+}
+#endif /* READLINE */
+
+#if 0
+/* UNUSED */
+/* Extract the name of the variable to bind to from the assignment string. */
+char *
+assignment_name (string)
+     char *string;
+{
+  int offset;
+  char *temp;
+
+  offset = assignment (string, 0);
+  if (offset == 0)
+    return (char *)NULL;
+  temp = substring (string, 0, offset);
+  return (temp);
+}
+#endif
+
+/* **************************************************************** */
+/*                                                                 */
+/*     Functions to convert strings to WORD_LISTs and vice versa    */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Return a single string of all the words in LIST.  SEP is the separator
+   to put between individual elements of LIST in the output string. */
+char *
+string_list_internal (list, sep)
+     WORD_LIST *list;
+     char *sep;
+{
+  register WORD_LIST *t;
+  char *result, *r;
+  int word_len, sep_len, result_size;
+
+  if (list == 0)
+    return ((char *)NULL);
+
+  /* Short-circuit quickly if we don't need to separate anything. */
+  if (list->next == 0)
+    return (savestring (list->word->word));
+
+  /* This is nearly always called with either sep[0] == 0 or sep[1] == 0. */
+  sep_len = STRLEN (sep);
+  result_size = 0;
+
+  for (t = list; t; t = t->next)
+    {
+      if (t != list)
+       result_size += sep_len;
+      result_size += strlen (t->word->word);
+    }
+
+  r = result = (char *)xmalloc (result_size + 1);
+
+  for (t = list; t; t = t->next)
+    {
+      if (t != list && sep_len)
+       {
+         if (sep_len > 1)
+           {
+             FASTCOPY (sep, r, sep_len);
+             r += sep_len;
+           }
+         else
+           *r++ = sep[0];
+       }
+
+      word_len = strlen (t->word->word);
+      FASTCOPY (t->word->word, r, word_len);
+      r += word_len;
+    }
+
+  *r = '\0';
+  return (result);
+}
+
+/* Return a single string of all the words present in LIST, separating
+   each word with a space. */
+char *
+string_list (list)
+     WORD_LIST *list;
+{
+  return (string_list_internal (list, " "));
+}
+
+/* Return a single string of all the words present in LIST, obeying the
+   quoting rules for "$*", to wit: (P1003.2, draft 11, 3.5.2) "If the
+   expansion [of $*] appears within a double quoted string, it expands
+   to a single field with the value of each parameter separated by the
+   first character of the IFS variable, or by a <space> if IFS is unset." */
+char *
+string_list_dollar_star (list)
+     WORD_LIST *list;
+{
+  char sep[2];
+
+  sep[0] = ifs_firstc;
+  sep[1] = '\0';
+
+  return (string_list_internal (list, sep));
+}
+
+/* Turn $@ into a string.  If (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+   is non-zero, the $@ appears within double quotes, and we should quote
+   the list before converting it into a string.  If IFS is unset, and the
+   word is not quoted, we just need to quote CTLESC and CTLNUL characters
+   in the words in the list, because the default value of $IFS is
+   <space><tab><newline>, IFS characters in the words in the list should
+   also be split.  If IFS is null, and the word is not quoted, we need
+   to quote the words in the list to preserve the positional parameters
+   exactly. */
+char *
+string_list_dollar_at (list, quoted)
+     WORD_LIST *list;
+     int quoted;
+{
+  char *ifs, sep[2];
+  WORD_LIST *tlist;
+
+  /* XXX this could just be ifs = ifs_value; */
+  ifs = ifs_var ? value_cell (ifs_var) : (char *)0;
+
+  sep[0] = (ifs == 0 || *ifs == 0) ? ' ' : *ifs;
+  sep[1] = '\0';
+
+  tlist = ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (ifs && *ifs == 0))
+               ? quote_list (list)
+               : list_quote_escapes (list);
+  return (string_list_internal (tlist, sep));
+}
+
+/* Return the list of words present in STRING.  Separate the string into
+   words at any of the characters found in SEPARATORS.  If QUOTED is
+   non-zero then word in the list will have its quoted flag set, otherwise
+   the quoted flag is left as make_word () deemed fit.
+
+   This obeys the P1003.2 word splitting semantics.  If `separators' is
+   exactly <space><tab><newline>, then the splitting algorithm is that of
+   the Bourne shell, which treats any sequence of characters from `separators'
+   as a delimiter.  If IFS is unset, which results in `separators' being set
+   to "", no splitting occurs.  If separators has some other value, the
+   following rules are applied (`IFS white space' means zero or more
+   occurrences of <space>, <tab>, or <newline>, as long as those characters
+   are in `separators'):
+
+       1) IFS white space is ignored at the start and the end of the
+          string.
+       2) Each occurrence of a character in `separators' that is not
+          IFS white space, along with any adjacent occurrences of
+          IFS white space delimits a field.
+       3) Any nonzero-length sequence of IFS white space delimits a field.
+   */
+
+/* BEWARE!  list_string strips null arguments.  Don't call it twice and
+   expect to have "" preserved! */
+
+/* This performs word splitting and quoted null character removal on
+   STRING. */
+#define issep(c) \
+       (((separators)[0]) ? ((separators)[1] ? isifs(c) \
+                                             : (c) == (separators)[0]) \
+                          : 0)
+
+WORD_LIST *
+list_string (string, separators, quoted)
+     register char *string, *separators;
+     int quoted;
+{
+  WORD_LIST *result;
+  WORD_DESC *t;
+  char *current_word, *s;
+  int sindex, sh_style_split, whitesep;
+
+  if (!string || !*string)
+    return ((WORD_LIST *)NULL);
+
+  sh_style_split = separators && separators[0] == ' ' &&
+                                separators[1] == '\t' &&
+                                separators[2] == '\n' &&
+                                separators[3] == '\0';
+
+  /* Remove sequences of whitespace at the beginning of STRING, as
+     long as those characters appear in IFS.  Do not do this if
+     STRING is quoted or if there are no separator characters. */
+  if (!quoted || !separators || !*separators)
+    {
+      for (s = string; *s && spctabnl (*s) && issep (*s); s++);
+
+      if (!*s)
+       return ((WORD_LIST *)NULL);
+
+      string = s;
+    }
+
+  /* OK, now STRING points to a word that does not begin with white space.
+     The splitting algorithm is:
+       extract a word, stopping at a separator
+       skip sequences of spc, tab, or nl as long as they are separators
+     This obeys the field splitting rules in Posix.2. */
+  for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; )
+    {
+      current_word = string_extract_verbatim (string, &sindex, separators);
+      if (current_word == 0)
+       break;
+
+      /* If we have a quoted empty string, add a quoted null argument.  We
+        want to preserve the quoted null character iff this is a quoted
+        empty string; otherwise the quoted null characters are removed
+        below. */
+      if (QUOTED_NULL (current_word))
+       {
+         t = make_bare_word ("");
+         t->flags |= W_QUOTED;
+         free (t->word);
+         t->word = make_quoted_char ('\0');
+         result = make_word_list (t, result);
+       }
+      else if (current_word[0] != '\0')
+       {
+         /* If we have something, then add it regardless.  However,
+            perform quoted null character removal on the current word. */
+         remove_quoted_nulls (current_word);
+         result = add_string_to_list (current_word, result);
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+           result->word->flags |= W_QUOTED;
+       }
+
+      /* If we're not doing sequences of separators in the traditional
+        Bourne shell style, then add a quoted null argument. */
+      else if (!sh_style_split && !spctabnl (string[sindex]))
+       {
+         t = make_bare_word ("");
+         t->flags |= W_QUOTED;
+         free (t->word);
+         t->word = make_quoted_char ('\0');
+         result = make_word_list (t, result);
+       }
+
+      free (current_word);
+
+      /* Note whether or not the separator is IFS whitespace, used later. */
+      whitesep = string[sindex] && spctabnl (string[sindex]);
+
+      /* Move past the current separator character. */
+      if (string[sindex])
+       sindex++;
+
+      /* Now skip sequences of space, tab, or newline characters if they are
+        in the list of separators. */
+      while (string[sindex] && spctabnl (string[sindex]) && issep (string[sindex]))
+       sindex++;
+
+      /* If the first separator was IFS whitespace and the current character
+        is a non-whitespace IFS character, it should be part of the current
+        field delimiter, not a separate delimiter that would result in an
+        empty field.  Look at POSIX.2, 3.6.5, (3)(b). */
+      if (string[sindex] && whitesep && issep (string[sindex]) && !spctabnl (string[sindex]))
+       sindex++;
+    }
+  return (REVERSE_LIST (result, WORD_LIST *));
+}
+
+/* Parse a single word from STRING, using SEPARATORS to separate fields.
+   ENDPTR is set to the first character after the word.  This is used by
+   the `read' builtin.  This is never called with SEPARATORS != $IFS;
+   it should be simplified.
+
+   XXX - this function is very similar to list_string; they should be
+        combined - XXX */
+char *
+get_word_from_string (stringp, separators, endptr)
+     char **stringp, *separators, **endptr;
+{
+  register char *s;
+  char *current_word;
+  int sindex, sh_style_split, whitesep;
+
+  if (!stringp || !*stringp || !**stringp)
+    return ((char *)NULL);
+
+  s = *stringp;
+
+  sh_style_split = separators && separators[0] == ' ' &&
+                                separators[1] == '\t' &&
+                                separators[2] == '\n' &&
+                                separators[3] == '\0';
+
+  /* Remove sequences of whitespace at the beginning of STRING, as
+     long as those characters appear in IFS. */
+  if (sh_style_split || !separators || !*separators)
+    {
+      for (; *s && spctabnl (*s) && isifs (*s); s++);
+
+      /* If the string is nothing but whitespace, update it and return. */
+      if (!*s)
+       {
+         *stringp = s;
+         if (endptr)
+           *endptr = s;
+         return ((char *)NULL);
+       }
+    }
+
+  /* OK, S points to a word that does not begin with white space.
+     Now extract a word, stopping at a separator, save a pointer to
+     the first character after the word, then skip sequences of spc,
+     tab, or nl as long as they are separators.
+
+     This obeys the field splitting rules in Posix.2. */
+  sindex = 0;
+  current_word = string_extract_verbatim (s, &sindex, separators);
+
+  /* Set ENDPTR to the first character after the end of the word. */
+  if (endptr)
+    *endptr = s + sindex;
+
+  /* Note whether or not the separator is IFS whitespace, used later. */
+  whitesep = s[sindex] && spctabnl (s[sindex]);
+
+  /* Move past the current separator character. */
+  if (s[sindex])
+    sindex++;
+
+  /* Now skip sequences of space, tab, or newline characters if they are
+     in the list of separators. */
+  while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
+    sindex++;
+
+  /* If the first separator was IFS whitespace and the current character is
+     a non-whitespace IFS character, it should be part of the current field
+     delimiter, not a separate delimiter that would result in an empty field.
+     Look at POSIX.2, 3.6.5, (3)(b). */
+  if (s[sindex] && whitesep && isifs (s[sindex]) && !spctabnl (s[sindex]))
+    sindex++;
+
+  /* Update STRING to point to the next field. */
+  *stringp = s + sindex;
+  return (current_word);
+}
+
+/* Remove IFS white space at the end of STRING.  Start at the end
+   of the string and walk backwards until the beginning of the string
+   or we find a character that's not IFS white space and not CTLESC.
+   Only let CTLESC escape a white space character if SAW_ESCAPE is
+   non-zero.  */
+char *
+strip_trailing_ifs_whitespace (string, separators, saw_escape)
+     char *string, *separators;
+     int saw_escape;
+{
+  char *s;
+
+  s = string + STRLEN (string) - 1;
+  while (s > string && ((spctabnl (*s) && isifs (*s)) ||
+                       (saw_escape && *s == CTLESC && spctabnl (s[1]))))
+    s--;
+  *++s = '\0';
+  return string;
+}
+
+#if 0
+/* UNUSED */
+/* Split STRING into words at whitespace.  Obeys shell-style quoting with
+   backslashes, single and double quotes. */
+WORD_LIST *
+list_string_with_quotes (string)
+     char *string;
+{
+  WORD_LIST *list;
+  char *token, *s;
+  size_t s_len;
+  int c, i, tokstart, len;
+
+  for (s = string; s && *s && spctabnl (*s); s++)
+    ;
+  if (s == 0 || *s == 0)
+    return ((WORD_LIST *)NULL);
+
+  s_len = strlen (s);
+  tokstart = i = 0;
+  list = (WORD_LIST *)NULL;
+  while (1)
+    {
+      c = s[i];
+      if (c == '\\')
+       {
+         i++;
+         if (s[i])
+           i++;
+       }
+      else if (c == '\'')
+       i = skip_single_quoted (s, s_len, ++i);
+      else if (c == '"')
+       i = skip_double_quoted (s, s_len, ++i);
+      else if (c == 0 || spctabnl (c))
+       {
+         /* We have found the end of a token.  Make a word out of it and
+            add it to the word list. */
+         token = substring (s, tokstart, i);
+         list = add_string_to_list (token, list);
+         free (token);
+         while (spctabnl (s[i]))
+           i++;
+         if (s[i])
+           tokstart = i;
+         else
+           break;
+       }
+      else
+       i++;    /* normal character */
+    }
+  return (REVERSE_LIST (list, WORD_LIST *));
+}
+#endif
+
+/********************************************************/
+/*                                                     */
+/*     Functions to perform assignment statements      */
+/*                                                     */
+/********************************************************/
+
+/* Given STRING, an assignment string, get the value of the right side
+   of the `=', and bind it to the left side.  If EXPAND is true, then
+   perform parameter expansion, command substitution, and arithmetic
+   expansion on the right-hand side.  Perform tilde expansion in any
+   case.  Do not perform word splitting on the result of expansion. */
+static int
+do_assignment_internal (string, expand)
+     const char *string;
+     int expand;
+{
+  int offset;
+  char *name, *value;
+  SHELL_VAR *entry;
+#if defined (ARRAY_VARS)
+  char *t;
+  int ni;
+#endif
+  int assign_list = 0;
+
+  offset = assignment (string, 0);
+  name = savestring (string);
+  value = (char *)NULL;
+
+  if (name[offset] == '=')
+    {
+      char *temp;
+
+      name[offset] = 0;
+      temp = name + offset + 1;
+
+#if defined (ARRAY_VARS)
+      if (expand && temp[0] == LPAREN && xstrchr (temp, RPAREN))
+       {
+         assign_list = ni = 1;
+         value = extract_delimited_string (temp, &ni, "(", (char *)NULL, ")", 0);
+       }
+      else
+#endif
+
+      /* Perform tilde expansion. */
+      if (expand && temp[0])
+       {
+         temp = (xstrchr (temp, '~') && unquoted_member ('~', temp))
+                       ? bash_tilde_expand (temp, 1)
+                       : savestring (temp);
+
+         value = expand_string_if_necessary (temp, 0, expand_string_unsplit);
+         free (temp);
+       }
+      else
+       value = savestring (temp);
+    }
+
+  if (value == 0)
+    {
+      value = (char *)xmalloc (1);
+      value[0] = '\0';
+    }
+
+  if (echo_command_at_execute)
+     xtrace_print_assignment (name, value, assign_list, 1);
+
+#define ASSIGN_RETURN(r)       do { FREE (value); free (name); return (r); } while (0)
+
+#if defined (ARRAY_VARS)
+  if (t = xstrchr (name, '[')) /*]*/
+    {
+      if (assign_list)
+       {
+         report_error (_("%s: cannot assign list to array member"), name);
+         ASSIGN_RETURN (0);
+       }
+      entry = assign_array_element (name, value);
+      if (entry == 0)
+       ASSIGN_RETURN (0);
+    }
+  else if (assign_list)
+    entry = assign_array_from_string (name, value);
+  else
+#endif /* ARRAY_VARS */
+  entry = bind_variable (name, value);
+
+  stupidly_hack_special_variables (name);
+
+  if (entry)
+    VUNSETATTR (entry, att_invisible);
+
+  /* Return 1 if the assignment seems to have been performed correctly. */
+  ASSIGN_RETURN (entry ? ((readonly_p (entry) == 0) && noassign_p (entry) == 0) : 0);
+}
+
+/* Perform the assignment statement in STRING, and expand the
+   right side by doing command and parameter expansion. */
+int
+do_assignment (string)
+     const char *string;
+{
+  return do_assignment_internal (string, 1);
+}
+
+/* Given STRING, an assignment string, get the value of the right side
+   of the `=', and bind it to the left side.  Do not do command and
+   parameter substitution on the right hand side. */
+int
+do_assignment_no_expand (string)
+     const char *string;
+{
+  return do_assignment_internal (string, 0);
+}
+
+/***************************************************
+ *                                                *
+ *  Functions to manage the positional parameters  *
+ *                                                *
+ ***************************************************/
+
+/* Return the word list that corresponds to `$*'. */
+WORD_LIST *
+list_rest_of_args ()
+{
+  register WORD_LIST *list, *args;
+  int i;
+
+  /* Break out of the loop as soon as one of the dollar variables is null. */
+  for (i = 1, list = (WORD_LIST *)NULL; i < 10 && dollar_vars[i]; i++)
+    list = make_word_list (make_bare_word (dollar_vars[i]), list);
+
+  for (args = rest_of_args; args; args = args->next)
+    list = make_word_list (make_bare_word (args->word->word), list);
+
+  return (REVERSE_LIST (list, WORD_LIST *));
+}
+
+int
+number_of_args ()
+{
+  register WORD_LIST *list;
+  int n;
+
+  for (n = 0; n < 9 && dollar_vars[n+1]; n++)
+    ;
+  for (list = rest_of_args; list; list = list->next)
+    n++;
+  return n;
+}
+
+/* Return the value of a positional parameter.  This handles values > 10. */
+char *
+get_dollar_var_value (ind)
+     intmax_t ind;
+{
+  char *temp;
+  WORD_LIST *p;
+
+  if (ind < 10)
+    temp = dollar_vars[ind] ? savestring (dollar_vars[ind]) : (char *)NULL;
+  else /* We want something like ${11} */
+    {
+      ind -= 10;
+      for (p = rest_of_args; p && ind--; p = p->next)
+       ;
+      temp = p ? savestring (p->word->word) : (char *)NULL;
+    }
+  return (temp);
+}
+
+/* Make a single large string out of the dollar digit variables,
+   and the rest_of_args.  If DOLLAR_STAR is 1, then obey the special
+   case of "$*" with respect to IFS. */
+char *
+string_rest_of_args (dollar_star)
+     int dollar_star;
+{
+  register WORD_LIST *list;
+  char *string;
+
+  list = list_rest_of_args ();
+  string = dollar_star ? string_list_dollar_star (list) : string_list (list);
+  dispose_words (list);
+  return (string);
+}
+
+/* Return a string containing the positional parameters from START to
+   END, inclusive.  If STRING[0] == '*', we obey the rules for $*,
+   which only makes a difference if QUOTED is non-zero.  If QUOTED includes
+   Q_HERE_DOCUMENT or Q_DOUBLE_QUOTES, this returns a quoted list, otherwise
+   no quoting chars are added. */
+static char *
+pos_params (string, start, end, quoted)
+     char *string;
+     int start, end, quoted;
+{
+  WORD_LIST *save, *params, *h, *t;
+  char *ret;
+  int i;
+
+  /* see if we can short-circuit.  if start == end, we want 0 parameters. */
+  if (start == end)
+    return ((char *)NULL);
+
+  save = params = list_rest_of_args ();
+  if (save == 0)
+    return ((char *)NULL);
+
+  for (i = 1; params && i < start; i++)
+    params = params->next;
+  if (params == 0)
+    return ((char *)NULL);
+  for (h = t = params; params && i < end; i++)
+    {
+      t = params;
+      params = params->next;
+    }
+
+  t->next = (WORD_LIST *)NULL;
+  if (string[0] == '*')
+#if 0
+    ret = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (quote_list (h)) : string_list (h);
+#else
+    {
+      if (quoted & Q_DOUBLE_QUOTES)
+       ret = string_list_dollar_star (quote_list (h));
+      else if (quoted & Q_HERE_DOCUMENT)
+       ret = string_list (quote_list (h));
+      else
+       ret = string_list (h);
+    }
+#endif
+  else
+    ret = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (h) : h);
+  if (t != params)
+    t->next = params;
+
+  dispose_words (save);
+  return (ret);
+}
+
+/******************************************************************/
+/*                                                               */
+/*     Functions to expand strings to strings or WORD_LISTs      */
+/*                                                               */
+/******************************************************************/
+
+#if defined (PROCESS_SUBSTITUTION)
+#define EXP_CHAR(s) (s == '$' || s == '`' || s == '<' || s == '>' || s == CTLESC)
+#else
+#define EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC)
+#endif
+
+/* If there are any characters in STRING that require full expansion,
+   then call FUNC to expand STRING; otherwise just perform quote
+   removal if necessary.  This returns a new string. */
+static char *
+expand_string_if_necessary (string, quoted, func)
+     char *string;
+     int quoted;
+     EXPFUNC *func;
+{
+  WORD_LIST *list;
+  size_t slen;
+  int i, saw_quote;
+  char *ret;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+  i = saw_quote = 0;
+  while (string[i])
+    {
+      if (EXP_CHAR (string[i]))
+       break;
+      else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"')
+       saw_quote = 1;
+      ADVANCE_CHAR (string, slen, i);
+    }
+
+  if (string[i])
+    {
+      list = (*func) (string, quoted);
+      if (list)
+       {
+         ret = string_list (list);
+         dispose_words (list);
+       }
+      else
+       ret = (char *)NULL;
+    }
+  else if (saw_quote && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
+    ret = string_quote_removal (string, quoted);
+  else
+    ret = savestring (string);
+
+  return ret;
+}
+
+static inline char *
+expand_string_to_string_internal (string, quoted, func)
+     char *string;
+     int quoted;
+     EXPFUNC *func;
+{
+  WORD_LIST *list;
+  char *ret;
+
+  if (string == 0 || *string == '\0')
+    return ((char *)NULL);
+
+  list = (*func) (string, quoted);
+  if (list)
+    {
+      ret = string_list (list);
+      dispose_words (list);
+    }
+  else
+    ret = (char *)NULL;
+
+  return (ret);
+}
+
+char *
+expand_string_to_string (string, quoted)
+     char *string;
+     int quoted;
+{
+  return (expand_string_to_string_internal (string, quoted, expand_string));
+}
+
+char *
+expand_string_unsplit_to_string (string, quoted)
+     char *string;
+     int quoted;
+{
+  return (expand_string_to_string_internal (string, quoted, expand_string_unsplit));
+}
+
+#if defined (COND_COMMAND)
+/* Just remove backslashes in STRING.  Returns a new string. */
+char *
+remove_backslashes (string)
+     char *string;
+{
+  char *r, *ret, *s;
+
+  r = ret = (char *)xmalloc (strlen (string) + 1);
+  for (s = string; s && *s; )
+    {
+      if (*s == '\\')
+       s++;
+      if (*s == 0)
+       break;
+      *r++ = *s++;
+    }
+  *r = '\0';
+  return ret;
+}
+
+/* This needs better error handling. */
+/* Expand W for use as an argument to a unary or binary operator in a
+   [[...]] expression.  If SPECIAL is nonzero, this is the rhs argument
+   to the != or == operator, and should be treated as a pattern.  In
+   this case, we quote the string specially for the globbing code.  The
+   caller is responsible for removing the backslashes if the unquoted
+   words is needed later. */   
+char *
+cond_expand_word (w, special)
+     WORD_DESC *w;
+     int special;
+{
+  char *r, *p;
+  WORD_LIST *l;
+
+  if (w->word == 0 || w->word[0] == '\0')
+    return ((char *)NULL);
+
+  if (xstrchr (w->word, '~') && unquoted_member ('~', w->word))
+    {
+      p = bash_tilde_expand (w->word, 0);
+      free (w->word);
+      w->word = p;
+    }
+
+  l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
+  if (l)
+    {
+      if (special == 0)
+       {
+         dequote_list (l);
+         r = string_list (l);
+       }
+      else
+       {
+         p = string_list (l);
+         r = quote_string_for_globbing (p, QGLOB_CVTNULL);
+         free (p);
+       }
+      dispose_words (l);
+    }
+  else
+    r = (char *)NULL;
+
+  return r;
+}
+#endif
+
+/* Call expand_word_internal to expand W and handle error returns.
+   A convenience function for functions that don't want to handle
+   any errors or free any memory before aborting. */
+static WORD_LIST *
+call_expand_word_internal (w, q, i, c, e)
+     WORD_DESC *w;
+     int q, i, *c, *e;
+{
+  WORD_LIST *result;
+
+  result = expand_word_internal (w, q, i, c, e);
+  if (result == &expand_word_error || result == &expand_word_fatal)
+    {
+      /* By convention, each time this error is returned, w->word has
+        already been freed (it sometimes may not be in the fatal case,
+        but that doesn't result in a memory leak because we're going
+        to exit in most cases). */
+      w->word = (char *)NULL;
+      last_command_exit_value = EXECUTION_FAILURE;
+      exp_jump_to_top_level ((result == &expand_word_error) ? DISCARD : FORCE_EOF);
+      /* NOTREACHED */
+    }
+  else
+    return (result);
+}
+
+/* Perform parameter expansion, command substitution, and arithmetic
+   expansion on STRING, as if it were a word.  Leave the result quoted. */
+static WORD_LIST *
+expand_string_internal (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_DESC td;
+  WORD_LIST *tresult;
+
+  if (string == 0 || *string == 0)
+    return ((WORD_LIST *)NULL);
+
+  td.flags = 0;
+  td.word = savestring (string);
+
+  tresult = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
+
+  FREE (td.word);
+  return (tresult);
+}
+
+/* Expand STRING by performing parameter expansion, command substitution,
+   and arithmetic expansion.  Dequote the resulting WORD_LIST before
+   returning it, but do not perform word splitting.  The call to
+   remove_quoted_nulls () is in here because word splitting normally
+   takes care of quote removal. */
+WORD_LIST *
+expand_string_unsplit (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_LIST *value;
+
+  if (string == 0 || *string == '\0')
+    return ((WORD_LIST *)NULL);
+
+  expand_no_split_dollar_star = 1;
+  value = expand_string_internal (string, quoted);
+  expand_no_split_dollar_star = 0;
+
+  if (value)
+    {
+      if (value->word)
+       remove_quoted_nulls (value->word->word);
+      dequote_list (value);
+    }
+  return (value);
+}
+
+
+/* Expand one of the PS? prompt strings. This is a sort of combination of
+   expand_string_unsplit and expand_string_internal, but returns the
+   passed string when an error occurs.  Might want to trap other calls
+   to jump_to_top_level here so we don't endlessly loop. */
+WORD_LIST *
+expand_prompt_string (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_LIST *value;
+  WORD_DESC td;
+
+  if (string == 0 || *string == 0)
+    return ((WORD_LIST *)NULL);
+
+  td.flags = 0;
+  td.word = savestring (string);
+
+  no_longjmp_on_fatal_error = 1;
+  value = expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
+  no_longjmp_on_fatal_error = 0;
+
+  if (value == &expand_word_error || value == &expand_word_fatal)
+    {
+      value = make_word_list (make_bare_word (string), (WORD_LIST *)NULL);
+      return value;
+    }
+  FREE (td.word);
+  if (value)
+    {
+      if (value->word)
+       remove_quoted_nulls (value->word->word);
+      dequote_list (value);
+    }
+  return (value);
+}
+
+/* Expand STRING just as if you were expanding a word, but do not dequote
+   the resultant WORD_LIST.  This is called only from within this file,
+   and is used to correctly preserve quoted characters when expanding
+   things like ${1+"$@"}.  This does parameter expansion, command
+   substitution, arithmetic expansion, and word splitting. */
+static WORD_LIST *
+expand_string_leave_quoted (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_LIST *tlist;
+  WORD_LIST *tresult;
+
+  if (string == 0 || *string == '\0')
+    return ((WORD_LIST *)NULL);
+
+  tlist = expand_string_internal (string, quoted);
+
+  if (tlist)
+    {
+      tresult = word_list_split (tlist);
+      dispose_words (tlist);
+      return (tresult);
+    }
+  return ((WORD_LIST *)NULL);
+}
+
+/* This does not perform word splitting or dequote the WORD_LIST
+   it returns. */
+static WORD_LIST *
+expand_string_for_rhs (string, quoted, dollar_at_p, has_dollar_at)
+     char *string;
+     int quoted, *dollar_at_p, *has_dollar_at;
+{
+  WORD_DESC td;
+  WORD_LIST *tresult;
+
+  if (string == 0 || *string == '\0')
+    return (WORD_LIST *)NULL;
+
+  td.flags = 0;
+  td.word = string;
+  tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, has_dollar_at);
+  return (tresult);
+}
+
+/* Expand STRING just as if you were expanding a word.  This also returns
+   a list of words.  Note that filename globbing is *NOT* done for word
+   or string expansion, just when the shell is expanding a command.  This
+   does parameter expansion, command substitution, arithmetic expansion,
+   and word splitting.  Dequote the resultant WORD_LIST before returning. */
+WORD_LIST *
+expand_string (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_LIST *result;
+
+  if (string == 0 || *string == '\0')
+    return ((WORD_LIST *)NULL);
+
+  result = expand_string_leave_quoted (string, quoted);
+  return (result ? dequote_list (result) : result);
+}
+
+/***************************************************
+ *                                                *
+ *     Functions to handle quoting chars          *
+ *                                                *
+ ***************************************************/
+
+/* Conventions:
+
+     A string with s[0] == CTLNUL && s[1] == 0 is a quoted null string.
+     The parser passes CTLNUL as CTLESC CTLNUL. */
+
+/* Quote escape characters in string s, but no other characters.  This is
+   used to protect CTLESC and CTLNUL in variable values from the rest of
+   the word expansion process after the variable is expanded. */
+char *
+quote_escapes (string)
+     char *string;
+{
+  register char *s, *t;
+  size_t slen;
+  char *result, *send;
+  DECLARE_MBSTATE; 
+
+  slen = strlen (string);
+  send = string + slen;
+
+  t = result = (char *)xmalloc ((slen * 2) + 1);
+  s = string;
+
+  while (*s)
+    {
+      if (*s == CTLESC || *s == CTLNUL)
+       *t++ = CTLESC;
+      COPY_CHAR_P (t, s, send);
+    }
+  *t = '\0';
+  return (result);
+}
+
+static WORD_LIST *
+list_quote_escapes (list)
+     WORD_LIST *list;
+{
+  register WORD_LIST *w;
+  char *t;
+
+  for (w = list; w; w = w->next)
+    {
+      t = w->word->word;
+      w->word->word = quote_escapes (t);
+      free (t);
+    }
+  return list;
+}
+
+/* Inverse of quote_escapes; remove CTLESC protecting CTLESC or CTLNUL.
+
+   The parser passes us CTLESC as CTLESC CTLESC and CTLNUL as CTLESC CTLNUL.
+   This is necessary to make unquoted CTLESC and CTLNUL characters in the
+   data stream pass through properly.
+
+   We need to remove doubled CTLESC characters inside quoted strings before
+   quoting the entire string, so we do not double the number of CTLESC
+   characters.
+
+   Also used by parts of the pattern substitution code. */
+static char *
+dequote_escapes (string)
+     char *string;
+{
+  register char *s, *t;
+  size_t slen;
+  char *result, *send;
+  DECLARE_MBSTATE;
+
+  if (string == 0)
+    return string;
+
+  slen = strlen (string);
+  send = string + slen;
+
+  t = result = (char *)xmalloc (slen + 1);
+  s = string;
+
+  if (strchr (string, CTLESC) == 0)
+    return (strcpy (result, s));
+
+  while (*s)
+    {
+      if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL))
+       {
+         s++;
+         if (*s == '\0')
+           break;
+       }
+      COPY_CHAR_P (t, s, send);
+    }
+  *t = '\0';
+  return result;
+}
+
+/* Return a new string with the quoted representation of character C. */
+static char *
+make_quoted_char (c)
+     int c;
+{
+  char *temp;
+
+  temp = (char *)xmalloc (3);
+  if (c == 0)
+    {
+      temp[0] = CTLNUL;
+      temp[1] = '\0';
+    }
+  else
+    {
+      temp[0] = CTLESC;
+      temp[1] = c;
+      temp[2] = '\0';
+    }
+  return (temp);
+}
+
+/* Quote STRING.  Return a new string. */
+char *
+quote_string (string)
+     char *string;
+{
+  register char *t;
+  size_t slen;
+  char *result, *send;
+
+  if (*string == 0)
+    {
+      result = (char *)xmalloc (2);
+      result[0] = CTLNUL;
+      result[1] = '\0';
+    }
+  else
+    {
+      DECLARE_MBSTATE;
+
+      slen = strlen (string);
+      send = string + slen;
+
+      result = (char *)xmalloc ((slen * 2) + 1);
+
+      for (t = result; string < send; )
+       {
+         *t++ = CTLESC;
+         COPY_CHAR_P (t, string, send);
+       }
+      *t = '\0';
+    }
+  return (result);
+}
+
+/* De-quoted quoted characters in STRING. */
+char *
+dequote_string (string)
+     char *string;
+{
+  register char *s, *t;
+  size_t slen;
+  char *result, *send;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+
+  t = result = (char *)xmalloc (slen + 1);
+
+  if (QUOTED_NULL (string))
+    {
+      result[0] = '\0';
+      return (result);
+    }
+
+  /* If no character in the string can be quoted, don't bother examining
+     each character.  Just return a copy of the string passed to us. */
+  if (strchr (string, CTLESC) == NULL)
+    return (strcpy (result, string));
+
+  send = string + slen;
+  s = string;
+  while (*s)
+    {
+      if (*s == CTLESC)
+       {
+         s++;
+         if (*s == '\0')
+           break;
+       }
+      COPY_CHAR_P (t, s, send);
+    }
+
+  *t = '\0';
+  return (result);
+}
+
+/* Quote the entire WORD_LIST list. */
+static WORD_LIST *
+quote_list (list)
+     WORD_LIST *list;
+{
+  register WORD_LIST *w;
+  char *t;
+
+  for (w = list; w; w = w->next)
+    {
+      t = w->word->word;
+      w->word->word = quote_string (t);
+      free (t);
+      w->word->flags |= W_QUOTED;
+    }
+  return list;
+}
+
+static WORD_LIST *
+dequote_list (list)
+     WORD_LIST *list;
+{
+  register char *s;
+  register WORD_LIST *tlist;
+
+  for (tlist = list; tlist; tlist = tlist->next)
+    {
+      s = dequote_string (tlist->word->word);
+      free (tlist->word->word);
+      tlist->word->word = s;
+    }
+  return list;
+}
+
+/* Remove CTLESC protecting a CTLESC or CTLNUL in place.  Return the passed
+   string. */
+static char *
+remove_quoted_escapes (string)
+     char *string;
+{
+  char *t;
+
+  if (string)
+    {
+      t = dequote_escapes (string);
+      strcpy (string, t);
+      free (t);
+    }
+
+  return (string);
+}
+
+/* Perform quoted null character removal on STRING.  We don't allow any
+   quoted null characters in the middle or at the ends of strings because
+   of how expand_word_internal works.  remove_quoted_nulls () turns
+   STRING into an empty string iff it only consists of a quoted null,
+   and removes all unquoted CTLNUL characters. */
+static char *
+remove_quoted_nulls (string)
+     char *string;
+{
+  register size_t slen;
+  register int i, j, prev_i;
+  DECLARE_MBSTATE;
+
+  if (strchr (string, CTLNUL) == 0)            /* XXX */
+    return string;                             /* XXX */
+
+  slen = strlen (string);
+  i = j = 0;
+
+  while (i < slen)
+    {
+      if (string[i] == CTLESC)
+       {
+         /* Old code had j++, but we cannot assume that i == j at this
+            point -- what if a CTLNUL has already been removed from the
+            string?  We don't want to drop the CTLESC or recopy characters
+            that we've already copied down. */
+         i++; string[j++] = CTLESC;
+         if (i == slen)
+           break;
+       }
+      else if (string[i] == CTLNUL)
+       i++;
+
+      prev_i = i;
+      ADVANCE_CHAR (string, slen, i);
+      if (j < prev_i)
+       {
+         do string[j++] = string[prev_i++]; while (prev_i < i);
+       }
+      else
+       j = i;
+    }
+  string[j] = '\0';
+
+  return (string);
+}
+
+/* Perform quoted null character removal on each element of LIST.
+   This modifies LIST. */
+void
+word_list_remove_quoted_nulls (list)
+     WORD_LIST *list;
+{
+  register WORD_LIST *t;
+
+  for (t = list; t; t = t->next)
+    remove_quoted_nulls (t->word->word);
+}
+
+/* **************************************************************** */
+/*                                                                 */
+/*        Functions for Matching and Removing Patterns             */
+/*                                                                 */
+/* **************************************************************** */
+
+#if defined (HANDLE_MULTIBYTE)
+#if 0 /* Currently unused */
+static unsigned char *
+mb_getcharlens (string, len)
+     char *string;
+     int len;
+{
+  int i, offset, last;
+  unsigned char *ret;
+  char *p;
+  DECLARE_MBSTATE;
+
+  i = offset = 0;
+  last = 0;
+  ret = (unsigned char *)xmalloc (len);
+  memset (ret, 0, len);
+  while (string[last])
+    {
+      ADVANCE_CHAR (string, len, offset);
+      ret[last] = offset - last;
+      last = offset;
+    }
+  return ret;
+}
+#endif
+#endif
+
+/* Remove the portion of PARAM matched by PATTERN according to OP, where OP
+   can have one of 4 values:
+       RP_LONG_LEFT    remove longest matching portion at start of PARAM
+       RP_SHORT_LEFT   remove shortest matching portion at start of PARAM
+       RP_LONG_RIGHT   remove longest matching portion at end of PARAM
+       RP_SHORT_RIGHT  remove shortest matching portion at end of PARAM
+*/
+
+#define RP_LONG_LEFT   1
+#define RP_SHORT_LEFT  2
+#define RP_LONG_RIGHT  3
+#define RP_SHORT_RIGHT 4
+
+static char *
+remove_upattern (param, pattern, op)
+     char *param, *pattern;
+     int op;
+{
+  register int len;
+  register char *end;
+  register char *p, *ret, c;
+
+  len = STRLEN (param);
+  end = param + len;
+
+  switch (op)
+    {
+      case RP_LONG_LEFT:       /* remove longest match at start */
+       for (p = end; p >= param; p--)
+         {
+           c = *p; *p = '\0';
+           if (strmatch (pattern, param, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               *p = c;
+               return (savestring (p));
+             }
+           *p = c;
+
+         }
+       break;
+
+      case RP_SHORT_LEFT:      /* remove shortest match at start */
+       for (p = param; p <= end; p++)
+         {
+           c = *p; *p = '\0';
+           if (strmatch (pattern, param, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               *p = c;
+               return (savestring (p));
+             }
+           *p = c;
+         }
+       break;
+
+      case RP_LONG_RIGHT:      /* remove longest match at end */
+       for (p = param; p <= end; p++)
+         {
+           if (strmatch (pattern, p, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               c = *p; *p = '\0';
+               ret = savestring (param);
+               *p = c;
+               return (ret);
+             }
+         }
+       break;
+
+      case RP_SHORT_RIGHT:     /* remove shortest match at end */
+       for (p = end; p >= param; p--)
+         {
+           if (strmatch (pattern, p, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               c = *p; *p = '\0';
+               ret = savestring (param);
+               *p = c;
+               return (ret);
+             }
+         }
+       break;
+    }
+
+  return (savestring (param)); /* no match, return original string */
+}
+
+#if defined (HANDLE_MULTIBYTE)
+
+#if !defined (HAVE_WCSDUP)
+static wchar_t *
+wcsdup (ws)
+     wchar_t *ws;
+{
+  wchar_t *ret;
+  size_t len;
+
+  len = wcslen (ws);
+  ret = xmalloc ((len + 1) * sizeof (wchar_t));
+  if (ret == 0)
+    return ret;
+  return (wcscpy (ret, ws));
+}
+#endif /* !HAVE_WCSDUP */
+
+static wchar_t *
+remove_wpattern (wparam, wstrlen, wpattern, op)
+     wchar_t *wparam;
+     size_t wstrlen;
+     wchar_t *wpattern;
+     int op;
+{
+  wchar_t wc;
+  int n, n1;
+  wchar_t *ret;
+
+  switch (op)
+    {
+      case RP_LONG_LEFT:       /* remove longest match at start */
+        for (n = wstrlen; n >= 0; n--)
+         {
+           wc = wparam[n]; wparam[n] = L'\0';
+           if (wcsmatch (wpattern, wparam, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               wparam[n] = wc;
+               return (wcsdup (wparam + n));
+             }
+           wparam[n] = wc;
+         }
+       break;
+
+      case RP_SHORT_LEFT:      /* remove shortest match at start */
+       for (n = 0; n <= wstrlen; n++)
+         {
+           wc = wparam[n]; wparam[n] = L'\0';
+           if (wcsmatch (wpattern, wparam, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               wparam[n] = wc;
+               return (wcsdup (wparam + n));
+             }
+           wparam[n] = wc;
+         }
+       break;
+
+      case RP_LONG_RIGHT:      /* remove longest match at end */
+        for (n = 0; n <= wstrlen; n++)
+         {
+           if (wcsmatch (wpattern, wparam + n, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               wc = wparam[n]; wparam[n] = L'\0';
+               ret = wcsdup (wparam);
+               wparam[n] = wc;
+               return (ret);
+             }
+         }
+       break;
+
+      case RP_SHORT_RIGHT:     /* remove shortest match at end */
+       for (n = wstrlen; n >= 0; n--)
+         {
+           if (wcsmatch (wpattern, wparam + n, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               wc = wparam[n]; wparam[n] = L'\0';
+               ret = wcsdup (wparam);
+               wparam[n] = wc;
+               return (ret);
+             }
+         }
+       break;
+    }
+
+  return (wcsdup (wparam));    /* no match, return original string */
+}
+#endif /* HANDLE_MULTIBYTE */
+
+static char *
+remove_pattern (param, pattern, op)
+     char *param, *pattern;
+     int op;
+{
+  if (param == NULL)
+    return (param);
+  if (*param == '\0' || pattern == NULL || *pattern == '\0')   /* minor optimization */
+    return (savestring (param));
+
+#if defined (HANDLE_MULTIBYTE)
+  if (MB_CUR_MAX > 1)
+    {
+      wchar_t *ret, *oret;
+      size_t n;
+      wchar_t *wparam, *wpattern;
+      mbstate_t ps;
+      char *xret;
+
+      n = xdupmbstowcs (&wpattern, NULL, pattern);
+      if (n == (size_t)-1)
+       return (remove_upattern (param, pattern, op));
+      n = xdupmbstowcs (&wparam, NULL, param);
+      if (n == (size_t)-1)
+       {
+         free (wpattern);
+         return (remove_upattern (param, pattern, op));
+       }
+      oret = ret = remove_wpattern (wparam, n, wpattern, op);
+
+      free (wparam);
+      free (wpattern);
+
+      n = strlen (param);
+      xret = xmalloc (n + 1);
+      memset (&ps, '\0', sizeof (mbstate_t));
+      n = wcsrtombs (xret, (const wchar_t **)&ret, n, &ps);
+      xret[n] = '\0';          /* just to make sure */
+      free (oret);
+      return xret;      
+    }
+  else
+#endif
+    return (remove_upattern (param, pattern, op));
+}
+
+/* Return 1 of the first character of STRING could match the first
+   character of pattern PAT.  Used to avoid n2 calls to strmatch(). */
+static int
+match_pattern_char (pat, string)
+     char *pat, *string;
+{
+  char c;
+
+  if (*string == 0)
+    return (0);
+
+  switch (c = *pat++)
+    {
+    default:
+      return (*string == c);
+    case '\\':
+      return (*string == *pat);
+    case '?':
+      return (*pat == LPAREN ? 1 : (*string != '\0'));
+    case '*':
+      return (1);
+    case '+':
+    case '!':
+    case '@':
+      return (*pat == LPAREN ? 1 : (*string == c));
+    case '[':
+      return (*string != '\0');
+    }
+}
+
+/* Match PAT anywhere in STRING and return the match boundaries.
+   This returns 1 in case of a successful match, 0 otherwise.  SP
+   and EP are pointers into the string where the match begins and
+   ends, respectively.  MTYPE controls what kind of match is attempted.
+   MATCH_BEG and MATCH_END anchor the match at the beginning and end
+   of the string, respectively.  The longest match is returned. */
+static int
+match_upattern (string, pat, mtype, sp, ep)
+     char *string, *pat;
+     int mtype;
+     char **sp, **ep;
+{
+  int c, len;
+  register char *p, *p1;
+  char *end;
+
+  len = STRLEN (string);
+  end = string + len;
+
+  switch (mtype)
+    {
+    case MATCH_ANY:
+      for (p = string; p <= end; p++)
+       {
+         if (match_pattern_char (pat, p))
+           {
+             for (p1 = end; p1 >= p; p1--)
+               {
+                 c = *p1; *p1 = '\0';
+                 if (strmatch (pat, p, FNMATCH_EXTFLAG) == 0)
+                   {
+                     *p1 = c;
+                     *sp = p;
+                     *ep = p1;
+                     return 1;
+                   }
+                 *p1 = c;
+               }
+           }
+       }
+
+      return (0);
+
+    case MATCH_BEG:
+      if (match_pattern_char (pat, string) == 0)
+       return (0);
+
+      for (p = end; p >= string; p--)
+       {
+         c = *p; *p = '\0';
+         if (strmatch (pat, string, FNMATCH_EXTFLAG) == 0)
+           {
+             *p = c;
+             *sp = string;
+             *ep = p;
+             return 1;
+           }
+         *p = c;
+       }
+
+      return (0);
+
+    case MATCH_END:
+      for (p = string; p <= end; p++)
+       {
+         if (strmatch (pat, p, FNMATCH_EXTFLAG) == 0)
+           {
+             *sp = p;
+             *ep = end;
+             return 1;
+           }
+
+       }
+
+      return (0);
+    }
+
+  return (0);
+}
+
+#if defined (HANDLE_MULTIBYTE)
+/* Return 1 of the first character of WSTRING could match the first
+   character of pattern WPAT.  Wide character version. */
+static int
+match_pattern_wchar (wpat, wstring)
+     wchar_t *wpat, *wstring;
+{
+  wchar_t wc;
+
+  if (*wstring == 0)
+    return (0);
+
+  switch (wc = *wpat++)
+    {
+    default:
+      return (*wstring == wc);
+    case L'\\':
+      return (*wstring == *wpat);
+    case L'?':
+      return (*wpat == LPAREN ? 1 : (*wstring != L'\0'));
+    case L'*':
+      return (1);
+    case L'+':
+    case L'!':
+    case L'@':
+      return (*wpat == LPAREN ? 1 : (*wstring == wc));
+    case L'[':
+      return (*wstring != L'\0');
+    }
+}
+
+/* Match WPAT anywhere in WSTRING and return the match boundaries.
+   This returns 1 in case of a successful match, 0 otherwise.  Wide
+   character version. */
+static int
+match_wpattern (wstring, indices, wstrlen, wpat, mtype, sp, ep)
+     wchar_t *wstring;
+     char **indices;
+     size_t wstrlen;
+     wchar_t *wpat;
+     int mtype;
+     char **sp, **ep;
+{
+  wchar_t wc;
+  int len;
+#if 0
+  size_t n, n1;        /* Apple's gcc seems to miscompile this badly */
+#else
+  int n, n1;
+#endif
+
+  switch (mtype)
+    {
+    case MATCH_ANY:
+      for (n = 0; n <= wstrlen; n++)
+       {
+         if (match_pattern_wchar (wpat, wstring + n))
+           {
+             for (n1 = wstrlen; n1 >= n; n1--)
+               {
+                 wc = wstring[n1]; wstring[n1] = L'\0';
+                 if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG) == 0)
+                   {
+                     wstring[n1] = wc;
+                     *sp = indices[n];
+                     *ep = indices[n1];
+                     return 1;
+                   }
+                 wstring[n1] = wc;
+               }
+           }
+       }
+
+      return (0);
+
+    case MATCH_BEG:
+      if (match_pattern_wchar (wpat, wstring) == 0)
+       return (0);
+
+      for (n = wstrlen; n >= 0; n--)
+       {
+         wc = wstring[n]; wstring[n] = L'\0';
+         if (wcsmatch (wpat, wstring, FNMATCH_EXTFLAG) == 0)
+           {
+             wstring[n] = wc;
+             *sp = indices[0];
+             *ep = indices[n];
+             return 1;
+           }
+         wstring[n] = wc;
+       }
+
+      return (0);
+
+    case MATCH_END:
+      for (n = 0; n <= wstrlen; n++)
+       {
+         if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG) == 0)
+           {
+             *sp = indices[n];
+             *ep = indices[wstrlen];
+             return 1;
+           }
+       }
+
+      return (0);
+    }
+
+  return (0);
+}
+#endif /* HANDLE_MULTIBYTE */
+
+static int
+match_pattern (string, pat, mtype, sp, ep)
+     char *string, *pat;
+     int mtype;
+     char **sp, **ep;
+{
+#if defined (HANDLE_MULTIBYTE)
+  int ret;
+  size_t n;
+  wchar_t *wstring, *wpat;
+  char **indices;
+#endif
+
+  if (string == 0 || *string == 0 || pat == 0 || *pat == 0)
+    return (0);
+
+#if defined (HANDLE_MULTIBYTE)
+  if (MB_CUR_MAX > 1)
+    {
+      n = xdupmbstowcs (&wpat, NULL, pat);
+      if (n == (size_t)-1)
+       return (match_upattern (string, pat, mtype, sp, ep));
+      n = xdupmbstowcs (&wstring, &indices, string);
+      if (n == (size_t)-1)
+       {
+         free (wpat);
+         return (match_upattern (string, pat, mtype, sp, ep));
+       }
+      ret = match_wpattern (wstring, indices, n, wpat, mtype, sp, ep);
+
+      free (wpat);
+      free (wstring);
+      free (indices);
+
+      return (ret);
+    }
+  else
+#endif
+    return (match_upattern (string, pat, mtype, sp, ep));
+}
+
+static int
+getpatspec (c, value)
+     int c;
+     char *value;
+{
+  if (c == '#')
+    return ((*value == '#') ? RP_LONG_LEFT : RP_SHORT_LEFT);
+  else /* c == '%' */
+    return ((*value == '%') ? RP_LONG_RIGHT : RP_SHORT_RIGHT);
+}
+
+/* Posix.2 says that the WORD should be run through tilde expansion,
+   parameter expansion, command substitution and arithmetic expansion.
+   This leaves the result quoted, so quote_string_for_globbing () has
+   to be called to fix it up for strmatch ().  If QUOTED is non-zero,
+   it means that the entire expression was enclosed in double quotes.
+   This means that quoting characters in the pattern do not make any
+   special pattern characters quoted.  For example, the `*' in the
+   following retains its special meaning: "${foo#'*'}". */
+static char *
+getpattern (value, quoted, expandpat)
+     char *value;
+     int quoted, expandpat;
+{
+  char *pat, *tword;
+  WORD_LIST *l;
+  int i;
+
+  tword = xstrchr (value, '~') ? bash_tilde_expand (value, 0) : savestring (value);
+
+  /* There is a problem here:  how to handle single or double quotes in the
+     pattern string when the whole expression is between double quotes?
+     POSIX.2 says that enclosing double quotes do not cause the pattern to
+     be quoted, but does that leave us a problem with @ and array[@] and their
+     expansions inside a pattern? */
+#if 0
+  if (expandpat && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *tword)
+    {
+      i = 0;
+      pat = string_extract_double_quoted (tword, &i, 1);
+      free (tword);
+      tword = pat;
+    }
+#endif
+
+  /* expand_string_for_rhs () leaves WORD quoted and does not perform
+     word splitting. */
+  l = *tword ? expand_string_for_rhs (tword,
+                                     (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? Q_PATQUOTE : quoted,
+                                     (int *)NULL, (int *)NULL)
+            : (WORD_LIST *)0;
+  free (tword);
+  pat = string_list (l);
+  dispose_words (l);
+  if (pat)
+    {
+      tword = quote_string_for_globbing (pat, QGLOB_CVTNULL);
+      free (pat);
+      pat = tword;
+    }
+  return (pat);
+}
+
+#if 0
+/* Handle removing a pattern from a string as a result of ${name%[%]value}
+   or ${name#[#]value}. */
+static char *
+variable_remove_pattern (value, pattern, patspec, quoted)
+     char *value, *pattern;
+     int patspec, quoted;
+{
+  char *tword;
+
+  tword = remove_pattern (value, pattern, patspec);
+
+  return (tword);
+}
+#endif
+
+static char *
+list_remove_pattern (list, pattern, patspec, itype, quoted)
+     WORD_LIST *list;
+     char *pattern;
+     int patspec, itype, quoted;
+{
+  WORD_LIST *new, *l;
+  WORD_DESC *w;
+  char *tword;
+
+  for (new = (WORD_LIST *)NULL, l = list; l; l = l->next)
+    {
+      tword = remove_pattern (l->word->word, pattern, patspec);
+      w = make_bare_word (tword);
+      FREE (tword);
+      new = make_word_list (w, new);
+    }
+
+  l = REVERSE_LIST (new, WORD_LIST *);
+  if (itype == '*')
+#if 0
+    tword = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (l) : string_list (l);
+#else
+    tword = (quoted & Q_DOUBLE_QUOTES) ? string_list_dollar_star (l) : string_list (l);
+#endif
+  else
+    tword = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (l) : l);
+
+  dispose_words (l);
+  return (tword);
+}
+
+static char *
+parameter_list_remove_pattern (itype, pattern, patspec, quoted)
+     int itype;
+     char *pattern;
+     int patspec, quoted;
+{
+  char *ret;
+  WORD_LIST *list;
+
+  list = list_rest_of_args ();
+  if (list == 0)
+    return ((char *)NULL);
+  ret = list_remove_pattern (list, pattern, patspec, itype, quoted);
+  dispose_words (list);
+  return (ret);
+}
+
+#if defined (ARRAY_VARS)
+static char *
+array_remove_pattern (a, pattern, patspec, varname, quoted)
+     ARRAY *a;
+     char *pattern;
+     int patspec;
+     char *varname;    /* so we can figure out how it's indexed */
+     int quoted;
+{
+  int itype;
+  char *ret;
+  WORD_LIST *list;
+  SHELL_VAR *v;
+
+  /* compute itype from varname here */
+  v = array_variable_part (varname, &ret, 0);
+  itype = ret[0];
+
+  list = array_to_word_list (a);
+  if (list == 0)
+   return ((char *)NULL);
+  ret = list_remove_pattern (list, pattern, patspec, itype, quoted);
+  dispose_words (list);
+
+  return ret;
+}
+#endif /* ARRAY_VARS */
+
+static char *
+parameter_brace_remove_pattern (varname, value, patstr, rtype, quoted)
+     char *varname, *value, *patstr;
+     int rtype, quoted;
+{
+  int vtype, patspec, starsub;
+  char *temp1, *val, *pattern;
+  SHELL_VAR *v;
+
+  if (value == 0)
+    return ((char *)NULL);
+
+  this_command_name = varname;
+
+  vtype = get_var_and_type (varname, value, quoted, &v, &val);
+  if (vtype == -1)
+    return ((char *)NULL);
+
+  starsub = vtype & VT_STARSUB;
+  vtype &= ~VT_STARSUB;
+
+  patspec = getpatspec (rtype, patstr);
+  if (patspec == RP_LONG_LEFT || patspec == RP_LONG_RIGHT)
+    patstr++;
+
+  pattern = getpattern (patstr, quoted, 1);
+
+  temp1 = (char *)NULL;                /* shut up gcc */
+  switch (vtype)
+    {
+    case VT_VARIABLE:
+    case VT_ARRAYMEMBER:
+      temp1 = remove_pattern (val, pattern, patspec);
+      if (vtype == VT_VARIABLE)
+       FREE (val);
+      if (temp1)
+       {
+         val = quote_escapes (temp1);
+         free (temp1);
+         temp1 = val;
+       }
+      break;
+#if defined (ARRAY_VARS)
+    case VT_ARRAYVAR:
+      temp1 = array_remove_pattern (array_cell (v), pattern, patspec, varname, quoted);
+      if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
+       {
+         val = quote_escapes (temp1);
+         free (temp1);
+         temp1 = val;
+       }
+      break;
+#endif
+    case VT_POSPARMS:
+      temp1 = parameter_list_remove_pattern (varname[0], pattern, patspec, quoted);
+      if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
+       {
+         val = quote_escapes (temp1);
+         free (temp1);
+         temp1 = val;
+       }
+      break;
+    }
+
+  FREE (pattern);
+  return temp1;
+}    
+
+/*******************************************
+ *                                        *
+ *     Functions to expand WORD_DESCs     *
+ *                                        *
+ *******************************************/
+
+/* Expand WORD, performing word splitting on the result.  This does
+   parameter expansion, command substitution, arithmetic expansion,
+   word splitting, and quote removal. */
+
+WORD_LIST *
+expand_word (word, quoted)
+     WORD_DESC *word;
+     int quoted;
+{
+  WORD_LIST *result, *tresult;
+
+  tresult = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
+  result = word_list_split (tresult);
+  dispose_words (tresult);
+  return (result ? dequote_list (result) : result);
+}
+
+/* Expand WORD, but do not perform word splitting on the result.  This
+   does parameter expansion, command substitution, arithmetic expansion,
+   and quote removal. */
+WORD_LIST *
+expand_word_unsplit (word, quoted)
+     WORD_DESC *word;
+     int quoted;
+{
+  WORD_LIST *result;
+
+  expand_no_split_dollar_star = 1;
+  result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
+  expand_no_split_dollar_star = 0;
+
+  return (result ? dequote_list (result) : result);
+}
+
+/* Perform shell expansions on WORD, but do not perform word splitting or
+   quote removal on the result. */
+WORD_LIST *
+expand_word_leave_quoted (word, quoted)
+     WORD_DESC *word;
+     int quoted;
+{
+  return (call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL));
+}
+
+#if defined (PROCESS_SUBSTITUTION)
+
+/*****************************************************************/
+/*                                                              */
+/*                 Hacking Process Substitution                 */
+/*                                                              */
+/*****************************************************************/
+
+#if !defined (HAVE_DEV_FD)
+/* Named pipes must be removed explicitly with `unlink'.  This keeps a list
+   of FIFOs the shell has open.  unlink_fifo_list will walk the list and
+   unlink all of them. add_fifo_list adds the name of an open FIFO to the
+   list.  NFIFO is a count of the number of FIFOs in the list. */
+#define FIFO_INCR 20
+
+struct temp_fifo {
+  char *file;
+  pid_t proc;
+};
+
+static struct temp_fifo *fifo_list = (struct temp_fifo *)NULL;
+static int nfifo;
+static int fifo_list_size;
+
+static void
+add_fifo_list (pathname)
+     char *pathname;
+{
+  if (nfifo >= fifo_list_size - 1)
+    {
+      fifo_list_size += FIFO_INCR;
+      fifo_list = (struct temp_fifo *)xrealloc (fifo_list,
+                               fifo_list_size * sizeof (struct temp_fifo));
+    }
+
+  fifo_list[nfifo].file = savestring (pathname);
+  nfifo++;
+}
+
+void
+unlink_fifo_list ()
+{
+  int saved, i, j;
+
+  if (nfifo == 0)
+    return;
+
+  for (i = saved = 0; i < nfifo; i++)
+    {
+      if ((fifo_list[i].proc == -1) || (kill(fifo_list[i].proc, 0) == -1))
+       {
+         unlink (fifo_list[i].file);
+         free (fifo_list[i].file);
+         fifo_list[i].file = (char *)NULL;
+         fifo_list[i].proc = -1;
+       }
+      else
+       saved++;
+    }
+
+  /* If we didn't remove some of the FIFOs, compact the list. */
+  if (saved)
+    {
+      for (i = j = 0; i < nfifo; i++)
+       if (fifo_list[i].file)
+         {
+           fifo_list[j].file = fifo_list[i].file;
+           fifo_list[j].proc = fifo_list[i].proc;
+           j++;
+         }
+      nfifo = j;
+    }
+  else
+    nfifo = 0;
+}
+
+static char *
+make_named_pipe ()
+{
+  char *tname;
+
+  tname = sh_mktmpname ("sh-np", MT_USERANDOM);
+  if (mkfifo (tname, 0600) < 0)
+    {
+      free (tname);
+      return ((char *)NULL);
+    }
+
+  add_fifo_list (tname);
+  return (tname);
+}
+
+#else /* HAVE_DEV_FD */
+
+/* DEV_FD_LIST is a bitmap of file descriptors attached to pipes the shell
+   has open to children.  NFDS is a count of the number of bits currently
+   set in DEV_FD_LIST.  TOTFDS is a count of the highest possible number
+   of open files. */
+static char *dev_fd_list = (char *)NULL;
+static int nfds;
+static int totfds;     /* The highest possible number of open files. */
+
+static void
+add_fifo_list (fd)
+     int fd;
+{
+  if (!dev_fd_list || fd >= totfds)
+    {
+      int ofds;
+
+      ofds = totfds;
+      totfds = getdtablesize ();
+      if (totfds < 0 || totfds > 256)
+       totfds = 256;
+      if (fd > totfds)
+       totfds = fd + 2;
+
+      dev_fd_list = (char *)xrealloc (dev_fd_list, totfds);
+      memset (dev_fd_list + ofds, '\0', totfds - ofds);
+    }
+
+  dev_fd_list[fd] = 1;
+  nfds++;
+}
+
+void
+unlink_fifo_list ()
+{
+  register int i;
+
+  if (nfds == 0)
+    return;
+
+  for (i = 0; nfds && i < totfds; i++)
+    if (dev_fd_list[i])
+      {
+       close (i);
+       dev_fd_list[i] = 0;
+       nfds--;
+      }
+
+  nfds = 0;
+}
+
+#if defined (NOTDEF)
+print_dev_fd_list ()
+{
+  register int i;
+
+  fprintf (stderr, "pid %ld: dev_fd_list:", (long)getpid ());
+  fflush (stderr);
+
+  for (i = 0; i < totfds; i++)
+    {
+      if (dev_fd_list[i])
+       fprintf (stderr, " %d", i);
+    }
+  fprintf (stderr, "\n");
+}
+#endif /* NOTDEF */
+
+static char *
+make_dev_fd_filename (fd)
+     int fd;
+{
+  char *ret, intbuf[INT_STRLEN_BOUND (int) + 1], *p;
+
+  ret = (char *)xmalloc (sizeof (DEV_FD_PREFIX) + 4);
+
+  strcpy (ret, DEV_FD_PREFIX);
+  p = inttostr (fd, intbuf, sizeof (intbuf));
+  strcpy (ret + sizeof (DEV_FD_PREFIX) - 1, p);
+
+  add_fifo_list (fd);
+  return (ret);
+}
+
+#endif /* HAVE_DEV_FD */
+
+/* Return a filename that will open a connection to the process defined by
+   executing STRING.  HAVE_DEV_FD, if defined, means open a pipe and return
+   a filename in /dev/fd corresponding to a descriptor that is one of the
+   ends of the pipe.  If not defined, we use named pipes on systems that have
+   them.  Systems without /dev/fd and named pipes are out of luck.
+
+   OPEN_FOR_READ_IN_CHILD, if 1, means open the named pipe for reading or
+   use the read end of the pipe and dup that file descriptor to fd 0 in
+   the child.  If OPEN_FOR_READ_IN_CHILD is 0, we open the named pipe for
+   writing or use the write end of the pipe in the child, and dup that
+   file descriptor to fd 1 in the child.  The parent does the opposite. */
+
+static char *
+process_substitute (string, open_for_read_in_child)
+     char *string;
+     int open_for_read_in_child;
+{
+  char *pathname;
+  int fd, result;
+  pid_t old_pid, pid;
+#if defined (HAVE_DEV_FD)
+  int parent_pipe_fd, child_pipe_fd;
+  int fildes[2];
+#endif /* HAVE_DEV_FD */
+#if defined (JOB_CONTROL)
+  pid_t old_pipeline_pgrp;
+#endif
+
+  if (!string || !*string || wordexp_only)
+    return ((char *)NULL);
+
+#if !defined (HAVE_DEV_FD)
+  pathname = make_named_pipe ();
+#else /* HAVE_DEV_FD */
+  if (pipe (fildes) < 0)
+    {
+      sys_error (_("cannot make pipe for process substitution"));
+      return ((char *)NULL);
+    }
+  /* If OPEN_FOR_READ_IN_CHILD == 1, we want to use the write end of
+     the pipe in the parent, otherwise the read end. */
+  parent_pipe_fd = fildes[open_for_read_in_child];
+  child_pipe_fd = fildes[1 - open_for_read_in_child];
+  /* Move the parent end of the pipe to some high file descriptor, to
+     avoid clashes with FDs used by the script. */
+  parent_pipe_fd = move_to_high_fd (parent_pipe_fd, 1, 64);
+
+  pathname = make_dev_fd_filename (parent_pipe_fd);
+#endif /* HAVE_DEV_FD */
+
+  if (!pathname)
+    {
+      sys_error (_("cannot make pipe for process substitution"));
+      return ((char *)NULL);
+    }
+
+  old_pid = last_made_pid;
+
+#if defined (JOB_CONTROL)
+  old_pipeline_pgrp = pipeline_pgrp;
+  pipeline_pgrp = shell_pgrp;
+  save_pipeline (1);
+#endif /* JOB_CONTROL */
+
+  pid = make_child ((char *)NULL, 1);
+  if (pid == 0)
+    {
+      reset_terminating_signals ();    /* XXX */
+      free_pushed_string_input ();
+      /* Cancel traps, in trap.c. */
+      restore_original_signals ();
+      setup_async_signals ();
+      subshell_environment |= SUBSHELL_COMSUB;
+    }
+
+#if defined (JOB_CONTROL)
+  set_sigchld_handler ();
+  stop_making_children ();
+  pipeline_pgrp = old_pipeline_pgrp;
+#endif /* JOB_CONTROL */
+
+  if (pid < 0)
+    {
+      sys_error (_("cannot make child for process substitution"));
+      free (pathname);
+#if defined (HAVE_DEV_FD)
+      close (parent_pipe_fd);
+      close (child_pipe_fd);
+#endif /* HAVE_DEV_FD */
+      return ((char *)NULL);
+    }
+
+  if (pid > 0)
+    {
+#if defined (JOB_CONTROL)
+      restore_pipeline (1);
+#endif
+
+#if !defined (HAVE_DEV_FD)
+      fifo_list[nfifo-1].proc = pid;
+#endif
+
+      last_made_pid = old_pid;
+
+#if defined (JOB_CONTROL) && defined (PGRP_PIPE)
+      close_pgrp_pipe ();
+#endif /* JOB_CONTROL && PGRP_PIPE */
+
+#if defined (HAVE_DEV_FD)
+      close (child_pipe_fd);
+#endif /* HAVE_DEV_FD */
+
+      return (pathname);
+    }
+
+  set_sigint_handler ();
+
+#if defined (JOB_CONTROL)
+  set_job_control (0);
+#endif /* JOB_CONTROL */
+
+#if !defined (HAVE_DEV_FD)
+  /* Open the named pipe in the child. */
+  fd = open (pathname, open_for_read_in_child ? O_RDONLY|O_NONBLOCK : O_WRONLY);
+  if (fd < 0)
+    {
+      /* Two separate strings for ease of translation. */
+      if (open_for_read_in_child)
+       sys_error (_("cannot open named pipe %s for reading"), pathname);
+      else
+       sys_error (_("cannot open named pipe %s for writing"), pathname);
+
+      exit (127);
+    }
+  if (open_for_read_in_child)
+    {
+      if (sh_unset_nodelay_mode (fd) < 0)
+       {
+         sys_error (_("cannout reset nodelay mode for fd %d"), fd);
+         exit (127);
+       }
+    }
+#else /* HAVE_DEV_FD */
+  fd = child_pipe_fd;
+#endif /* HAVE_DEV_FD */
+
+  if (dup2 (fd, open_for_read_in_child ? 0 : 1) < 0)
+    {
+      sys_error (_("cannot duplicate named pipe %s as fd %d"), pathname,
+       open_for_read_in_child ? 0 : 1);
+      exit (127);
+    }
+
+  if (fd != (open_for_read_in_child ? 0 : 1))
+    close (fd);
+
+  /* Need to close any files that this process has open to pipes inherited
+     from its parent. */
+  if (current_fds_to_close)
+    {
+      close_fd_bitmap (current_fds_to_close);
+      current_fds_to_close = (struct fd_bitmap *)NULL;
+    }
+
+#if defined (HAVE_DEV_FD)
+  /* Make sure we close the parent's end of the pipe and clear the slot
+     in the fd list so it is not closed later, if reallocated by, for
+     instance, pipe(2). */
+  close (parent_pipe_fd);
+  dev_fd_list[parent_pipe_fd] = 0;
+#endif /* HAVE_DEV_FD */
+
+  result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST));
+
+#if !defined (HAVE_DEV_FD)
+  /* Make sure we close the named pipe in the child before we exit. */
+  close (open_for_read_in_child ? 0 : 1);
+#endif /* !HAVE_DEV_FD */
+
+  exit (result);
+  /*NOTREACHED*/
+}
+#endif /* PROCESS_SUBSTITUTION */
+
+/***********************************/
+/*                                */
+/*     Command Substitution       */
+/*                                */
+/***********************************/
+
+static char *
+read_comsub (fd, quoted)
+     int fd, quoted;
+{
+  char *istring, buf[128], *bufp;
+  int istring_index, istring_size, c;
+  ssize_t bufn;
+
+  istring = (char *)NULL;
+  istring_index = istring_size = bufn = 0;
+
+#ifdef __CYGWIN__
+  setmode (fd, O_TEXT);                /* we don't want CR/LF, we want Unix-style */
+#endif
+
+  /* Read the output of the command through the pipe. */
+  while (1)
+    {
+      if (fd < 0)
+       break;
+      if (--bufn <= 0)
+       {
+         bufn = zread (fd, buf, sizeof (buf));
+         if (bufn <= 0) 
+           break;
+         bufp = buf;
+       }
+      c = *bufp++;
+
+      if (c == 0)
+       {
+#if 0
+         internal_warning ("read_comsub: ignored null byte in input");
+#endif
+         continue;
+       }
+
+      /* Add the character to ISTRING, possibly after resizing it. */
+      RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE);
+
+      if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || c == CTLESC || c == CTLNUL)
+       istring[istring_index++] = CTLESC;
+
+      istring[istring_index++] = c;
+
+#if 0
+#if defined (__CYGWIN__)
+      if (c == '\n' && istring_index > 1 && istring[istring_index - 2] == '\r')
+       {
+         istring_index--;
+         istring[istring_index - 1] = '\n';
+       }
+#endif
+#endif
+    }
+
+  if (istring)
+    istring[istring_index] = '\0';
+
+  /* If we read no output, just return now and save ourselves some
+     trouble. */
+  if (istring_index == 0)
+    {
+      FREE (istring);
+      return (char *)NULL;
+    }
+
+  /* Strip trailing newlines from the output of the command. */
+  if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+    {
+      while (istring_index > 0)
+       {
+         if (istring[istring_index - 1] == '\n')
+           {
+             --istring_index;
+
+             /* If the newline was quoted, remove the quoting char. */
+             if (istring[istring_index - 1] == CTLESC)
+               --istring_index;
+           }
+         else
+           break;
+       }
+      istring[istring_index] = '\0';
+    }
+  else
+    strip_trailing (istring, istring_index - 1, 1);
+
+  return istring;
+}
+
+/* Perform command substitution on STRING.  This returns a string,
+   possibly quoted. */
+char *
+command_substitute (string, quoted)
+     char *string;
+     int quoted;
+{
+  pid_t pid, old_pid, old_pipeline_pgrp;
+  char *istring;
+  int result, fildes[2], function_value, pflags, rc;
+
+  istring = (char *)NULL;
+
+  /* Don't fork () if there is no need to.  In the case of no command to
+     run, just return NULL. */
+  if (!string || !*string || (string[0] == '\n' && !string[1]))
+    return ((char *)NULL);
+
+  if (wordexp_only && read_but_dont_execute)
+    {
+      last_command_exit_value = 125;
+      jump_to_top_level (EXITPROG);
+    }
+
+  /* We're making the assumption here that the command substitution will
+     eventually run a command from the file system.  Since we'll run
+     maybe_make_export_env in this subshell before executing that command,
+     the parent shell and any other shells it starts will have to remake
+     the environment.  If we make it before we fork, other shells won't
+     have to.  Don't bother if we have any temporary variable assignments,
+     though, because the export environment will be remade after this
+     command completes anyway, but do it if all the words to be expanded
+     are variable assignments. */
+  if (subst_assign_varlist == 0 || garglist == 0)
+    maybe_make_export_env ();  /* XXX */
+
+  /* Flags to pass to parse_and_execute() */
+  pflags = interactive ? SEVAL_RESETLINE : 0;
+
+  /* Pipe the output of executing STRING into the current shell. */
+  if (pipe (fildes) < 0)
+    {
+      sys_error (_("cannot make pipe for command substitution"));
+      goto error_exit;
+    }
+
+  old_pid = last_made_pid;
+#if defined (JOB_CONTROL)
+  old_pipeline_pgrp = pipeline_pgrp;
+  /* Don't reset the pipeline pgrp if we're already a subshell in a pipeline. */
+  if ((subshell_environment & SUBSHELL_PIPE) == 0)
+    pipeline_pgrp = shell_pgrp;
+  cleanup_the_pipeline ();
+#endif
+
+  pid = make_child ((char *)NULL, 0);
+  if (pid == 0)
+    /* Reset the signal handlers in the child, but don't free the
+       trap strings. */
+    reset_signal_handlers ();
+
+#if defined (JOB_CONTROL)
+  set_sigchld_handler ();
+  stop_making_children ();
+  pipeline_pgrp = old_pipeline_pgrp;
+#else
+  stop_making_children ();
+#endif /* JOB_CONTROL */
+
+  if (pid < 0)
+    {
+      sys_error (_("cannot make child for command substitution"));
+    error_exit:
+
+      FREE (istring);
+      close (fildes[0]);
+      close (fildes[1]);
+      return ((char *)NULL);
+    }
+
+  if (pid == 0)
+    {
+      set_sigint_handler ();   /* XXX */
+
+      free_pushed_string_input ();
+
+      if (dup2 (fildes[1], 1) < 0)
+       {
+         sys_error (_("command_substitute: cannot duplicate pipe as fd 1"));
+         exit (EXECUTION_FAILURE);
+       }
+
+      /* If standard output is closed in the parent shell
+        (such as after `exec >&-'), file descriptor 1 will be
+        the lowest available file descriptor, and end up in
+        fildes[0].  This can happen for stdin and stderr as well,
+        but stdout is more important -- it will cause no output
+        to be generated from this command. */
+      if ((fildes[1] != fileno (stdin)) &&
+         (fildes[1] != fileno (stdout)) &&
+         (fildes[1] != fileno (stderr)))
+       close (fildes[1]);
+
+      if ((fildes[0] != fileno (stdin)) &&
+         (fildes[0] != fileno (stdout)) &&
+         (fildes[0] != fileno (stderr)))
+       close (fildes[0]);
+
+      /* The currently executing shell is not interactive. */
+      interactive = 0;
+
+      /* This is a subshell environment. */
+      subshell_environment |= SUBSHELL_COMSUB;
+
+      /* When not in POSIX mode, command substitution does not inherit
+        the -e flag. */
+      if (posixly_correct == 0)
+       exit_immediately_on_error = 0;
+
+      remove_quoted_escapes (string);
+
+      startup_state = 2;       /* see if we can avoid a fork */
+      /* Give command substitution a place to jump back to on failure,
+        so we don't go back up to main (). */
+      result = setjmp (top_level);
+
+      /* If we're running a command substitution inside a shell function,
+        trap `return' so we don't return from the function in the subshell
+        and go off to never-never land. */
+      if (result == 0 && return_catch_flag)
+       function_value = setjmp (return_catch);
+      else
+       function_value = 0;
+
+      if (result == ERREXIT)
+       rc = last_command_exit_value;
+      else if (result == EXITPROG)
+       rc = last_command_exit_value;
+      else if (result)
+       rc = EXECUTION_FAILURE;
+      else if (function_value)
+       rc = return_catch_value;
+      else
+       {
+         subshell_level++;
+         rc = parse_and_execute (string, "command substitution", pflags|SEVAL_NOHIST);
+         subshell_level--;
+       }
+
+      last_command_exit_value = rc;
+      rc = run_exit_trap ();
+      exit (rc);
+    }
+  else
+    {
+#if defined (JOB_CONTROL) && defined (PGRP_PIPE)
+      close_pgrp_pipe ();
+#endif /* JOB_CONTROL && PGRP_PIPE */
+
+      close (fildes[1]);
+
+      istring = read_comsub (fildes[0], quoted);
+
+      close (fildes[0]);
+
+      current_command_subst_pid = pid;
+      last_command_exit_value = wait_for (pid);
+      last_command_subst_pid = pid;
+      last_made_pid = old_pid;
+
+#if defined (JOB_CONTROL)
+      /* If last_command_exit_value > 128, then the substituted command
+        was terminated by a signal.  If that signal was SIGINT, then send
+        SIGINT to ourselves.  This will break out of loops, for instance. */
+      if (last_command_exit_value == (128 + SIGINT) && last_command_exit_signal == SIGINT)
+       kill (getpid (), SIGINT);
+
+      /* wait_for gives the terminal back to shell_pgrp.  If some other
+        process group should have it, give it away to that group here.
+        pipeline_pgrp is non-zero only while we are constructing a
+        pipline, so what we are concerned about is whether or not that
+        pipeline was started in the background.  A pipeline started in
+        the background should never get the tty back here. */
+#if 0
+      if (interactive && pipeline_pgrp != (pid_t)0 && pipeline_pgrp != last_asynchronous_pid)
+#else
+      if (interactive && pipeline_pgrp != (pid_t)0 && (subshell_environment & SUBSHELL_ASYNC) == 0)
+#endif
+       give_terminal_to (pipeline_pgrp, 0);
+#endif /* JOB_CONTROL */
+
+      return (istring);
+    }
+}
+
+/********************************************************
+ *                                                     *
+ *     Utility functions for parameter expansion       *
+ *                                                     *
+ ********************************************************/
+
+#if defined (ARRAY_VARS)
+
+static arrayind_t
+array_length_reference (s)
+     char *s;
+{
+  int len;
+  arrayind_t ind;
+  char *t, c;
+  ARRAY *array;
+  SHELL_VAR *var;
+
+  var = array_variable_part (s, &t, &len);
+
+  /* If unbound variables should generate an error, report one and return
+     failure. */
+  if ((var == 0 || array_p (var) == 0) && unbound_vars_is_error)
+    {
+      c = *--t;
+      *t = '\0';
+      err_unboundvar (s);
+      *t = c;
+      return (-1);
+    }
+  else if (var == 0)
+    return 0;
+
+  /* We support a couple of expansions for variables that are not arrays.
+     We'll return the length of the value for v[0], and 1 for v[@] or
+     v[*].  Return 0 for everything else. */
+
+  array = array_p (var) ? array_cell (var) : (ARRAY *)NULL;
+
+  if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']')
+    return (array_p (var) ? array_num_elements (array) : 1);
+
+  ind = array_expand_index (t, len);
+  if (ind < 0)
+    {
+      err_badarraysub (t);
+      return (-1);
+    }
+
+  if (array_p (var))
+    t = array_reference (array, ind);
+  else
+    t = (ind == 0) ? value_cell (var) : (char *)NULL;
+
+  len = STRLEN (t);
+  return (len);
+}
+#endif /* ARRAY_VARS */
+
+static int
+valid_brace_expansion_word (name, var_is_special)
+     char *name;
+     int var_is_special;
+{
+  if (DIGIT (*name) && all_digits (name))
+    return 1;
+  else if (var_is_special)
+    return 1;
+#if defined (ARRAY_VARS)
+  else if (valid_array_reference (name))
+    return 1;
+#endif /* ARRAY_VARS */
+  else if (legal_identifier (name))
+    return 1;
+  else
+    return 0;
+}
+
+static int
+chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at)
+     char *name;
+     int quoted;
+     int *quoted_dollar_atp, *contains_dollar_at;
+{
+  char *temp1;
+
+  if (name == 0)
+    {
+      if (quoted_dollar_atp)
+       *quoted_dollar_atp = 0;
+      if (contains_dollar_at)
+       *contains_dollar_at = 0;
+      return 0;
+    }
+
+  /* check for $@ and $* */
+  if (name[0] == '@' && name[1] == 0)
+    {
+      if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+       *quoted_dollar_atp = 1;
+      if (contains_dollar_at)
+       *contains_dollar_at = 1;
+      return 1;
+    }
+  else if (name[0] == '*' && name[1] == '\0' && quoted == 0)
+    {
+      if (contains_dollar_at)
+       *contains_dollar_at = 1;
+      return 1;
+    }
+
+  /* Now check for ${array[@]} and ${array[*]} */
+#if defined (ARRAY_VARS)
+  else if (valid_array_reference (name))
+    {
+      temp1 = xstrchr (name, '[');
+      if (temp1 && temp1[1] == '@' && temp1[2] == ']')
+       {
+         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+           *quoted_dollar_atp = 1;
+         if (contains_dollar_at)
+           *contains_dollar_at = 1;
+         return 1;
+       }       /* [ */
+      /* ${array[*]}, when unquoted, should be treated like ${array[@]},
+        which should result in separate words even when IFS is unset. */
+      if (temp1 && temp1[1] == '*' && temp1[2] == ']' && quoted == 0)
+       {
+         if (contains_dollar_at)
+           *contains_dollar_at = 1;
+         return 1;
+       }
+    }
+#endif
+  return 0;
+}
+
+/* Parameter expand NAME, and return a new string which is the expansion,
+   or NULL if there was no expansion.
+   VAR_IS_SPECIAL is non-zero if NAME is one of the special variables in
+   the shell, e.g., "@", "$", "*", etc.  QUOTED, if non-zero, means that
+   NAME was found inside of a double-quoted expression. */
+static char *
+parameter_brace_expand_word (name, var_is_special, quoted)
+     char *name;
+     int var_is_special, quoted;
+{
+  char *temp, *tt;
+  intmax_t arg_index;
+  SHELL_VAR *var;
+  int atype;
+
+  /* Handle multiple digit arguments, as in ${11}. */
+  
+  if (legal_number (name, &arg_index))
+    {
+      tt = get_dollar_var_value (arg_index);
+      if (tt)
+       temp = (*tt && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+                 ? quote_string (tt)
+                 : quote_escapes (tt);
+      else
+        temp = (char *)NULL;
+      FREE (tt);
+    }
+  else if (var_is_special)      /* ${@} */
+    {
+      int sindex;
+      tt = (char *)xmalloc (2 + strlen (name));
+      tt[sindex = 0] = '$';
+      strcpy (tt + 1, name);
+
+      temp = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL,
+                          (int *)NULL, (int *)NULL, 0);
+      free (tt);
+    }
+#if defined (ARRAY_VARS)
+  else if (valid_array_reference (name))
+    {
+      temp = array_value (name, quoted, &atype);
+      if (atype == 0 && temp)
+       temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+                 ? quote_string (temp)
+                 : quote_escapes (temp);
+    }
+#endif
+  else if (var = find_variable (name))
+    {
+      if (var_isset (var) && invisible_p (var) == 0)
+       {
+#if defined (ARRAY_VARS)
+         temp = array_p (var) ? array_reference (array_cell (var), 0) : value_cell (var);
+#else
+         temp = value_cell (var);
+#endif
+
+         if (temp)
+           temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+                     ? quote_string (temp)
+                     : quote_escapes (temp);
+       }
+      else
+       temp = (char *)NULL;
+    }
+  else
+    temp = (char *)NULL;
+
+  return (temp);
+}
+
+/* Expand an indirect reference to a variable: ${!NAME} expands to the
+   value of the variable whose name is the value of NAME. */
+static char *
+parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at)
+     char *name;
+     int var_is_special, quoted;
+     int *quoted_dollar_atp, *contains_dollar_at;
+{
+  char *temp, *t;
+
+  t = parameter_brace_expand_word (name, var_is_special, quoted);
+  /* Have to dequote here if necessary */
+  if (t)
+    {
+      temp = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+               ? dequote_string (t)
+               : dequote_escapes (t);
+      free (t);
+      t = temp;
+    }
+  chk_atstar (t, quoted, quoted_dollar_atp, contains_dollar_at);
+  if (t == 0)
+    return (t);
+  temp = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted);
+  free (t);
+  return temp;
+}
+
+/* Expand the right side of a parameter expansion of the form ${NAMEcVALUE},
+   depending on the value of C, the separating character.  C can be one of
+   "-", "+", or "=".  QUOTED is true if the entire brace expression occurs
+   between double quotes. */
+static char *
+parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat)
+     char *name, *value;
+     int c, quoted, *qdollaratp, *hasdollarat;
+{
+  WORD_LIST *l;
+  char *t, *t1, *temp;
+  int hasdol;
+
+  /* XXX - Should we tilde expand in an assignment context if C is `='? */
+  if (*value == '~')
+    temp = bash_tilde_expand (value, 0);
+  else if (xstrchr (value, '~')  && unquoted_substring ("=~", value))
+    temp = bash_tilde_expand (value, 1);
+  else
+    temp = savestring (value);
+
+  /* If the entire expression is between double quotes, we want to treat
+     the value as a double-quoted string, with the exception that we strip
+     embedded unescaped double quotes. */
+  if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *temp)
+    {
+      hasdol = 0;
+      t = string_extract_double_quoted (temp, &hasdol, 1);
+      free (temp);
+      temp = t;
+    }
+
+  hasdol = 0;
+  /* XXX was 0 not quoted */
+  l = *temp ? expand_string_for_rhs (temp, quoted, &hasdol, (int *)NULL)
+           : (WORD_LIST *)0;
+  if (hasdollarat)
+    *hasdollarat = hasdol || (l && l->next);
+  free (temp);
+  if (l)
+    {
+      /* The expansion of TEMP returned something.  We need to treat things
+         slightly differently if HASDOL is non-zero.  If we have "$@", the
+         individual words have already been quoted.  We need to turn them
+         into a string with the words separated by the first character of
+         $IFS without any additional quoting, so string_list_dollar_at won't
+         do the right thing.  We use string_list_dollar_star instead. */
+      temp = (hasdol || l->next) ? string_list_dollar_star (l) : string_list (l);
+
+      /* If l->next is not null, we know that TEMP contained "$@", since that
+        is the only expansion that creates more than one word. */
+      if (qdollaratp && ((hasdol && quoted) || l->next))
+       *qdollaratp = 1;
+      dispose_words (l);
+    }
+  else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && hasdol)
+    {
+      /* The brace expansion occurred between double quotes and there was
+        a $@ in TEMP.  It does not matter if the $@ is quoted, as long as
+        it does not expand to anything.  In this case, we want to return
+        a quoted empty string. */
+      temp = (char *)xmalloc (2);
+      temp[0] = CTLNUL;
+      temp[1] = '\0';
+    }
+  else
+    temp = (char *)NULL;
+
+  if (c == '-' || c == '+')
+    return (temp);
+
+  /* c == '=' */
+  t = temp ? savestring (temp) : savestring ("");
+  t1 = dequote_string (t);
+  free (t);
+#if defined (ARRAY_VARS)
+  if (valid_array_reference (name))
+    assign_array_element (name, t1);
+  else
+#endif /* ARRAY_VARS */
+  bind_variable (name, t1);
+  free (t1);
+  return (temp);
+}
+
+/* Deal with the right hand side of a ${name:?value} expansion in the case
+   that NAME is null or not set.  If VALUE is non-null it is expanded and
+   used as the error message to print, otherwise a standard message is
+   printed. */
+static void
+parameter_brace_expand_error (name, value)
+     char *name, *value;
+{
+  WORD_LIST *l;
+  char *temp;
+
+  if (value && *value)
+    {
+      if (*value == '~')
+       temp = bash_tilde_expand (value, 0);
+      else if (xstrchr (value, '~')  && unquoted_substring ("=~", value))
+       temp = bash_tilde_expand (value, 1);
+      else
+       temp = savestring (value);
+
+      l = expand_string (temp, 0);
+      FREE (temp);
+      temp =  string_list (l);
+      report_error ("%s: %s", name, temp ? temp : ""); /* XXX was value not "" */
+      FREE (temp);
+      dispose_words (l);
+    }
+  else
+    report_error (_("%s: parameter null or not set"), name);
+
+  /* Free the data we have allocated during this expansion, since we
+     are about to longjmp out. */
+  free (name);
+  FREE (value);
+}
+
+/* Return 1 if NAME is something for which parameter_brace_expand_length is
+   OK to do. */
+static int
+valid_length_expression (name)
+     char *name;
+{
+  return (name[1] == '\0' ||                                   /* ${#} */
+         ((sh_syntaxtab[(unsigned char) name[1]] & CSPECVAR) && name[2] == '\0') ||  /* special param */
+         (DIGIT (name[1]) && all_digits (name + 1)) || /* ${#11} */
+#if defined (ARRAY_VARS)
+         valid_array_reference (name + 1) ||                   /* ${#a[7]} */
+#endif
+         legal_identifier (name + 1));                         /* ${#PS1} */
+}
+
+/* Handle the parameter brace expansion that requires us to return the
+   length of a parameter. */
+static intmax_t
+parameter_brace_expand_length (name)
+     char *name;
+{
+  char *t, *newname;
+  intmax_t number, arg_index;
+  WORD_LIST *list;
+#if defined (ARRAY_VARS)
+  SHELL_VAR *var;
+#endif
+
+  if (name[1] == '\0')                 /* ${#} */
+    number = number_of_args ();
+  else if ((name[1] == '@' || name[1] == '*') && name[2] == '\0')      /* ${#@}, ${#*} */
+    number = number_of_args ();
+  else if ((sh_syntaxtab[(unsigned char) name[1]] & CSPECVAR) && name[2] == '\0')
+    {
+      /* Take the lengths of some of the shell's special parameters. */
+      switch (name[1])
+       {
+       case '-':
+         t = which_set_flags ();
+         break;
+       case '?':
+         t = itos (last_command_exit_value);
+         break;
+       case '$':
+         t = itos (dollar_dollar_pid);
+         break;
+       case '!':
+         if (last_asynchronous_pid == NO_PID)
+           t = (char *)NULL;
+         else
+           t = itos (last_asynchronous_pid);
+         break;
+       case '#':
+         t = itos (number_of_args ());
+         break;
+       }
+      number = STRLEN (t);
+      FREE (t);
+    }
+#if defined (ARRAY_VARS)
+  else if (valid_array_reference (name + 1))
+    number = array_length_reference (name + 1);
+#endif /* ARRAY_VARS */
+  else
+    {
+      number = 0;
+
+      if (legal_number (name + 1, &arg_index))         /* ${#1} */
+       {
+         t = get_dollar_var_value (arg_index);
+         number = STRLEN (t);
+         FREE (t);
+       }
+#if defined (ARRAY_VARS)
+      else if ((var = find_variable (name + 1)) && array_p (var))
+       {
+         t = array_reference (array_cell (var), 0);
+         number = STRLEN (t);
+       }
+#endif
+      else                             /* ${#PS1} */
+       {
+         newname = savestring (name);
+         newname[0] = '$';
+         list = expand_string (newname, Q_DOUBLE_QUOTES);
+         t = list ? string_list (list) : (char *)NULL;
+         free (newname);
+         if (list)
+           dispose_words (list);
+
+         number = STRLEN (t);
+         FREE (t);
+       }
+    }
+
+  return (number);
+}
+
+/* Skip characters in SUBSTR until DELIM.  SUBSTR is an arithmetic expression,
+   so we do some ad-hoc parsing of an arithmetic expression to find
+   the first DELIM, instead of using strchr(3).  Two rules:
+       1.  If the substring contains a `(', read until closing `)'.
+       2.  If the substring contains a `?', read past one `:' for each `?'.
+*/
+
+static char *
+skiparith (substr, delim)
+     char *substr;
+     int delim;
+{
+  size_t sublen;
+  int skipcol, pcount, i;
+  DECLARE_MBSTATE;
+
+  sublen = strlen (substr);
+  i = skipcol = pcount = 0;
+  while (substr[i])
+    {
+      /* Balance parens */
+      if (substr[i] == LPAREN)
+       {
+         pcount++;
+         i++;
+         continue;
+       }
+      if (substr[i] == RPAREN && pcount)
+       {
+         pcount--;
+         i++;
+         continue;
+       }
+      if (pcount)
+       {
+         ADVANCE_CHAR (substr, sublen, i);
+         continue;
+       }
+
+      /* Skip one `:' for each `?' */
+      if (substr[i] == ':' && skipcol)
+       {
+         skipcol--;
+         i++;
+         continue;
+       }
+      if (substr[i] == delim)
+       break;
+      if (substr[i] == '?')
+       {
+         skipcol++;
+         i++;
+         continue;
+       }
+      ADVANCE_CHAR (substr, sublen, i);
+    }
+
+  return (substr + i);
+}
+
+/* Verify and limit the start and end of the desired substring.  If
+   VTYPE == 0, a regular shell variable is being used; if it is 1,
+   then the positional parameters are being used; if it is 2, then
+   VALUE is really a pointer to an array variable that should be used.
+   Return value is 1 if both values were OK, 0 if there was a problem
+   with an invalid expression, or -1 if the values were out of range. */
+static int
+verify_substring_values (value, substr, vtype, e1p, e2p)
+     char *value, *substr;
+     int vtype;
+     intmax_t *e1p, *e2p;
+{
+  char *t, *temp1, *temp2;
+  arrayind_t len;
+  int expok;
+#if defined (ARRAY_VARS)
+ ARRAY *a;
+#endif
+
+  /* duplicate behavior of strchr(3) */
+  t = skiparith (substr, ':');
+  if (*t && *t == ':')
+    *t = '\0';
+  else
+    t = (char *)0;
+
+  temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string);
+  *e1p = evalexp (temp1, &expok);
+  free (temp1);
+  if (expok == 0)
+    return (0);
+
+  len = -1;    /* paranoia */
+  switch (vtype)
+    {
+    case VT_VARIABLE:
+    case VT_ARRAYMEMBER:
+      len = strlen (value);
+      break;
+    case VT_POSPARMS:
+      len = number_of_args () + 1;
+      break;
+#if defined (ARRAY_VARS)
+    case VT_ARRAYVAR:
+      a = (ARRAY *)value;
+      /* For arrays, the first value deals with array indices. */
+      len = array_max_index (a);       /* arrays index from 0 to n - 1 */
+      break;
+#endif
+    }
+
+  if (len == -1)       /* paranoia */
+    return -1;
+
+  if (*e1p < 0)                /* negative offsets count from end */
+    *e1p += len;
+
+  if (*e1p >= len || *e1p < 0)
+    return (-1);
+
+#if defined (ARRAY_VARS)
+  /* For arrays, the second offset deals with the number of elements. */
+  if (vtype == VT_ARRAYVAR)
+    len = array_num_elements (a);
+#endif
+
+  if (t)
+    {
+      t++;
+      temp2 = savestring (t);
+      temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
+      free (temp2);
+      t[-1] = ':';
+      *e2p = evalexp (temp1, &expok);
+      free (temp1);
+      if (expok == 0)
+       return (0);
+      if (*e2p < 0)
+       {
+         internal_error (_("%s: substring expression < 0"), t);
+         return (0);
+       }
+#if defined (ARRAY_VARS)
+      /* In order to deal with sparse arrays, push the intelligence about how
+        to deal with the number of elements desired down to the array-
+        specific functions.  */
+      if (vtype != VT_ARRAYVAR)
+#endif
+       {
+         *e2p += *e1p;         /* want E2 chars starting at E1 */
+         if (*e2p > len)
+           *e2p = len;
+       }
+    }
+  else
+    *e2p = len;
+
+  return (1);
+}
+
+/* Return the type of variable specified by VARNAME (simple variable,
+   positional param, or array variable).  Also return the value specified
+   by VARNAME (value of a variable or a reference to an array element).
+   If this returns VT_VARIABLE, the caller assumes that CTLESC and CTLNUL
+   characters in the value are quoted with CTLESC and takes appropriate
+   steps.  For convenience, *VALP is set to the dequoted VALUE. */
+static int
+get_var_and_type (varname, value, quoted, varp, valp)
+     char *varname, *value;
+     int quoted;
+     SHELL_VAR **varp;
+     char **valp;
+{
+  int vtype;
+  char *temp;
+#if defined (ARRAY_VARS)
+  SHELL_VAR *v;
+#endif
+
+  /* This sets vtype to VT_VARIABLE or VT_POSPARMS */
+  vtype = (varname[0] == '@' || varname[0] == '*') && varname[1] == '\0';
+  if (vtype == VT_POSPARMS && varname[0] == '*')
+    vtype |= VT_STARSUB;
+  *varp = (SHELL_VAR *)NULL;
+
+#if defined (ARRAY_VARS)
+  if (valid_array_reference (varname))
+    {
+      v = array_variable_part (varname, &temp, (int *)0);
+      if (v && array_p (v))
+       { /* [ */
+         if (ALL_ELEMENT_SUB (temp[0]) && temp[1] == ']')
+           {
+             vtype = VT_ARRAYVAR;
+             if (temp[0] == '*')
+               vtype |= VT_STARSUB;
+             *valp = (char *)array_cell (v);
+           }
+         else
+           {
+             vtype = VT_ARRAYMEMBER;
+             *valp = array_value (varname, 1, (int *)NULL);
+           }
+         *varp = v;
+       }
+      else
+       return -1;
+    }
+  else if ((v = find_variable (varname)) && array_p (v))
+    {
+      vtype = VT_ARRAYMEMBER;
+      *varp = v;
+      *valp = array_reference (array_cell (v), 0);
+    }
+  else
+#endif
+#if 1
+    {
+      if (value && vtype == VT_VARIABLE)
+       {
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+           *valp = dequote_string (value);
+         else
+           *valp = dequote_escapes (value);
+       }
+      else
+       *valp = value;
+    }
+#else
+  *valp = (value && vtype == VT_VARIABLE) ? dequote_escapes (value) : value;
+#endif
+
+  return vtype;
+}
+
+/******************************************************/
+/*                                                   */
+/* Functions to extract substrings of variable values */
+/*                                                   */
+/******************************************************/
+
+#if defined (HANDLE_MULTIBYTE)
+/* Character-oriented rather than strictly byte-oriented substrings.  S and
+   E, rather being strict indices into STRING, indicate character (possibly
+   multibyte character) positions that require calculation.
+   Used by the ${param:offset[:length]} expansion. */
+static char *
+mb_substring (string, s, e)
+     char *string;
+     int s, e;
+{
+  char *tt;
+  int start, stop, i, slen;
+  DECLARE_MBSTATE;
+
+  start = 0;
+  slen = STRLEN (string);
+
+  i = s;
+  while (string[start] && i--)
+    ADVANCE_CHAR (string, slen, start);
+  stop = start;
+  i = e - s;
+  while (string[stop] && i--)
+    ADVANCE_CHAR (string, slen, stop);
+  tt = substring (string, start, stop);
+  return tt;
+}
+#endif
+  
+/* Process a variable substring expansion: ${name:e1[:e2]}.  If VARNAME
+   is `@', use the positional parameters; otherwise, use the value of
+   VARNAME.  If VARNAME is an array variable, use the array elements. */
+
+static char *
+parameter_brace_substring (varname, value, substr, quoted)
+     char *varname, *value, *substr;
+     int quoted;
+{
+  intmax_t e1, e2;
+  int vtype, r, starsub;
+  char *temp, *val, *tt;
+  SHELL_VAR *v;
+
+  if (value == 0)
+    return ((char *)NULL);
+
+  this_command_name = varname;
+
+  vtype = get_var_and_type (varname, value, quoted, &v, &val);
+  if (vtype == -1)
+    return ((char *)NULL);
+
+  starsub = vtype & VT_STARSUB;
+  vtype &= ~VT_STARSUB;
+
+  r = verify_substring_values (val, substr, vtype, &e1, &e2);
+  if (r <= 0)
+    return ((r == 0) ? &expand_param_error : (char *)NULL);
+
+  switch (vtype)
+    {
+    case VT_VARIABLE:
+    case VT_ARRAYMEMBER:
+#if defined (HANDLE_MULTIBYTE)
+      if (MB_CUR_MAX > 1)
+       tt = mb_substring (val, e1, e2);
+      else
+#endif
+      tt = substring (val, e1, e2);
+
+      if (vtype == VT_VARIABLE)
+       FREE (val);
+      if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+       temp = quote_string (tt);
+      else
+       temp = tt ? quote_escapes (tt) : (char *)NULL;
+      FREE (tt);
+      break;
+    case VT_POSPARMS:
+      tt = pos_params (varname, e1, e2, quoted);
+      if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
+       {
+         temp = tt ? quote_escapes (tt) : (char *)NULL;
+         FREE (tt);
+       }
+      else
+       temp = tt;
+      break;
+#if defined (ARRAY_VARS)
+    case VT_ARRAYVAR:
+      /* We want E2 to be the number of elements desired (arrays can be sparse,
+        so verify_substring_values just returns the numbers specified and we
+        rely on array_subrange to understand how to deal with them). */
+      tt = array_subrange (array_cell (v), e1, e2, starsub, quoted);
+      if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
+       {
+         temp = tt ? quote_escapes (tt) : (char *)NULL;
+         FREE (tt);
+       }
+      else
+       temp = tt;
+      break;
+#endif
+    default:
+      temp = (char *)NULL;
+    }
+
+  return temp;
+}
+
+/****************************************************************/
+/*                                                             */
+/* Functions to perform pattern substitution on variable values */
+/*                                                             */
+/****************************************************************/
+
+char *
+pat_subst (string, pat, rep, mflags)
+     char *string, *pat, *rep;
+     int mflags;
+{
+  char *ret, *s, *e, *str;
+  int rsize, rptr, l, replen, mtype;
+
+  mtype = mflags & MATCH_TYPEMASK;
+
+  /* Special cases:
+   *   1.  A null pattern with mtype == MATCH_BEG means to prefix STRING
+   *       with REP and return the result.
+   *   2.  A null pattern with mtype == MATCH_END means to append REP to
+   *       STRING and return the result.
+   */
+  if ((pat == 0 || *pat == 0) && (mtype == MATCH_BEG || mtype == MATCH_END))
+    {
+      replen = STRLEN (rep);
+      l = strlen (string);
+      ret = (char *)xmalloc (replen + l + 2);
+      if (replen == 0)
+       strcpy (ret, string);
+      else if (mtype == MATCH_BEG)
+       {
+         strcpy (ret, rep);
+         strcpy (ret + replen, string);
+       }
+      else
+       {
+         strcpy (ret, string);
+         strcpy (ret + l, rep);
+       }
+      return (ret);
+    }
+
+  ret = (char *)xmalloc (rsize = 64);
+  ret[0] = '\0';
+
+  for (replen = STRLEN (rep), rptr = 0, str = string;;)
+    {
+      if (match_pattern (str, pat, mtype, &s, &e) == 0)
+       break;
+      l = s - str;
+      RESIZE_MALLOCED_BUFFER (ret, rptr, (l + replen), rsize, 64);
+
+      /* OK, now copy the leading unmatched portion of the string (from
+        str to s) to ret starting at rptr (the current offset).  Then copy
+        the replacement string at ret + rptr + (s - str).  Increment
+        rptr (if necessary) and str and go on. */
+      if (l)
+       {
+         strncpy (ret + rptr, str, l);
+         rptr += l;
+       }
+      if (replen)
+       {
+         strncpy (ret + rptr, rep, replen);
+         rptr += replen;
+       }
+      str = e;         /* e == end of match */
+
+      if (((mflags & MATCH_GLOBREP) == 0) || mtype != MATCH_ANY)
+       break;
+
+      if (s == e)
+       e++, str++;             /* avoid infinite recursion on zero-length match */
+    }
+
+  /* Now copy the unmatched portion of the input string */
+  if (*str)
+    {
+      RESIZE_MALLOCED_BUFFER (ret, rptr, STRLEN(str) + 1, rsize, 64);
+      strcpy (ret + rptr, str);
+    }
+  else
+    ret[rptr] = '\0';
+
+  return ret;
+}
+
+/* Do pattern match and replacement on the positional parameters. */
+static char *
+pos_params_pat_subst (string, pat, rep, mflags)
+     char *string, *pat, *rep;
+     int mflags;
+{
+  WORD_LIST *save, *params;
+  WORD_DESC *w;
+  char *ret, *tt;
+
+  save = params = list_rest_of_args ();
+  if (save == 0)
+    return ((char *)NULL);
+
+  for ( ; params; params = params->next)
+    {
+      ret = pat_subst (params->word->word, pat, rep, mflags);
+      w = make_bare_word (ret);
+      dispose_word (params->word);
+      params->word = w;
+      FREE (ret);
+    }
+
+  if ((mflags & (MATCH_QUOTED|MATCH_STARSUB)) == (MATCH_QUOTED|MATCH_STARSUB))
+    ret = string_list_dollar_star (quote_list (save));
+  else
+    ret = string_list ((mflags & MATCH_QUOTED) ? quote_list (save) : save);
+  dispose_words (save);
+
+  return (ret);
+}
+
+/* Perform pattern substitution on VALUE, which is the expansion of
+   VARNAME.  PATSUB is an expression supplying the pattern to match
+   and the string to substitute.  QUOTED is a flags word containing
+   the type of quoting currently in effect. */
+static char *
+parameter_brace_patsub (varname, value, patsub, quoted)
+     char *varname, *value, *patsub;
+     int quoted;
+{
+  int vtype, mflags, starsub;
+  char *val, *temp, *pat, *rep, *p, *lpatsub, *tt;
+  SHELL_VAR *v;
+
+  if (value == 0)
+    return ((char *)NULL);
+
+  this_command_name = varname;
+
+  vtype = get_var_and_type (varname, value, quoted, &v, &val);
+  if (vtype == -1)
+    return ((char *)NULL);
+
+  starsub = vtype & VT_STARSUB;
+  vtype &= ~VT_STARSUB;
+
+  mflags = 0;
+  if (*patsub == '/')
+    {
+      mflags |= MATCH_GLOBREP;
+      patsub++;
+    }
+
+  /* Malloc this because expand_string_if_necessary or one of the expansion
+     functions in its call chain may free it on a substitution error. */
+  lpatsub = savestring (patsub);
+
+  if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+    mflags |= MATCH_QUOTED;
+
+  if (starsub)
+    mflags |= MATCH_STARSUB;
+
+  if (rep = quoted_strchr (lpatsub, '/', ST_BACKSL))
+    *rep++ = '\0';
+  else
+    rep = (char *)NULL;
+
+  if (rep && *rep == '\0')
+    rep = (char *)NULL;
+
+#if 0
+  /* Expand PAT and REP for command, variable and parameter, arithmetic,
+     and process substitution.  Also perform quote removal.  Do not
+     perform word splitting or filename generation. */
+  pat = expand_string_if_necessary (lpatsub, (quoted & ~Q_DOUBLE_QUOTES), expand_string_unsplit);
+#else
+  /* Perform the same expansions on the pattern as performed by the
+     pattern removal expansions. */
+  pat = getpattern (lpatsub, quoted, 1);
+#endif
+
+  if (rep)
+    {
+      if ((mflags & MATCH_QUOTED) == 0)
+       rep = expand_string_if_necessary (rep, quoted, expand_string_unsplit);
+      else
+       rep = expand_string_to_string_internal (rep, quoted, expand_string_unsplit);
+    }
+
+  p = pat;
+  if (pat && pat[0] == '#')
+    {
+      mflags |= MATCH_BEG;
+      p++;
+    }
+  else if (pat && pat[0] == '%')
+    {
+      mflags |= MATCH_END;
+      p++;
+    }
+  else
+    mflags |= MATCH_ANY;
+
+  /* OK, we now want to substitute REP for PAT in VAL.  If
+     flags & MATCH_GLOBREP is non-zero, the substitution is done
+     everywhere, otherwise only the first occurrence of PAT is
+     replaced.  The pattern matching code doesn't understand
+     CTLESC quoting CTLESC and CTLNUL so we use the dequoted variable
+     values passed in (VT_VARIABLE) so the pattern substitution
+     code works right.  We need to requote special chars after
+     we're done for VT_VARIABLE and VT_ARRAYMEMBER, and for the
+     other cases if QUOTED == 0, since the posparams and arrays
+     indexed by * or @ do special things when QUOTED != 0. */
+
+  switch (vtype)
+    {
+    case VT_VARIABLE:
+    case VT_ARRAYMEMBER:
+      temp = pat_subst (val, p, rep, mflags);
+      if (vtype == VT_VARIABLE)
+       FREE (val);
+      if (temp)
+       {
+         tt = quote_escapes (temp);
+         free (temp);
+         temp = tt;
+       }
+      break;
+    case VT_POSPARMS:
+      temp = pos_params_pat_subst (val, p, rep, mflags);
+      if (temp && (mflags & MATCH_QUOTED) == 0)
+       {
+         tt = quote_escapes (temp);
+         free (temp);
+         temp = tt;
+       }
+      break;
+#if defined (ARRAY_VARS)
+    case VT_ARRAYVAR:
+      temp = array_patsub (array_cell (v), p, rep, mflags);
+      if (temp && (mflags & MATCH_QUOTED) == 0)
+       {
+         tt = quote_escapes (temp);
+         free (temp);
+         temp = tt;
+       }
+      break;
+#endif
+    }
+
+  FREE (pat);
+  FREE (rep);
+  free (lpatsub);
+
+  return temp;
+}
+
+/****************************************************************/
+/*                                                             */
+/*     Functions to perform parameter expansion on a string    */
+/*                                                             */
+/****************************************************************/
+
+/* ${[#][!]name[[:]#[#]%[%]-=?+[word][:e1[:e2]]]} */
+static char *
+parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_dollar_at)
+     char *string;
+     int *indexp, quoted, *quoted_dollar_atp, *contains_dollar_at;
+{
+  int check_nullness, var_is_set, var_is_null, var_is_special;
+  int want_substring, want_indir, want_patsub;
+  char *name, *value, *temp, *temp1;
+  int t_index, sindex, c;
+  intmax_t number;
+
+  value = (char *)NULL;
+  var_is_set = var_is_null = var_is_special = check_nullness = 0;
+  want_substring = want_indir = want_patsub = 0;
+
+  sindex = *indexp;
+  t_index = ++sindex;
+  name = string_extract (string, &t_index, "#%:-=?+/}", EX_VARNAME);
+
+  /* If the name really consists of a special variable, then make sure
+     that we have the entire name.  We don't allow indirect references
+     to special variables except `#', `?', `@' and `*'. */
+  if ((sindex == t_index &&
+       (string[t_index] == '-' ||
+        string[t_index] == '?' ||
+        string[t_index] == '#')) ||
+      (sindex == t_index - 1 && string[sindex] == '!' &&
+       (string[t_index] == '#' ||
+        string[t_index] == '?' ||
+        string[t_index] == '@' ||
+        string[t_index] == '*')))
+    {
+      t_index++;
+      free (name);
+      temp1 = string_extract (string, &t_index, "#%:-=?+/}", 0);
+      name = (char *)xmalloc (3 + (strlen (temp1)));
+      *name = string[sindex];
+      if (string[sindex] == '!')
+       {
+         /* indirect reference of $#, $?, $@, or $* */
+         name[1] = string[sindex + 1];
+         strcpy (name + 2, temp1);
+       }
+      else     
+       strcpy (name + 1, temp1);
+      free (temp1);
+    }
+  sindex = t_index;
+
+  /* Find out what character ended the variable name.  Then
+     do the appropriate thing. */
+  if (c = string[sindex])
+    sindex++;
+
+  /* If c is followed by one of the valid parameter expansion
+     characters, move past it as normal.  If not, assume that
+     a substring specification is being given, and do not move
+     past it. */
+  if (c == ':' && VALID_PARAM_EXPAND_CHAR (string[sindex]))
+    {
+      check_nullness++;
+      if (c = string[sindex])
+       sindex++;
+    }
+  else if (c == ':' && string[sindex] != RBRACE)
+    want_substring = 1;
+  else if (c == '/' && string[sindex] != RBRACE)
+    want_patsub = 1;
+
+  /* Catch the valid and invalid brace expressions that made it through the
+     tests above. */
+  /* ${#-} is a valid expansion and means to take the length of $-.
+     Similarly for ${#?} and ${##}... */
+  if (name[0] == '#' && name[1] == '\0' && check_nullness == 0 &&
+       VALID_SPECIAL_LENGTH_PARAM (c) && string[sindex] == RBRACE)
+    {
+      name = (char *)xrealloc (name, 3);
+      name[1] = c;
+      name[2] = '\0';
+      c = string[sindex++];
+    }
+
+  /* ...but ${#%}, ${#:}, ${#=}, ${#+}, and ${#/} are errors. */
+  if (name[0] == '#' && name[1] == '\0' && check_nullness == 0 &&
+       member (c, "%:=+/") && string[sindex] == RBRACE)
+    {
+      temp = (char *)NULL;
+      goto bad_substitution;
+    }
+
+  /* Indirect expansion begins with a `!'.  A valid indirect expansion is
+     either a variable name, one of the positional parameters or a special
+     variable that expands to one of the positional parameters. */
+  want_indir = *name == '!' &&
+    (legal_variable_starter ((unsigned char)name[1]) || DIGIT (name[1])
+                                       || VALID_INDIR_PARAM (name[1]));
+
+  /* Determine the value of this variable. */
+
+  /* Check for special variables, directly referenced. */
+  if (SPECIAL_VAR (name, want_indir))
+    var_is_special++;
+
+  /* Check for special expansion things, like the length of a parameter */
+  if (*name == '#' && name[1])
+    {
+      /* If we are not pointing at the character just after the
+        closing brace, then we haven't gotten all of the name.
+        Since it begins with a special character, this is a bad
+        substitution.  Also check NAME for validity before trying
+        to go on. */
+      if (string[sindex - 1] != RBRACE || (valid_length_expression (name) == 0))
+       {
+         temp = (char *)NULL;
+         goto bad_substitution;
+       }
+
+      number = parameter_brace_expand_length (name);
+      free (name);
+
+      *indexp = sindex;
+      return ((number < 0) ? &expand_param_error : itos (number));
+    }
+
+  /* ${@} is identical to $@. */
+  if (name[0] == '@' && name[1] == '\0')
+    {
+      if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+       *quoted_dollar_atp = 1;
+
+      if (contains_dollar_at)
+       *contains_dollar_at = 1;
+    }
+
+  /* Process ${!PREFIX*} expansion. */
+  if (want_indir && string[sindex - 1] == RBRACE &&
+      (string[sindex - 2] == '*' || string[sindex - 2] == '@') &&
+      legal_variable_starter ((unsigned char) name[1]))
+    {
+      char **x;
+      WORD_LIST *xlist;
+
+      temp1 = savestring (name + 1);
+      number = strlen (temp1);
+      temp1[number - 1] = '\0';
+      x = all_variables_matching_prefix (temp1);
+      xlist = strvec_to_word_list (x, 0, 0);
+      if (string[sindex - 2] == '*')
+       temp = string_list_dollar_star (xlist);
+      else
+       {
+         temp = string_list_dollar_at (xlist, quoted);
+         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+           *quoted_dollar_atp = 1;
+         if (contains_dollar_at)
+           *contains_dollar_at = 1;
+       }
+      free (x);
+      free (xlist);
+      free (temp1);
+      *indexp = sindex;
+      return (temp);
+    }
+
+#if defined (ARRAY_VARS)      
+  /* Process ${!ARRAY[@]} and ${!ARRAY[*]} expansion. */ /* [ */
+  if (want_indir && string[sindex - 1] == RBRACE &&
+      string[sindex - 2] == ']' && valid_array_reference (name+1))
+    {
+      char *x, *x1;
+
+      temp1 = savestring (name + 1);
+      x = array_variable_name (temp1, &x1, (int *)0);  /* [ */
+      FREE (x);
+      if (ALL_ELEMENT_SUB (x1[0]) && x1[1] == ']')
+       {
+         temp = array_keys (temp1, quoted);
+         if (x1[0] == '@')
+           {
+             if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+               *quoted_dollar_atp = 1;
+             if (contains_dollar_at)
+               *contains_dollar_at = 1;
+           }       
+
+         free (temp1);
+         *indexp = sindex;
+         return (temp);
+       }
+
+      free (temp1);
+    }
+#endif /* ARRAY_VARS */
+      
+  /* Make sure that NAME is valid before trying to go on. */
+  if (valid_brace_expansion_word (want_indir ? name + 1 : name,
+                                       var_is_special) == 0)
+    {
+      temp = (char *)NULL;
+      goto bad_substitution;
+    }
+
+  if (want_indir)
+    temp = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
+  else
+    temp = parameter_brace_expand_word (name, var_is_special, quoted);
+
+#if defined (ARRAY_VARS)
+  if (valid_array_reference (name))
+    chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at);
+#endif
+
+  var_is_set = temp != (char *)0;
+  var_is_null = check_nullness && (var_is_set == 0 || *temp == 0);
+
+  /* Get the rest of the stuff inside the braces. */
+  if (c && c != RBRACE)
+    {
+      /* Extract the contents of the ${ ... } expansion
+        according to the Posix.2 rules. */
+      value = extract_dollar_brace_string (string, &sindex, quoted, 0);
+      if (string[sindex] == RBRACE)
+       sindex++;
+      else
+       goto bad_substitution;
+    }
+  else
+    value = (char *)NULL;
+
+  *indexp = sindex;
+
+  /* If this is a substring spec, process it and add the result. */
+  if (want_substring)
+    {
+      temp1 = parameter_brace_substring (name, temp, value, quoted);
+      FREE (name);
+      FREE (value);
+      FREE (temp);
+      return (temp1);
+    }
+  else if (want_patsub)
+    {
+      temp1 = parameter_brace_patsub (name, temp, value, quoted);
+      FREE (name);
+      FREE (value);
+      FREE (temp);
+      return (temp1);
+    }
+
+  /* Do the right thing based on which character ended the variable name. */
+  switch (c)
+    {
+    default:
+    case '\0':
+    bad_substitution:
+      report_error (_("%s: bad substitution"), string ? string : "??");
+      FREE (value);
+      FREE (temp);
+      free (name);
+      return &expand_param_error;
+
+    case RBRACE:
+      if (var_is_set == 0 && unbound_vars_is_error)
+       {
+         err_unboundvar (name);
+         FREE (value);
+         FREE (temp);
+         free (name);
+         last_command_exit_value = EXECUTION_FAILURE;
+         return (interactive_shell ? &expand_param_error : &expand_param_fatal);
+       }
+      break;
+
+    case '#':  /* ${param#[#]pattern} */
+    case '%':  /* ${param%[%]pattern} */
+      if (value == 0 || *value == '\0' || temp == 0 || *temp == '\0')
+       {
+         FREE (value);
+         break;
+       }
+      temp1 = parameter_brace_remove_pattern (name, temp, value, c, quoted);
+      free (temp);
+      free (value);
+      temp = temp1;
+      break;
+
+    case '-':
+    case '=':
+    case '?':
+    case '+':
+      if (var_is_set && var_is_null == 0)
+       {
+         /* If the operator is `+', we don't want the value of the named
+            variable for anything, just the value of the right hand side. */
+
+         if (c == '+')
+           {
+             /* XXX -- if we're double-quoted and the named variable is "$@",
+                       we want to turn off any special handling of "$@" --
+                       we're not using it, so whatever is on the rhs applies. */
+             if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+               *quoted_dollar_atp = 0;
+             if (contains_dollar_at)
+               *contains_dollar_at = 0;
+
+             FREE (temp);
+             if (value)
+               {
+                 temp = parameter_brace_expand_rhs (name, value, c,
+                                                    quoted,
+                                                    quoted_dollar_atp,
+                                                    contains_dollar_at);
+                 free (value);
+               }
+             else
+               temp = (char *)NULL;
+           }
+         else
+           {
+             FREE (value);
+           }
+         /* Otherwise do nothing; just use the value in TEMP. */
+       }
+      else     /* VAR not set or VAR is NULL. */
+       {
+         FREE (temp);
+         temp = (char *)NULL;
+         if (c == '=' && var_is_special)
+           {
+             report_error (_("$%s: cannot assign in this way"), name);
+             free (name);
+             free (value);
+             return &expand_param_error;
+           }
+         else if (c == '?')
+           {
+             parameter_brace_expand_error (name, value);
+             return (interactive_shell ? &expand_param_error : &expand_param_fatal);
+           }
+         else if (c != '+')
+           {
+             /* XXX -- if we're double-quoted and the named variable is "$@",
+                       we want to turn off any special handling of "$@" --
+                       we're not using it, so whatever is on the rhs applies. */
+             if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+               *quoted_dollar_atp = 0;
+             if (contains_dollar_at)
+               *contains_dollar_at = 0;
+
+             temp = parameter_brace_expand_rhs (name, value, c, quoted,
+                                                quoted_dollar_atp,
+                                                contains_dollar_at);
+           }
+         free (value);
+       }
+
+      break;
+    }
+  free (name);
+  return (temp);
+}
+
+/* Expand a single ${xxx} expansion.  The braces are optional.  When
+   the braces are used, parameter_brace_expand() does the work,
+   possibly calling param_expand recursively. */
+static char *
+param_expand (string, sindex, quoted, expanded_something,
+             contains_dollar_at, quoted_dollar_at_p, had_quoted_null_p,
+             pflags)
+     char *string;
+     int *sindex, quoted, *expanded_something, *contains_dollar_at;
+     int *quoted_dollar_at_p, *had_quoted_null_p, pflags;
+{
+  char *temp, *temp1, uerror[3];
+  int zindex, t_index, expok;
+  unsigned char c;
+  intmax_t number;
+  SHELL_VAR *var;
+  WORD_LIST *list;
+
+  zindex = *sindex;
+  c = string[++zindex];
+
+  temp = (char *)NULL;
+
+  /* Do simple cases first. Switch on what follows '$'. */
+  switch (c)
+    {
+    /* $0 .. $9? */
+    case '0':
+    case '1':
+    case '2':
+    case '3':
+    case '4':
+    case '5':
+    case '6':
+    case '7':
+    case '8':
+    case '9':
+      temp1 = dollar_vars[TODIGIT (c)];
+      if (unbound_vars_is_error && temp1 == (char *)NULL)
+       {
+         uerror[0] = '$';
+         uerror[1] = c;
+         uerror[2] = '\0';
+         err_unboundvar (uerror);
+         last_command_exit_value = EXECUTION_FAILURE;
+         return (interactive_shell ? &expand_param_error : &expand_param_fatal);
+       }
+#if 1
+      if (temp1)
+       temp = (*temp1 && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
+                 ? quote_string (temp1)
+                 : quote_escapes (temp1);
+      else
+       temp = (char *)NULL;
+#else
+      temp = temp1 ? quote_escapes (temp1) : (char *)NULL;
+#endif
+      break;
+
+    /* $$ -- pid of the invoking shell. */
+    case '$':
+      temp = itos (dollar_dollar_pid);
+      break;
+
+    /* $# -- number of positional parameters. */
+    case '#':
+      temp = itos (number_of_args ());
+      break;
+
+    /* $? -- return value of the last synchronous command. */
+    case '?':
+      temp = itos (last_command_exit_value);
+      break;
+
+    /* $- -- flags supplied to the shell on invocation or by `set'. */
+    case '-':
+      temp = which_set_flags ();
+      break;
+
+      /* $! -- Pid of the last asynchronous command. */
+    case '!':
+      /* If no asynchronous pids have been created, expand to nothing.
+        If `set -u' has been executed, and no async processes have
+        been created, this is an expansion error. */
+      if (last_asynchronous_pid == NO_PID)
+       {
+         if (expanded_something)
+           *expanded_something = 0;
+         temp = (char *)NULL;
+         if (unbound_vars_is_error)
+           {
+             uerror[0] = '$';
+             uerror[1] = c;
+             uerror[2] = '\0';
+             err_unboundvar (uerror);
+             last_command_exit_value = EXECUTION_FAILURE;
+             return (interactive_shell ? &expand_param_error : &expand_param_fatal);
+           }
+       }
+      else
+       temp = itos (last_asynchronous_pid);
+      break;
+
+    /* The only difference between this and $@ is when the arg is quoted. */
+    case '*':          /* `$*' */
+      list = list_rest_of_args ();
+
+      /* If there are no command-line arguments, this should just
+        disappear if there are other characters in the expansion,
+        even if it's quoted. */
+      if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && list == 0)
+       temp = (char *)NULL;
+      else if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+       {
+         /* If we have "$*" we want to make a string of the positional
+            parameters, separated by the first character of $IFS, and
+            quote the whole string, including the separators.  If IFS
+            is unset, the parameters are separated by ' '; if $IFS is
+            null, the parameters are concatenated. */
+#if 0
+         temp = string_list_dollar_star (list);
+#else
+         temp = (quoted & Q_DOUBLE_QUOTES) ? string_list_dollar_star (list) : string_list (list);
+#endif
+         temp1 = quote_string (temp);
+         free (temp);
+         temp = temp1;
+       }
+      else
+       {
+         /* If the $* is not quoted it is identical to $@ */
+         temp = string_list_dollar_at (list, quoted);
+         if (expand_no_split_dollar_star == 0 && contains_dollar_at)
+           *contains_dollar_at = 1;
+       }
+
+      dispose_words (list);
+      break;
+
+    /* When we have "$@" what we want is "$1" "$2" "$3" ... This
+       means that we have to turn quoting off after we split into
+       the individually quoted arguments so that the final split
+       on the first character of $IFS is still done.  */
+    case '@':          /* `$@' */
+      list = list_rest_of_args ();
+
+      /* We want to flag the fact that we saw this.  We can't turn
+        off quoting entirely, because other characters in the
+        string might need it (consider "\"$@\""), but we need some
+        way to signal that the final split on the first character
+        of $IFS should be done, even though QUOTED is 1. */
+      if (quoted_dollar_at_p && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
+       *quoted_dollar_at_p = 1;
+      if (contains_dollar_at)
+       *contains_dollar_at = 1;
+
+      /* We want to separate the positional parameters with the first
+        character of $IFS in case $IFS is something other than a space.
+        We also want to make sure that splitting is done no matter what --
+        according to POSIX.2, this expands to a list of the positional
+        parameters no matter what IFS is set to. */
+      temp = string_list_dollar_at (list, quoted);
+
+      dispose_words (list);
+      break;
+
+    case LBRACE:
+      temp = parameter_brace_expand (string, &zindex, quoted,
+                                    quoted_dollar_at_p,
+                                    contains_dollar_at);
+      if (temp == &expand_param_error || temp == &expand_param_fatal)
+       return (temp);
+
+      /* XXX */
+      /* Quoted nulls should be removed if there is anything else
+        in the string. */
+      /* Note that we saw the quoted null so we can add one back at
+        the end of this function if there are no other characters
+        in the string, discard TEMP, and go on.  The exception to
+        this is when we have "${@}" and $1 is '', since $@ needs
+        special handling. */
+      if (temp && QUOTED_NULL (temp))
+       {
+         if (had_quoted_null_p)
+           *had_quoted_null_p = 1;
+         if (*quoted_dollar_at_p == 0)
+           {
+             free (temp);
+             temp = (char *)NULL;
+           }
+           
+       }
+
+      goto return0;
+
+    /* Do command or arithmetic substitution. */
+    case LPAREN:
+      /* We have to extract the contents of this paren substitution. */
+      t_index = zindex + 1;
+      temp = extract_command_subst (string, &t_index);
+      zindex = t_index;
+
+      /* For Posix.2-style `$(( ))' arithmetic substitution,
+        extract the expression and pass it to the evaluator. */
+      if (temp && *temp == LPAREN)
+       {
+         char *temp2;
+         temp1 = temp + 1;
+         temp2 = savestring (temp1);
+         t_index = strlen (temp2) - 1;
+
+         if (temp2[t_index] != RPAREN)
+           {
+             free (temp2);
+             goto comsub;
+           }
+
+         /* Cut off ending `)' */
+         temp2[t_index] = '\0';
+
+         /* Expand variables found inside the expression. */
+         temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
+         free (temp2);
+
+arithsub:
+         /* No error messages. */
+         this_command_name = (char *)NULL;
+         number = evalexp (temp1, &expok);
+         free (temp);
+         free (temp1);
+         if (expok == 0)
+           {
+             if (interactive_shell == 0 && posixly_correct)
+               {
+                 last_command_exit_value = EXECUTION_FAILURE;
+                 return (&expand_param_fatal);
+               }
+             else
+               return (&expand_param_error);
+           }
+         temp = itos (number);
+         break;
+       }
+
+comsub:
+      if (pflags & PF_NOCOMSUB)
+       /* we need zindex+1 because string[zindex] == RPAREN */
+       temp1 = substring (string, *sindex, zindex+1);
+      else
+       temp1 = command_substitute (temp, quoted);
+      FREE (temp);
+      temp = temp1;
+      break;
+
+    /* Do POSIX.2d9-style arithmetic substitution.  This will probably go
+       away in a future bash release. */
+    case '[':
+      /* Extract the contents of this arithmetic substitution. */
+      t_index = zindex + 1;
+      temp = extract_arithmetic_subst (string, &t_index);
+      zindex = t_index;
+
+       /* Do initial variable expansion. */
+      temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string);
+
+      goto arithsub;
+
+    default:
+      /* Find the variable in VARIABLE_LIST. */
+      temp = (char *)NULL;
+
+      for (t_index = zindex; (c = string[zindex]) && legal_variable_char (c); zindex++)
+       ;
+      temp1 = (zindex > t_index) ? substring (string, t_index, zindex) : (char *)NULL;
+
+      /* If this isn't a variable name, then just output the `$'. */
+      if (temp1 == 0 || *temp1 == '\0')
+       {
+         FREE (temp1);
+         temp = (char *)xmalloc (2);
+         temp[0] = '$';
+         temp[1] = '\0';
+         if (expanded_something)
+           *expanded_something = 0;
+         goto return0;
+       }
+
+      /* If the variable exists, return its value cell. */
+      var = find_variable (temp1);
+
+      if (var && invisible_p (var) == 0 && var_isset (var))
+       {
+#if defined (ARRAY_VARS)
+         if (array_p (var))
+           {
+             temp = array_reference (array_cell (var), 0);
+             if (temp)
+               temp = (*temp && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
+                         ? quote_string (temp)
+                         : quote_escapes (temp);
+             else if (unbound_vars_is_error)
+               goto unbound_variable;
+           }
+         else
+#endif
+           {
+             temp = value_cell (var);
+
+             temp = (*temp && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
+                       ? quote_string (temp)
+                       : quote_escapes (temp);
+           }
+
+         free (temp1);
+
+         goto return0;
+       }
+
+      temp = (char *)NULL;
+
+unbound_variable:
+      if (unbound_vars_is_error)
+       err_unboundvar (temp1);
+      else
+       {
+         free (temp1);
+         goto return0;
+       }
+
+      free (temp1);
+      last_command_exit_value = EXECUTION_FAILURE;
+      return ((unbound_vars_is_error && interactive_shell == 0)
+               ? &expand_param_fatal
+               : &expand_param_error);
+    }
+
+  if (string[zindex])
+    zindex++;
+
+return0:
+  *sindex = zindex;
+  return (temp);
+}
+
+/* Make a word list which is the result of parameter and variable
+   expansion, command substitution, arithmetic substitution, and
+   quote removal of WORD.  Return a pointer to a WORD_LIST which is
+   the result of the expansion.  If WORD contains a null word, the
+   word list returned is also null.
+
+   QUOTED contains flag values defined in shell.h.
+
+   ISEXP is used to tell expand_word_internal that the word should be
+   treated as the result of an expansion.  This has implications for
+   how IFS characters in the word are treated.
+
+   CONTAINS_DOLLAR_AT and EXPANDED_SOMETHING are return values; when non-null
+   they point to an integer value which receives information about expansion.
+   CONTAINS_DOLLAR_AT gets non-zero if WORD contained "$@", else zero.
+   EXPANDED_SOMETHING get non-zero if WORD contained any parameter expansions,
+   else zero.
+
+   This only does word splitting in the case of $@ expansion.  In that
+   case, we split on ' '. */
+
+/* Values for the local variable quoted_state. */
+#define UNQUOTED        0
+#define PARTIALLY_QUOTED 1
+#define WHOLLY_QUOTED    2
+
+static WORD_LIST *
+expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_something)
+     WORD_DESC *word;
+     int quoted, isexp;
+     int *contains_dollar_at;
+     int *expanded_something;
+{
+  WORD_LIST *list;
+  WORD_DESC *tword;
+
+  /* The intermediate string that we build while expanding. */
+  char *istring;
+
+  /* The current size of the above object. */
+  int istring_size;
+
+  /* Index into ISTRING. */
+  int istring_index;
+
+  /* Temporary string storage. */
+  char *temp, *temp1;
+
+  /* The text of WORD. */
+  register char *string;
+
+  /* The size of STRING. */
+  size_t string_size;
+
+  /* The index into STRING. */
+  int sindex;
+
+  /* This gets 1 if we see a $@ while quoted. */
+  int quoted_dollar_at;
+
+  /* One of UNQUOTED, PARTIALLY_QUOTED, or WHOLLY_QUOTED, depending on
+     whether WORD contains no quoting characters, a partially quoted
+     string (e.g., "xx"ab), or is fully quoted (e.g., "xxab"). */
+  int quoted_state;
+
+  int had_quoted_null;
+  int has_dollar_at;
+  int tflag;
+
+  register unsigned char c;    /* Current character. */
+  int t_index;                 /* For calls to string_extract_xxx. */
+
+  char twochars[2];
+
+  DECLARE_MBSTATE;
+
+  istring = (char *)xmalloc (istring_size = DEFAULT_INITIAL_ARRAY_SIZE);
+  istring[istring_index = 0] = '\0';
+  quoted_dollar_at = had_quoted_null = has_dollar_at = 0;
+  quoted_state = UNQUOTED;
+
+  string = word->word;
+  if (string == 0)
+    goto finished_with_string;
+  string_size = strlen (string);
+
+  if (contains_dollar_at)
+    *contains_dollar_at = 0;
+
+  /* Begin the expansion. */
+
+  for (sindex = 0; ;)
+    {
+      c = string[sindex];
+
+      /* Case on toplevel character. */
+      switch (c)
+       {
+       case '\0':
+         goto finished_with_string;
+
+       case CTLESC:
+         sindex++;
+#if HANDLE_MULTIBYTE
+         if (MB_CUR_MAX > 1 && string[sindex])
+           {
+             SADD_MBQCHAR_BODY(temp, string, sindex, string_size);
+           }
+         else
+#endif
+           {
+             temp = (char *)xmalloc (3);
+             temp[0] = CTLESC;
+             temp[1] = c = string[sindex];
+             temp[2] = '\0';
+           }
+
+dollar_add_string:
+         if (string[sindex])
+           sindex++;
+
+add_string:
+         if (temp)
+           {
+             istring = sub_append_string (temp, istring, &istring_index, &istring_size);
+             temp = (char *)0;
+           }
+
+         break;
+
+#if defined (PROCESS_SUBSTITUTION)
+         /* Process substitution. */
+       case '<':
+       case '>':
+         {
+           if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || posixly_correct)
+             {
+               sindex--;       /* add_character: label increments sindex */
+               goto add_character;
+             }
+           else
+             t_index = sindex + 1; /* skip past both '<' and LPAREN */
+
+           temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/
+           sindex = t_index;
+
+           /* If the process substitution specification is `<()', we want to
+              open the pipe for writing in the child and produce output; if
+              it is `>()', we want to open the pipe for reading in the child
+              and consume input. */
+           temp = temp1 ? process_substitute (temp1, (c == '>')) : (char *)0;
+
+           FREE (temp1);
+
+           goto dollar_add_string;
+         }
+#endif /* PROCESS_SUBSTITUTION */
+
+       case '$':
+         if (expanded_something)
+           *expanded_something = 1;
+
+         has_dollar_at = 0;
+         temp = param_expand (string, &sindex, quoted, expanded_something,
+                              &has_dollar_at, &quoted_dollar_at,
+                              &had_quoted_null,
+                              (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0);
+
+         if (temp == &expand_param_error || temp == &expand_param_fatal)
+           {
+             free (string);
+             free (istring);
+             return ((temp == &expand_param_error) ? &expand_word_error
+                                                   : &expand_word_fatal);
+           }
+         if (contains_dollar_at && has_dollar_at)
+           *contains_dollar_at = 1;
+         goto add_string;
+         break;
+
+       case '`':               /* Backquoted command substitution. */
+         {
+           t_index = sindex++;
+
+           if (expanded_something)
+             *expanded_something = 1;
+
+           temp = string_extract (string, &sindex, "`", 0);
+           if (word->flags & W_NOCOMSUB)
+             /* sindex + 1 because string[sindex] == '`' */
+             temp1 = substring (string, t_index, sindex + 1);
+           else
+             {
+               de_backslash (temp);
+               temp1 = command_substitute (temp, quoted);
+             }
+           FREE (temp);
+           temp = temp1;
+           goto dollar_add_string;
+         }
+
+       case '\\':
+         if (string[sindex + 1] == '\n')
+           {
+             sindex += 2;
+             continue;
+           }
+
+         c = string[++sindex];
+
+         if (quoted & Q_HERE_DOCUMENT)
+           tflag = CBSHDOC;
+         else if (quoted & Q_DOUBLE_QUOTES)
+           tflag = CBSDQUOTE;
+         else
+           tflag = 0;
+
+         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && ((sh_syntaxtab[c] & tflag) == 0))
+           {
+             SCOPY_CHAR_I (twochars, '\\', c, string, sindex, string_size);
+           }
+         else if (c == 0)
+           {
+             c = CTLNUL;
+             sindex--;         /* add_character: label increments sindex */
+             goto add_character;
+           }
+         else
+           {
+             SCOPY_CHAR_I (twochars, CTLESC, c, string, sindex, string_size);
+           }
+
+         sindex++;
+add_twochars:
+         /* BEFORE jumping here, we need to increment sindex if appropriate */
+         RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size,
+                                 DEFAULT_ARRAY_SIZE);
+         istring[istring_index++] = twochars[0];
+         istring[istring_index++] = twochars[1];
+         istring[istring_index] = '\0';
+
+         break;
+
+       case '"':
+#if 0
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_PATQUOTE))
+#else
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+#endif
+           goto add_character;
+
+         t_index = ++sindex;
+         temp = string_extract_double_quoted (string, &sindex, 0);
+
+         /* If the quotes surrounded the entire string, then the
+            whole word was quoted. */
+         quoted_state = (t_index == 1 && string[sindex] == '\0')
+                           ? WHOLLY_QUOTED
+                           : PARTIALLY_QUOTED;
+
+         if (temp && *temp)
+           {
+             tword = make_word (temp);         /* XXX */
+             free (temp);
+             temp = (char *)NULL;
+
+             has_dollar_at = 0;
+             list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &has_dollar_at, (int *)NULL);
+
+             if (list == &expand_word_error || list == &expand_word_fatal)
+               {
+                 free (istring);
+                 free (string);
+                 /* expand_word_internal has already freed temp_word->word
+                    for us because of the way it prints error messages. */
+                 tword->word = (char *)NULL;
+                 dispose_word (tword);
+                 return list;
+               }
+
+             dispose_word (tword);
+
+             /* "$@" (a double-quoted dollar-at) expands into nothing,
+                not even a NULL word, when there are no positional
+                parameters. */
+             if (list == 0 && has_dollar_at)
+               {
+                 quoted_dollar_at++;
+                 break;
+               }
+
+             /* If we get "$@", we know we have expanded something, so we
+                need to remember it for the final split on $IFS.  This is
+                a special case; it's the only case where a quoted string
+                can expand into more than one word.  It's going to come back
+                from the above call to expand_word_internal as a list with
+                a single word, in which all characters are quoted and
+                separated by blanks.  What we want to do is to turn it back
+                into a list for the next piece of code. */
+             if (list)
+               dequote_list (list);
+
+             if (has_dollar_at)
+               {
+                 quoted_dollar_at++;
+                 if (contains_dollar_at)
+                   *contains_dollar_at = 1;
+                 if (expanded_something)
+                   *expanded_something = 1;
+               }
+           }
+         else
+           {
+             /* What we have is "".  This is a minor optimization. */
+             FREE (temp);
+             list = (WORD_LIST *)NULL;
+           }
+
+         /* The code above *might* return a list (consider the case of "$@",
+            where it returns "$1", "$2", etc.).  We can't throw away the
+            rest of the list, and we have to make sure each word gets added
+            as quoted.  We test on tresult->next:  if it is non-NULL, we
+            quote the whole list, save it to a string with string_list, and
+            add that string. We don't need to quote the results of this
+            (and it would be wrong, since that would quote the separators
+            as well), so we go directly to add_string. */
+         if (list)
+           {
+             if (list->next)
+               {
+                 /* Testing quoted_dollar_at makes sure that "$@" is
+                    split correctly when $IFS does not contain a space. */
+                 temp = quoted_dollar_at
+                               ? string_list_dollar_at (list, Q_DOUBLE_QUOTES)
+                               : string_list (quote_list (list));
+                 dispose_words (list);
+                 goto add_string;
+               }
+             else
+               {
+                 temp = savestring (list->word->word);
+                 dispose_words (list);
+#if 1
+                 /* If the string is not a quoted null string, we want
+                    to remove any embedded unquoted CTLNUL characters.
+                    We do not want to turn quoted null strings back into
+                    the empty string, though.  We do this because we
+                    want to remove any quoted nulls from expansions that
+                    contain other characters.  For example, if we have
+                    x"$*"y or "x$*y" and there are no positional parameters,
+                    the $* should expand into nothing. */
+                 /* HOWEVER, this fails if the string contains a literal
+                    CTLNUL or CTLNUL is contained in the (non-null) expansion
+                    of some variable.  I'm not sure what to do about this
+                    yet.  There has to be some way to indicate the difference
+                    between the two.  An auxiliary data structure might be
+                    necessary. */
+                 if (QUOTED_NULL (temp) == 0)
+                   remove_quoted_nulls (temp); /* XXX */
+#endif
+               }
+           }
+         else
+           temp = (char *)NULL;
+
+         /* We do not want to add quoted nulls to strings that are only
+            partially quoted; we can throw them away. */
+         if (temp == 0 && quoted_state == PARTIALLY_QUOTED)
+           continue;
+
+       add_quoted_string:
+
+         if (temp)
+           {
+             temp1 = temp;
+             temp = quote_string (temp);
+             free (temp1);
+             goto add_string;
+           }
+         else
+           {
+             /* Add NULL arg. */
+             c = CTLNUL;
+             sindex--;         /* add_character: label increments sindex */
+             goto add_character;
+           }
+
+         /* break; */
+
+       case '\'':
+#if 0
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_PATQUOTE))
+#else
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+#endif
+           goto add_character;
+
+         t_index = ++sindex;
+         temp = string_extract_single_quoted (string, &sindex);
+
+         /* If the entire STRING was surrounded by single quotes,
+            then the string is wholly quoted. */
+         quoted_state = (t_index == 1 && string[sindex] == '\0')
+                           ? WHOLLY_QUOTED
+                           : PARTIALLY_QUOTED;
+
+         /* If all we had was '', it is a null expansion. */
+         if (*temp == '\0')
+           {
+             free (temp);
+             temp = (char *)NULL;
+           }
+         else
+           remove_quoted_escapes (temp);       /* ??? */
+
+         /* We do not want to add quoted nulls to strings that are only
+            partially quoted; such nulls are discarded. */
+         if (temp == 0 && (quoted_state == PARTIALLY_QUOTED))
+           continue;
+
+         /* If we have a quoted null expansion, add a quoted NULL to istring. */
+         if (temp == 0)
+           {
+             c = CTLNUL;
+             sindex--;         /* add_character: label increments sindex */
+             goto add_character;
+           }
+         else
+           goto add_quoted_string;
+
+         /* break; */
+
+       default:
+         /* This is the fix for " $@ " */
+         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (isexp == 0 && isifs (c)))
+           {
+             if (string[sindex])       /* from old goto dollar_add_string */
+               sindex++;
+             if (c == 0)
+               {
+                 c = CTLNUL;
+                 goto add_character;
+               }
+             else
+               {
+#if HANDLE_MULTIBYTE
+                 if (MB_CUR_MAX > 1)
+                   sindex--;
+
+                 if (MB_CUR_MAX > 1)
+                   {
+                     SADD_MBQCHAR_BODY(temp, string, sindex, string_size);
+                   }
+                 else
+#endif
+                   {
+                     twochars[0] = CTLESC;
+                     twochars[1] = c;
+                     goto add_twochars;
+                   }
+               }
+           }
+
+         SADD_MBCHAR (temp, string, sindex, string_size);
+
+       add_character:
+         RESIZE_MALLOCED_BUFFER (istring, istring_index, 1, istring_size,
+                                 DEFAULT_ARRAY_SIZE);
+         istring[istring_index++] = c;
+         istring[istring_index] = '\0';
+
+         /* Next character. */
+         sindex++;
+       }
+    }
+
+finished_with_string:
+  /* OK, we're ready to return.  If we have a quoted string, and
+     quoted_dollar_at is not set, we do no splitting at all; otherwise
+     we split on ' '.  The routines that call this will handle what to
+     do if nothing has been expanded. */
+
+  /* Partially and wholly quoted strings which expand to the empty
+     string are retained as an empty arguments.  Unquoted strings
+     which expand to the empty string are discarded.  The single
+     exception is the case of expanding "$@" when there are no
+     positional parameters.  In that case, we discard the expansion. */
+
+  /* Because of how the code that handles "" and '' in partially
+     quoted strings works, we need to make ISTRING into a QUOTED_NULL
+     if we saw quoting characters, but the expansion was empty.
+     "" and '' are tossed away before we get to this point when
+     processing partially quoted strings.  This makes "" and $xxx""
+     equivalent when xxx is unset.  We also look to see whether we
+     saw a quoted null from a ${} expansion and add one back if we
+     need to. */
+
+  /* If we expand to nothing and there were no single or double quotes
+     in the word, we throw it away.  Otherwise, we return a NULL word.
+     The single exception is for $@ surrounded by double quotes when
+     there are no positional parameters.  In that case, we also throw
+     the word away. */
+
+  if (*istring == '\0')
+    {
+      if (quoted_dollar_at == 0 && (had_quoted_null || quoted_state == PARTIALLY_QUOTED))
+       {
+         istring[0] = CTLNUL;
+         istring[1] = '\0';
+         tword = make_bare_word (istring);
+         list = make_word_list (tword, (WORD_LIST *)NULL);
+         if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+           tword->flags |= W_QUOTED;
+       }
+      /* According to sh, ksh, and Posix.2, if a word expands into nothing
+        and a double-quoted "$@" appears anywhere in it, then the entire
+        word is removed. */
+      else  if (quoted_state == UNQUOTED || quoted_dollar_at)
+       list = (WORD_LIST *)NULL;
+#if 0
+      else
+       {
+         tword = make_bare_word (istring);
+         list = make_word_list (tword, (WORD_LIST *)NULL);
+         if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+           tword->flags |= W_QUOTED;
+       }
+#else
+      else
+       list = (WORD_LIST *)NULL;
+#endif
+    }
+  else if (word->flags & W_NOSPLIT)
+    {
+      tword = make_bare_word (istring);
+      list = make_word_list (tword, (WORD_LIST *)NULL);
+      if (word->flags & W_ASSIGNMENT)
+       tword->flags |= W_ASSIGNMENT;   /* XXX */
+      if (word->flags & W_NOGLOB)
+       tword->flags |= W_NOGLOB;       /* XXX */
+      if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+       tword->flags |= W_QUOTED;
+    }
+  else
+    {
+      char *ifs_chars;
+
+      ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL;
+
+      /* If we have $@, we need to split the results no matter what.  If
+        IFS is unset or NULL, string_list_dollar_at has separated the
+        positional parameters with a space, so we split on space (we have
+        set ifs_chars to " \t\n" above if ifs is unset).  If IFS is set,
+        string_list_dollar_at has separated the positional parameters
+        with the first character of $IFS, so we split on $IFS. */
+      if (has_dollar_at && ifs_chars)
+       list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
+      else
+       {
+         tword = make_bare_word (istring);
+         list = make_word_list (tword, (WORD_LIST *)NULL);
+         if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED))
+           tword->flags |= W_QUOTED;
+         if (word->flags & W_ASSIGNMENT)
+           tword->flags |= W_ASSIGNMENT;
+         if (word->flags & W_NOGLOB)
+           tword->flags |= W_NOGLOB;
+       }
+    }
+
+  free (istring);
+  return (list);
+}
+
+/* **************************************************************** */
+/*                                                                 */
+/*                Functions for Quote Removal                      */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Perform quote removal on STRING.  If QUOTED > 0, assume we are obeying the
+   backslash quoting rules for within double quotes or a here document. */
+char *
+string_quote_removal (string, quoted)
+     char *string;
+     int quoted;
+{
+  size_t slen;
+  char *r, *result_string, *temp, *send;
+  int sindex, tindex, dquote;
+  unsigned char c;
+  DECLARE_MBSTATE;
+
+  /* The result can be no longer than the original string. */
+  slen = strlen (string);
+  send = string + slen;
+
+  r = result_string = (char *)xmalloc (slen + 1);
+
+  for (dquote = sindex = 0; c = string[sindex];)
+    {
+      switch (c)
+       {
+       case '\\':
+         c = string[++sindex];
+         if (((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || dquote) && (sh_syntaxtab[c] & CBSDQUOTE) == 0)
+           *r++ = '\\';
+         /* FALLTHROUGH */
+
+       default:
+         SCOPY_CHAR_M (r, string, send, sindex);
+         break;
+
+       case '\'':
+         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || dquote)
+           {
+             *r++ = c;
+             sindex++;
+             break;
+           }
+         tindex = sindex + 1;
+         temp = string_extract_single_quoted (string, &tindex);
+         if (temp)
+           {
+             strcpy (r, temp);
+             r += strlen (r);
+             free (temp);
+           }
+         sindex = tindex;
+         break;
+
+       case '"':
+         dquote = 1 - dquote;
+         sindex++;
+         break;
+       }
+    }
+    *r = '\0';
+    return (result_string);
+}
+
+#if 0
+/* UNUSED */
+/* Perform quote removal on word WORD.  This allocates and returns a new
+   WORD_DESC *. */
+WORD_DESC *
+word_quote_removal (word, quoted)
+     WORD_DESC *word;
+     int quoted;
+{
+  WORD_DESC *w;
+  char *t;
+
+  t = string_quote_removal (word->word, quoted);
+  w = make_bare_word (t);
+  free (t);
+  return (w);
+}
+
+/* Perform quote removal on all words in LIST.  If QUOTED is non-zero,
+   the members of the list are treated as if they are surrounded by
+   double quotes.  Return a new list, or NULL if LIST is NULL. */
+WORD_LIST *
+word_list_quote_removal (list, quoted)
+     WORD_LIST *list;
+     int quoted;
+{
+  WORD_LIST *result, *t, *tresult;
+
+  for (t = list, result = (WORD_LIST *)NULL; t; t = t->next)
+    {
+      tresult = make_word_list (word_quote_removal (t->word, quoted), (WORD_LIST *)NULL);
+      result = (WORD_LIST *) list_append (result, tresult);
+    }
+  return (result);
+}
+#endif
+
+/*******************************************
+ *                                        *
+ *    Functions to perform word splitting  *
+ *                                        *
+ *******************************************/
+
+void
+setifs (v)
+     SHELL_VAR *v;
+{
+  char *t;
+  unsigned char uc;
+
+  ifs_var = v;
+  ifs_value = v ? value_cell (v) : " \t\n";
+
+  /* Should really merge ifs_cmap with sh_syntaxtab. */
+  memset (ifs_cmap, '\0', sizeof (ifs_cmap));
+  for (t = ifs_value ; t && *t; t++)
+    {
+      uc = *t;
+      ifs_cmap[uc] = 1;
+    }
+
+  ifs_firstc = ifs_value ? *ifs_value : 0;
+}
+
+char *
+getifs ()
+{
+  return ifs_value;
+}
+
+/* This splits a single word into a WORD LIST on $IFS, but only if the word
+   is not quoted.  list_string () performs quote removal for us, even if we
+   don't do any splitting. */
+WORD_LIST *
+word_split (w, ifs_chars)
+     WORD_DESC *w;
+     char *ifs_chars;
+{
+  WORD_LIST *result;
+
+  if (w)
+    {
+      char *xifs;
+
+      xifs = ((w->flags & W_QUOTED) || ifs_chars == 0) ? "" : ifs_chars;
+      result = list_string (w->word, xifs, w->flags & W_QUOTED);
+    }
+  else
+    result = (WORD_LIST *)NULL;
+
+  return (result);
+}
+
+/* Perform word splitting on LIST and return the RESULT.  It is possible
+   to return (WORD_LIST *)NULL. */
+static WORD_LIST *
+word_list_split (list)
+     WORD_LIST *list;
+{
+  WORD_LIST *result, *t, *tresult;
+
+  for (t = list, result = (WORD_LIST *)NULL; t; t = t->next)
+    {
+      tresult = word_split (t->word, ifs_value);
+      result = (WORD_LIST *) list_append (result, tresult);
+    }
+  return (result);
+}
+
+/**************************************************
+ *                                               *
+ *    Functions to expand an entire WORD_LIST    *
+ *                                               *
+ **************************************************/
+
+/* Do any word-expansion-specific cleanup and jump to top_level */
+static void
+exp_jump_to_top_level (v)
+     int v;
+{
+  /* Cleanup code goes here. */
+  expand_no_split_dollar_star = 0;     /* XXX */
+  expanding_redir = 0;
+
+  jump_to_top_level (v);
+}
+
+/* Put NLIST (which is a WORD_LIST * of only one element) at the front of
+   ELIST, and set ELIST to the new list. */
+#define PREPEND_LIST(nlist, elist) \
+       do { nlist->next = elist; elist = nlist; } while (0)
+
+/* Separate out any initial variable assignments from TLIST.  If set -k has
+   been executed, remove all assignment statements from TLIST.  Initial
+   variable assignments and other environment assignments are placed
+   on SUBST_ASSIGN_VARLIST. */
+static WORD_LIST *
+separate_out_assignments (tlist)
+     WORD_LIST *tlist;
+{
+  register WORD_LIST *vp, *lp;
+
+  if (!tlist)
+    return ((WORD_LIST *)NULL);
+
+  if (subst_assign_varlist)
+    dispose_words (subst_assign_varlist);      /* Clean up after previous error */
+
+  subst_assign_varlist = (WORD_LIST *)NULL;
+  vp = lp = tlist;
+
+  /* Separate out variable assignments at the start of the command.
+     Loop invariant: vp->next == lp
+     Loop postcondition:
+       lp = list of words left after assignment statements skipped
+       tlist = original list of words
+  */
+  while (lp && (lp->word->flags & W_ASSIGNMENT))
+    {
+      vp = lp;
+      lp = lp->next;
+    }
+
+  /* If lp != tlist, we have some initial assignment statements.
+     We make SUBST_ASSIGN_VARLIST point to the list of assignment
+     words and TLIST point to the remaining words.  */
+  if (lp != tlist)
+    {
+      subst_assign_varlist = tlist;
+      /* ASSERT(vp->next == lp); */
+      vp->next = (WORD_LIST *)NULL;    /* terminate variable list */
+      tlist = lp;                      /* remainder of word list */
+    }
+
+  /* vp == end of variable list */
+  /* tlist == remainder of original word list without variable assignments */
+  if (!tlist)
+    /* All the words in tlist were assignment statements */
+    return ((WORD_LIST *)NULL);
+
+  /* ASSERT(tlist != NULL); */
+  /* ASSERT((tlist->word->flags & W_ASSIGNMENT) == 0); */
+
+  /* If the -k option is in effect, we need to go through the remaining
+     words, separate out the assignment words, and place them on
+     SUBST_ASSIGN_VARLIST. */
+  if (place_keywords_in_env)
+    {
+      WORD_LIST *tp;   /* tp == running pointer into tlist */
+
+      tp = tlist;
+      lp = tlist->next;
+
+      /* Loop Invariant: tp->next == lp */
+      /* Loop postcondition: tlist == word list without assignment statements */
+      while (lp)
+       {
+         if (lp->word->flags & W_ASSIGNMENT)
+           {
+             /* Found an assignment statement, add this word to end of
+                subst_assign_varlist (vp). */
+             if (!subst_assign_varlist)
+               subst_assign_varlist = vp = lp;
+             else
+               {
+                 vp->next = lp;
+                 vp = lp;
+               }
+
+             /* Remove the word pointed to by LP from TLIST. */
+             tp->next = lp->next;
+             /* ASSERT(vp == lp); */
+             lp->next = (WORD_LIST *)NULL;
+             lp = tp->next;
+           }
+         else
+           {
+             tp = lp;
+             lp = lp->next;
+           }
+       }
+    }
+  return (tlist);
+}
+
+#define WEXP_VARASSIGN 0x001
+#define WEXP_BRACEEXP  0x002
+#define WEXP_TILDEEXP  0x004
+#define WEXP_PARAMEXP  0x008
+#define WEXP_PATHEXP   0x010
+
+/* All of the expansions, including variable assignments at the start of
+   the list. */
+#define WEXP_ALL       (WEXP_VARASSIGN|WEXP_BRACEEXP|WEXP_TILDEEXP|WEXP_PARAMEXP|WEXP_PATHEXP)
+
+/* All of the expansions except variable assignments at the start of
+   the list. */
+#define WEXP_NOVARS    (WEXP_BRACEEXP|WEXP_TILDEEXP|WEXP_PARAMEXP|WEXP_PATHEXP)
+
+/* All of the `shell expansions': brace expansion, tilde expansion, parameter
+   expansion, command substitution, arithmetic expansion, word splitting, and
+   quote removal. */
+#define WEXP_SHELLEXP  (WEXP_BRACEEXP|WEXP_TILDEEXP|WEXP_PARAMEXP)
+
+/* Take the list of words in LIST and do the various substitutions.  Return
+   a new list of words which is the expanded list, and without things like
+   variable assignments. */
+
+WORD_LIST *
+expand_words (list)
+     WORD_LIST *list;
+{
+  return (expand_word_list_internal (list, WEXP_ALL));
+}
+
+/* Same as expand_words (), but doesn't hack variable or environment
+   variables. */
+WORD_LIST *
+expand_words_no_vars (list)
+     WORD_LIST *list;
+{
+  return (expand_word_list_internal (list, WEXP_NOVARS));
+}
+
+WORD_LIST *
+expand_words_shellexp (list)
+     WORD_LIST *list;
+{
+  return (expand_word_list_internal (list, WEXP_SHELLEXP));
+}
+
+static WORD_LIST *
+glob_expand_word_list (tlist, eflags)
+     WORD_LIST *tlist;
+     int eflags;
+{
+  char **glob_array, *temp_string;
+  register int glob_index;
+  WORD_LIST *glob_list, *output_list, *disposables, *next;
+  WORD_DESC *tword;
+
+  output_list = disposables = (WORD_LIST *)NULL;
+  glob_array = (char **)NULL;
+  while (tlist)
+    {
+      /* For each word, either globbing is attempted or the word is
+        added to orig_list.  If globbing succeeds, the results are
+        added to orig_list and the word (tlist) is added to the list
+        of disposable words.  If globbing fails and failed glob
+        expansions are left unchanged (the shell default), the
+        original word is added to orig_list.  If globbing fails and
+        failed glob expansions are removed, the original word is
+        added to the list of disposable words.  orig_list ends up
+        in reverse order and requires a call to REVERSE_LIST to
+        be set right.  After all words are examined, the disposable
+        words are freed. */
+      next = tlist->next;
+
+      /* If the word isn't an assignment and contains an unquoted
+        pattern matching character, then glob it. */
+      if ((tlist->word->flags & W_NOGLOB) == 0 &&
+         unquoted_glob_pattern_p (tlist->word->word))
+       {
+         glob_array = shell_glob_filename (tlist->word->word);
+
+         /* Handle error cases.
+            I don't think we should report errors like "No such file
+            or directory".  However, I would like to report errors
+            like "Read failed". */
+
+         if (glob_array == 0 || GLOB_FAILED (glob_array))
+           {
+             glob_array = (char **)xmalloc (sizeof (char *));
+             glob_array[0] = (char *)NULL;
+           }
+
+         /* Dequote the current word in case we have to use it. */
+         if (glob_array[0] == NULL)
+           {
+             temp_string = dequote_string (tlist->word->word);
+             free (tlist->word->word);
+             tlist->word->word = temp_string;
+           }
+
+         /* Make the array into a word list. */
+         glob_list = (WORD_LIST *)NULL;
+         for (glob_index = 0; glob_array[glob_index]; glob_index++)
+           {
+             tword = make_bare_word (glob_array[glob_index]);
+             tword->flags |= W_GLOBEXP;        /* XXX */
+             glob_list = make_word_list (tword, glob_list);
+           }
+
+         if (glob_list)
+           {
+             output_list = (WORD_LIST *)list_append (glob_list, output_list);
+             PREPEND_LIST (tlist, disposables);
+           }
+         else if (fail_glob_expansion != 0)
+           {
+             report_error (_("no match: %s"), tlist->word->word);
+             jump_to_top_level (DISCARD);
+           }
+         else if (allow_null_glob_expansion == 0)
+           {
+             /* Failed glob expressions are left unchanged. */
+             PREPEND_LIST (tlist, output_list);
+           }
+         else
+           {
+             /* Failed glob expressions are removed. */
+             PREPEND_LIST (tlist, disposables);
+           }
+       }
+      else
+       {
+         /* Dequote the string. */
+         temp_string = dequote_string (tlist->word->word);
+         free (tlist->word->word);
+         tlist->word->word = temp_string;
+         PREPEND_LIST (tlist, output_list);
+       }
+
+      strvec_dispose (glob_array);
+      glob_array = (char **)NULL;
+
+      tlist = next;
+    }
+
+  if (disposables)
+    dispose_words (disposables);
+
+  if (output_list)
+    output_list = REVERSE_LIST (output_list, WORD_LIST *);
+
+  return (output_list);
+}
+
+#if defined (BRACE_EXPANSION)
+static WORD_LIST *
+brace_expand_word_list (tlist, eflags)
+     WORD_LIST *tlist;
+     int eflags;
+{
+  register char **expansions;
+  char *temp_string;
+  WORD_LIST *disposables, *output_list, *next;
+  WORD_DESC *w;
+  int eindex;
+
+  for (disposables = output_list = (WORD_LIST *)NULL; tlist; tlist = next)
+    {
+      next = tlist->next;
+
+      /* Only do brace expansion if the word has a brace character.  If
+        not, just add the word list element to BRACES and continue.  In
+        the common case, at least when running shell scripts, this will
+        degenerate to a bunch of calls to `xstrchr', and then what is
+        basically a reversal of TLIST into BRACES, which is corrected
+        by a call to REVERSE_LIST () on BRACES when the end of TLIST
+        is reached. */
+      if (xstrchr (tlist->word->word, LBRACE))
+       {
+         expansions = brace_expand (tlist->word->word);
+
+         for (eindex = 0; temp_string = expansions[eindex]; eindex++)
+           {
+             w = make_word (temp_string);
+             /* If brace expansion didn't change the word, preserve
+                the flags.  We may want to preserve the flags
+                unconditionally someday -- XXX */
+             if (STREQ (temp_string, tlist->word->word))
+               w->flags = tlist->word->flags;
+             output_list = make_word_list (w, output_list);
+             free (expansions[eindex]);
+           }
+         free (expansions);
+
+         /* Add TLIST to the list of words to be freed after brace
+            expansion has been performed. */
+         PREPEND_LIST (tlist, disposables);
+       }
+      else
+       PREPEND_LIST (tlist, output_list);
+    }
+
+  if (disposables)
+    dispose_words (disposables);
+
+  if (output_list)
+    output_list = REVERSE_LIST (output_list, WORD_LIST *);
+
+  return (output_list);
+}
+#endif
+
+static WORD_LIST *
+shell_expand_word_list (tlist, eflags)
+     WORD_LIST *tlist;
+     int eflags;
+{
+  WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list;
+  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 (orig_list = tlist; tlist; tlist = next)
+    {
+      temp_string = tlist->word->word;
+
+      next = tlist->next;
+
+      /* Posix.2 section 3.6.1 says that tildes following `=' in words
+        which are not assignment statements are not expanded.  If the
+        shell isn't in posix mode, though, we perform tilde expansion
+        on `likely candidate' unquoted assignment statements (flags
+        include W_ASSIGNMENT but not W_QUOTED).  A likely candidate
+        contains an unquoted :~ or =~.  Something to think about: we
+        now have a flag that says  to perform tilde expansion on arguments
+        to `assignment builtins' like declare and export that look like
+        assignment statements.  We now do tilde expansion on such words
+        even in POSIX mode. */
+      if (((tlist->word->flags & (W_ASSIGNMENT|W_QUOTED)) == W_ASSIGNMENT) &&
+            (posixly_correct == 0 || (tlist->word->flags & W_TILDEEXP)) &&
+            (unquoted_substring ("=~", temp_string) || unquoted_substring (":~", temp_string)))
+       {
+         tlist->word->word = bash_tilde_expand (temp_string, 1);
+         free (temp_string);
+       }
+      else if (temp_string[0] == '~')
+       {
+         tlist->word->word = bash_tilde_expand (temp_string, 0);
+         free (temp_string);
+       }
+
+      expanded_something = 0;
+      expanded = expand_word_internal
+       (tlist->word, 0, 0, &has_dollar_at, &expanded_something);
+
+      if (expanded == &expand_word_error || expanded == &expand_word_fatal)
+       {
+         /* By convention, each time this error is returned,
+            tlist->word->word has already been freed. */
+         tlist->word->word = (char *)NULL;
+
+         /* Dispose our copy of the original list. */
+         dispose_words (orig_list);
+         /* Dispose the new list we're building. */
+         dispose_words (new_list);
+
+         last_command_exit_value = EXECUTION_FAILURE;
+         if (expanded == &expand_word_error)
+           exp_jump_to_top_level (DISCARD);
+         else
+           exp_jump_to_top_level (FORCE_EOF);
+       }
+
+      /* Don't split words marked W_NOSPLIT. */
+      if (expanded_something && (tlist->word->flags & W_NOSPLIT) == 0)
+       {
+         temp_list = word_list_split (expanded);
+         dispose_words (expanded);
+       }
+      else
+       {
+         /* If no parameter expansion, command substitution, process
+            substitution, or arithmetic substitution took place, then
+            do not do word splitting.  We still have to remove quoted
+            null characters from the result. */
+         word_list_remove_quoted_nulls (expanded);
+         temp_list = expanded;
+       }
+
+      expanded = REVERSE_LIST (temp_list, WORD_LIST *);
+      new_list = (WORD_LIST *)list_append (expanded, new_list);
+    }
+
+  if (orig_list)  
+    dispose_words (orig_list);
+
+  if (new_list)
+    new_list = REVERSE_LIST (new_list, WORD_LIST *);
+
+  return (new_list);
+}
+
+/* The workhorse for expand_words () and expand_words_no_vars ().
+   First arg is LIST, a WORD_LIST of words.
+   Second arg EFLAGS is a flags word controlling which expansions are
+   performed.
+
+   This does all of the substitutions: brace expansion, tilde expansion,
+   parameter expansion, command substitution, arithmetic expansion,
+   process substitution, word splitting, and pathname expansion, according
+   to the bits set in EFLAGS.  Words with the W_QUOTED or W_NOSPLIT bits
+   set, or for which no expansion is done, do not undergo word splitting.
+   Words with the W_NOGLOB bit set do not undergo pathname expansion. */
+static WORD_LIST *
+expand_word_list_internal (list, eflags)
+     WORD_LIST *list;
+     int eflags;
+{
+  WORD_LIST *new_list, *temp_list;
+  int tint;
+
+  if (list == 0)
+    return ((WORD_LIST *)NULL);
+
+  garglist = new_list = copy_word_list (list);
+  if (eflags & WEXP_VARASSIGN)
+    {
+      garglist = new_list = separate_out_assignments (new_list);
+      if (new_list == 0)
+       {
+         if (subst_assign_varlist)
+           {
+             /* All the words were variable assignments, so they are placed
+                into the shell's environment. */
+             for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next)
+               {
+                 this_command_name = (char *)NULL;     /* no arithmetic errors */
+                 tint = do_assignment (temp_list->word->word);
+                 /* Variable assignment errors in non-interactive shells
+                    running in Posix.2 mode cause the shell to exit. */
+                 if (tint == 0)
+                   {
+                     last_command_exit_value = EXECUTION_FAILURE;
+                     if (interactive_shell == 0 && posixly_correct)
+                       exp_jump_to_top_level (FORCE_EOF);
+                     else
+                       exp_jump_to_top_level (DISCARD);
+                   }
+               }
+             dispose_words (subst_assign_varlist);
+             subst_assign_varlist = (WORD_LIST *)NULL;
+           }
+         return ((WORD_LIST *)NULL);
+       }
+    }
+
+  /* Begin expanding the words that remain.  The expansions take place on
+     things that aren't really variable assignments. */
+
+#if defined (BRACE_EXPANSION)
+  /* Do brace expansion on this word if there are any brace characters
+     in the string. */
+  if ((eflags & WEXP_BRACEEXP) && brace_expansion && new_list)
+    new_list = brace_expand_word_list (new_list, eflags);
+#endif /* BRACE_EXPANSION */
+
+  /* Perform the `normal' shell expansions: tilde expansion, parameter and
+     variable substitution, command substitution, arithmetic expansion,
+     and word splitting. */
+  new_list = shell_expand_word_list (new_list, eflags);
+
+  /* Okay, we're almost done.  Now let's just do some filename
+     globbing. */
+  if (new_list)
+    {
+      if ((eflags & WEXP_PATHEXP) && disallow_filename_globbing == 0)
+       /* Glob expand the word list unless globbing has been disabled. */
+       new_list = glob_expand_word_list (new_list, eflags);
+      else
+       /* Dequote the words, because we're not performing globbing. */
+       new_list = dequote_list (new_list);
+    }
+
+  if ((eflags & WEXP_VARASSIGN) && subst_assign_varlist)
+    {
+      sh_assign_func_t *assign_func;
+
+      /* If the remainder of the words expand to nothing, Posix.2 requires
+        that the variable and environment assignments affect the shell's
+        environment. */
+      assign_func = new_list ? assign_in_env : do_assignment;
+
+      for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next)
+       {
+         this_command_name = (char *)NULL;
+         tint = (*assign_func) (temp_list->word->word);
+         /* Variable assignment errors in non-interactive shells running
+            in Posix.2 mode cause the shell to exit. */
+         if (tint == 0 && assign_func == do_assignment)
+           {
+             last_command_exit_value = EXECUTION_FAILURE;
+             if (interactive_shell == 0 && posixly_correct)
+               exp_jump_to_top_level (FORCE_EOF);
+             else
+               exp_jump_to_top_level (DISCARD);
+           }
+       }
+
+      dispose_words (subst_assign_varlist);
+      subst_assign_varlist = (WORD_LIST *)NULL;
+    }
+
+#if 0
+  tint = list_length (new_list) + 1;
+  RESIZE_MALLOCED_BUFFER (glob_argv_flags, 0, tint, glob_argv_flags_size, 16);
+  for (tint = 0, temp_list = new_list; temp_list; temp_list = temp_list->next)
+    glob_argv_flags[tint++] = (temp_list->word->flags & W_GLOBEXP) ? '1' : '0';
+  glob_argv_flags[tint] = '\0';
+#endif
+
+  return (new_list);
+}
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/tests/? b/tests/?
deleted file mode 100644 (file)
index 857f13a..0000000
--- a/tests/?
+++ /dev/null
@@ -1 +0,0 @@
-$
diff --git a/tests/cprint.right.save1 b/tests/cprint.right.save1
new file mode 100644 (file)
index 0000000..6b711b8
--- /dev/null
@@ -0,0 +1,72 @@
+tf is a function
+tf () 
+{ 
+    echo this is ${0##*/} >/dev/null;
+    echo a | cat - >/dev/null;
+    test -f ${0##*/} && echo ${0##*/} is a regular file;
+    test -d ${0##*/} || echo ${0##*/} is not a directory;
+    echo a;
+    echo b;
+    echo c;
+    echo background >/dev/null & ( exit 1 );
+    echo $?;
+    { 
+        echo a
+    };
+    i=0;
+    while (( " i < 3 " )); do
+        test -r /dev/fd/$i;
+        i=$(( i + 1 ));
+    done;
+    [[ -r /dev/fd/0 && -w /dev/fd/1 ]] || echo oops >/dev/null;
+    for name in $( echo 1 2 3 );
+    do
+        test -r /dev/fd/$name;
+    done;
+    if [[ -r /dev/fd/0 && -w /dev/fd/1 ]]; then
+        echo ok >/dev/null;
+    else
+        if (( " 7 > 40 " )); then
+            echo oops;
+        else
+            echo done;
+        fi;
+    fi >/dev/null;
+    case $PATH in 
+        *$PWD*)
+            echo \$PWD in \$PATH
+        ;;
+        *)
+            echo \$PWD not in \$PATH
+        ;;
+    esac >/dev/null;
+    while false; do
+        echo z;
+    done >/dev/null;
+    until true; do
+        echo z;
+    done >/dev/null;
+    echo \&\|'()' \{ echo abcde \; \};
+    eval fu\%nc'()' \{ echo abcde \; \};
+    type fu\%nc
+}
+tf2 is a function
+tf2 () 
+{ 
+    ( { 
+        time -p echo a | cat - >/dev/null
+    } ) 2>&1
+}
+cprint.tests is a regular file
+cprint.tests is not a directory
+a
+b
+c
+1
+a
+&|() { echo abcde ; }
+fu%nc is a function
+fu%nc () 
+{ 
+    echo abcde
+}
diff --git a/tests/history.tests.save b/tests/history.tests.save
new file mode 100644 (file)
index 0000000..4a218c3
--- /dev/null
@@ -0,0 +1,97 @@
+trap 'rm /tmp/newhistory' 0
+
+# bad options
+history -x
+# cannot use -r and -w at the same time
+history -r -w /dev/null
+
+# bad option
+fc -v
+
+# all of these should result in an empty history list
+history -c
+history -r /dev/null
+history -n /dev/null
+history -c
+
+HISTFILE=history.list
+HISTCONTROL=ignoreboth
+HISTIGNORE='&:history*:fc*'
+HISTSIZE=32
+
+shopt -s cmdhist
+set -o history
+
+history
+
+fc -l
+fc -nl
+
+fc -lr
+fc -nlr
+
+history -s "echo line for history"
+history
+
+history -p '!!'
+
+fc -nl
+
+HISTFILE=/tmp/newhistory
+history -a
+echo displaying \$HISTFILE after history -a
+cat $HISTFILE
+
+history
+history -w
+cat $HISTFILE
+
+history -s "echo line 2 for history"
+history
+history -p '!e'
+history -p '!!'
+
+# this should show up as one history entry
+for x in one two three
+do
+       :
+done
+history
+
+# just a basic test.  a full test suite for history expansion should be
+# created
+set -H
+!!
+!e
+
+unset HISTSIZE
+unset HISTFILE
+
+fc -l 4
+fc -l 4 8
+
+fc -l 502
+fc -l one=two three=four 502
+
+history 4
+
+shopt -so history
+shopt -s expand_aliases
+
+alias r="fc -s"
+
+echo aa ab ac
+
+r a=x
+r x=4 b=8
+
+# this had better fail with `no command found'
+r cc
+
+unalias -a
+alias
+
+set +o history
+
+shopt -q -o history
+echo $?
diff --git a/tests/misc/regress/log.orig b/tests/misc/regress/log.orig
new file mode 100644 (file)
index 0000000..c1f1e19
--- /dev/null
@@ -0,0 +1,50 @@
+:; ./shx
+
+sh:
+<&$fd  ok
+nlbq   Mon Aug  3 02:45:00 EDT 1992
+bang   geoff
+quote  712824302
+setbq  defmsgid=<1992Aug3.024502.6176@host>
+bgwait sleep done... wait 6187
+
+
+bash:
+<&$fd  ok
+nlbq   Mon Aug  3 02:45:09 EDT 1992
+bang   geoff
+quote  712824311
+setbq  defmsgid=<1992Aug3.024512.6212@host>
+bgwait sleep done... wait 6223
+
+
+ash:
+<&$fd  shx1: 4: Syntax error: Bad fd number
+nlbq   Mon Aug  3 02:45:19 EDT 1992
+bang   geoff
+quote  getdate: `"now"' not a valid date
+
+setbq  defmsgid=<1992Aug3.` echo 024521
+bgwait sleep done... wait 6241
+
+
+ksh:
+<&$fd  ok
+nlbq   ./shx: 6248 Memory fault - core dumped
+bang   geoff
+quote  getdate: `"now"' not a valid date
+
+setbq  defmsgid=<1992Aug3.024530.6257@host>
+bgwait no such job: 6265
+wait 6265
+sleep done... 
+
+zsh:
+<&$fd  ok
+nlbq   Mon Aug 3 02:45:36 EDT 1992
+bang   shx3: event not found: /s/ [4]
+quote  712824337
+setbq  defmsgid=<..6290@host>
+bgwait shx7: unmatched " [9]
+sleep done... 
+:; 
diff --git a/tests/misc/regress/shx.orig b/tests/misc/regress/shx.orig
new file mode 100644 (file)
index 0000000..4b3bf2b
--- /dev/null
@@ -0,0 +1,10 @@
+#! /bin/sh
+for cmd in sh bash ash ksh zsh
+do
+       echo
+       echo $cmd:
+       for demo in shx?
+       do
+               $cmd $demo
+       done
+done
diff --git a/tests/run-histexpand.debug b/tests/run-histexpand.debug
new file mode 100644 (file)
index 0000000..16b325f
--- /dev/null
@@ -0,0 +1,4 @@
+echo "warning: all of these tests will fail if history has not been compiled" >&2
+echo "warning: into the shell" >&2
+${THIS_SH} +o histexpand ./histexp.tests > /tmp/xx 2>&1
+diff /tmp/xx histexp.right && rm -f /tmp/xx